Files
5chan/src/hooks/use-default-subplebbits.ts
T

42 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-03-01 20:42:21 +01:00
import { useEffect, useMemo, useState } from 'react';
2024-05-04 16:56:49 +02:00
export interface MultisubSubplebbit {
2024-03-01 20:42:21 +01:00
title?: string;
address: string;
tags?: string[];
features?: string[];
}
2024-05-04 16:56:49 +02:00
let cache: MultisubSubplebbit[] | null = null;
2024-03-01 20:42:21 +01:00
const useDefaultSubplebbits = () => {
2024-05-04 16:56:49 +02:00
const [subplebbits, setSubplebbits] = useState<MultisubSubplebbit[]>([]);
2024-03-01 20:42:21 +01:00
useEffect(() => {
if (cache) {
return;
}
(async () => {
try {
const multisub = await fetch(
'https://raw.githubusercontent.com/plebbit/temporary-default-subplebbits/master/multisub.json',
// { cache: 'no-cache' }
).then((res) => res.json());
cache = multisub.subplebbits;
setSubplebbits(multisub.subplebbits);
} catch (e) {
console.warn(e);
}
})();
}, []);
return cache || subplebbits;
};
export const useDefaultSubplebbitAddresses = () => {
const defaultSubplebbits = useDefaultSubplebbits();
2024-05-04 16:56:49 +02:00
return useMemo(() => defaultSubplebbits.map((subplebbit: MultisubSubplebbit) => subplebbit.address), [defaultSubplebbits]);
2024-03-01 20:42:21 +01:00
};
export default useDefaultSubplebbits;