From ea11cb4f6e1f214e086e14e61bb050deee410bbd Mon Sep 17 00:00:00 2001 From: "Tom (plebeius.eth)" Date: Fri, 28 Feb 2025 22:42:48 +0100 Subject: [PATCH] implement MultisubSubplebbit.lowUptime --- src/hooks/use-default-subplebbits-tags.ts | 15 ------------- src/hooks/use-default-subplebbits.ts | 25 ++++++++++++++++++---- src/views/home/boards-list/boards-list.tsx | 3 +-- 3 files changed, 22 insertions(+), 21 deletions(-) delete mode 100644 src/hooks/use-default-subplebbits-tags.ts diff --git a/src/hooks/use-default-subplebbits-tags.ts b/src/hooks/use-default-subplebbits-tags.ts deleted file mode 100644 index 4d8b5fb8..00000000 --- a/src/hooks/use-default-subplebbits-tags.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { useMemo } from 'react'; - -const getUniqueTags = (multisub: any) => { - const allTags = new Set(); - Object.values(multisub).forEach((sub: any) => { - if (sub?.tags?.length) { - sub.tags.forEach((tag: string) => allTags.add(tag)); - } - }); - return Array.from(allTags).sort(); -}; - -export const useDefaultSubplebbitTags = (subplebbits: any) => { - return useMemo(() => getUniqueTags(subplebbits), [subplebbits]); -}; diff --git a/src/hooks/use-default-subplebbits.ts b/src/hooks/use-default-subplebbits.ts index 083ca119..0bb38870 100644 --- a/src/hooks/use-default-subplebbits.ts +++ b/src/hooks/use-default-subplebbits.ts @@ -13,6 +13,7 @@ export interface MultisubSubplebbit { tags?: string[]; features?: string[]; plebchanAutoSubscribe?: boolean; + lowUptime?: boolean; } export interface DefaultSubplebbitsState { @@ -51,15 +52,17 @@ export const useDefaultSubplebbits = () => { return res.json(); }); - cacheSubplebbits = multisub.subplebbits; + const filteredSubplebbits = multisub.subplebbits.filter((sub: MultisubSubplebbit) => !sub.lowUptime); + + cacheSubplebbits = filteredSubplebbits; // Cache auto-subscribe addresses when we fetch subplebbits - cacheAutoSubscribeAddresses = multisub.subplebbits + cacheAutoSubscribeAddresses = filteredSubplebbits .filter((sub: MultisubSubplebbit) => sub.plebchanAutoSubscribe && sub.address) .map((sub: MultisubSubplebbit) => sub.address); setState({ - subplebbits: multisub.subplebbits, + subplebbits: filteredSubplebbits, loading: false, error: null, }); @@ -78,6 +81,8 @@ export const useDefaultSubplebbits = () => { return cacheSubplebbits || state.subplebbits; }; +export const getAutoSubscribeAddresses = () => cacheAutoSubscribeAddresses || []; + export const useDefaultSubplebbitsState = () => { const [state, setState] = useState({ subplebbits: cacheSubplebbits || [], @@ -154,4 +159,16 @@ export const useMultisubMetadata = () => { return cacheMetadata || metadata; }; -export const getAutoSubscribeAddresses = () => cacheAutoSubscribeAddresses || []; +const getUniqueTags = (multisub: any) => { + const allTags = new Set(); + Object.values(multisub).forEach((sub: any) => { + if (sub?.tags?.length) { + sub.tags.forEach((tag: string) => allTags.add(tag)); + } + }); + return Array.from(allTags).sort(); +}; + +export const useDefaultSubplebbitTags = (subplebbits: any) => { + return useMemo(() => getUniqueTags(subplebbits), [subplebbits]); +}; diff --git a/src/views/home/boards-list/boards-list.tsx b/src/views/home/boards-list/boards-list.tsx index 5c162e34..fddec3c9 100644 --- a/src/views/home/boards-list/boards-list.tsx +++ b/src/views/home/boards-list/boards-list.tsx @@ -3,8 +3,7 @@ import { Link, useLocation } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js'; import { Subplebbit, useSubplebbit, useSubplebbitStats } from '@plebbit/plebbit-react-hooks'; -import { useDefaultSubplebbitsState } from '../../../hooks/use-default-subplebbits'; -import { useDefaultSubplebbitTags } from '../../../hooks/use-default-subplebbits-tags'; +import { useDefaultSubplebbitsState, useDefaultSubplebbitTags } from '../../../hooks/use-default-subplebbits'; import useIsMobile from '../../../hooks/use-is-mobile'; import useIsSubplebbitOffline from '../../../hooks/use-is-subplebbit-offline'; import LoadingEllipsis from '../../../components/loading-ellipsis';