refactor(multiboards): remove time filter system end-to-end

Backend retention now keeps only recent posts, making the time filter UI
and newerThan filtering obsolete. Deleted use-time-filter hook, canonical
multiboard routes only, removed footer suggestions, dropped i18n keys.
This commit is contained in:
plebeius
2026-02-22 15:57:42 +08:00
parent f521bdbe33
commit 8e6d81ba59
46 changed files with 84 additions and 811 deletions
+21 -6
View File
@@ -1,15 +1,11 @@
import { describe, it, expect } from 'vitest';
import { normalizeMultiboardFeedPath } from '../route-utils';
import { isFeedRoute, normalizeMultiboardFeedPath } from '../route-utils';
describe('normalizeMultiboardFeedPath', () => {
it('normalizes /all/3 -> /all', () => {
expect(normalizeMultiboardFeedPath('/all/3')).toBe('/all');
});
it('normalizes /all/1w/3 -> /all/1w', () => {
expect(normalizeMultiboardFeedPath('/all/1w/3')).toBe('/all/1w');
});
it('normalizes /subs/2/settings -> /subs/settings', () => {
expect(normalizeMultiboardFeedPath('/subs/2/settings')).toBe('/subs/settings');
});
@@ -21,9 +17,28 @@ describe('normalizeMultiboardFeedPath', () => {
it('leaves non-multiboard paths unchanged', () => {
expect(normalizeMultiboardFeedPath('/biz')).toBe('/biz');
expect(normalizeMultiboardFeedPath('/biz/3')).toBe('/biz/3');
expect(normalizeMultiboardFeedPath('/biz/1w/2')).toBe('/biz/1w/2');
expect(normalizeMultiboardFeedPath('/biz/catalog/4')).toBe('/biz/catalog/4');
expect(normalizeMultiboardFeedPath('/pending/0')).toBe('/pending/0');
expect(normalizeMultiboardFeedPath('/')).toBe('/');
});
});
describe('isFeedRoute', () => {
it('returns true for canonical multiboard paths', () => {
expect(isFeedRoute('/all')).toBe(true);
expect(isFeedRoute('/all/catalog')).toBe(true);
expect(isFeedRoute('/subs')).toBe(true);
expect(isFeedRoute('/subs/catalog')).toBe(true);
expect(isFeedRoute('/mod')).toBe(true);
expect(isFeedRoute('/mod/catalog')).toBe(true);
expect(isFeedRoute('/all/3')).toBe(true);
expect(isFeedRoute('/subs/2')).toBe(true);
expect(isFeedRoute('/mod/catalog/4')).toBe(true);
});
it('returns false for time-filter paths', () => {
expect(isFeedRoute('/all/24h')).toBe(false);
expect(isFeedRoute('/subs/catalog/1w')).toBe(false);
expect(isFeedRoute('/all/1w/3')).toBe(false);
});
});