move filters to interface settings, enable for all feeds

This commit is contained in:
Tom (plebeius.eth)
2024-09-12 21:22:22 +02:00
parent f9c82bccfd
commit 664a33482f
7 changed files with 101 additions and 89 deletions
+19 -27
View File
@@ -9,10 +9,6 @@ interface FilterItem {
}
interface CatalogFiltersStore {
showAdultBoards: boolean;
setShowAdultBoards: (value: boolean) => void;
showGoreBoards: boolean;
setShowGoreBoards: (value: boolean) => void;
showTextOnlyThreads: boolean;
setShowTextOnlyThreads: (value: boolean) => void;
filterText: string;
@@ -35,10 +31,6 @@ const useCatalogFiltersStore = create(
set({ showTextOnlyThreads: value, filteredCount: 0 });
get().updateFilter();
},
showAdultBoards: false,
setShowAdultBoards: (value: boolean) => set({ showAdultBoards: value }),
showGoreBoards: false,
setShowGoreBoards: (value: boolean) => set({ showGoreBoards: value }),
filterText: '',
setFilterText: (value: string) => set({ filterText: value }),
filterItems: [],
@@ -58,28 +50,28 @@ const useCatalogFiltersStore = create(
filter: (comment: Comment) => {
const { showTextOnlyThreads, filterItems } = state;
const shouldShow = (() => {
if (!showTextOnlyThreads && !getHasThumbnail(getCommentMediaInfo(comment), comment?.link)) {
return false;
const hasThumbnail = getHasThumbnail(getCommentMediaInfo(comment), comment?.link);
const title = comment?.title?.toLowerCase() || '';
const content = comment?.content?.toLowerCase() || '';
const matchesFilterItems = filterItems
.filter((item) => item.enabled)
.some((item) => {
const text = item.text.toLowerCase();
return title.includes(text) || content.includes(text);
});
const shouldShow = showTextOnlyThreads || hasThumbnail;
if (!shouldShow || matchesFilterItems) {
if (matchesFilterItems && !filteredCids.has(comment.cid)) {
filteredCids.add(comment.cid);
set((state) => ({ filteredCount: state.filteredCount + 1 }));
}
const title = comment?.title?.toLowerCase() || '';
const content = comment?.content?.toLowerCase() || '';
return !filterItems
.filter((item) => item.enabled)
.some((item) => {
const text = item.text.toLowerCase();
return title.includes(text) || content.includes(text);
});
})();
if (!shouldShow && !filteredCids.has(comment.cid)) {
filteredCids.add(comment.cid);
set((state) => ({ filteredCount: state.filteredCount + 1 }));
return false;
}
return shouldShow;
return true;
},
}));
},
@@ -0,0 +1,29 @@
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
interface InterfaceSettingsStore {
hideGoreBoards: boolean;
setHideGoreBoards: (value: boolean) => void;
hideAdultBoards: boolean;
setHideAdultBoards: (value: boolean) => void;
hideThreadsWithoutImages: boolean;
setHideThreadsWithoutImages: (value: boolean) => void;
}
const useInterfaceSettingsStore = create(
persist<InterfaceSettingsStore>(
(set) => ({
hideGoreBoards: true,
setHideGoreBoards: (value: boolean) => set({ hideGoreBoards: value }),
hideAdultBoards: true,
setHideAdultBoards: (value: boolean) => set({ hideAdultBoards: value }),
hideThreadsWithoutImages: true,
setHideThreadsWithoutImages: (value: boolean) => set({ hideThreadsWithoutImages: value }),
}),
{
name: 'interface-settings-storage',
},
),
);
export default useInterfaceSettingsStore;