feat(p/all): use multisub title, description and createdAt in mock description and board header

This commit is contained in:
plebeius.eth
2024-05-17 14:55:41 +02:00
parent 86223bb249
commit 11d1424c0a
4 changed files with 70 additions and 14 deletions
+38 -4
View File
@@ -1,5 +1,12 @@
import { useEffect, useMemo, useState } from 'react';
export interface MultisubMetadata {
title: string;
description: string;
createdAt: number;
updatedAt: number;
}
export interface MultisubSubplebbit {
title?: string;
address: string;
@@ -7,13 +14,14 @@ export interface MultisubSubplebbit {
features?: string[];
}
let cache: MultisubSubplebbit[] | null = null;
let cacheSubplebbits: MultisubSubplebbit[] | null = null;
let cacheMetadata: MultisubMetadata | null = null;
const useDefaultSubplebbits = () => {
const [subplebbits, setSubplebbits] = useState<MultisubSubplebbit[]>([]);
useEffect(() => {
if (cache) {
if (cacheSubplebbits) {
return;
}
(async () => {
@@ -22,7 +30,7 @@ const useDefaultSubplebbits = () => {
'https://raw.githubusercontent.com/plebbit/temporary-default-subplebbits/master/multisub.json',
// { cache: 'no-cache' }
).then((res) => res.json());
cache = multisub.subplebbits;
cacheSubplebbits = multisub.subplebbits;
setSubplebbits(multisub.subplebbits);
} catch (e) {
console.warn(e);
@@ -30,7 +38,7 @@ const useDefaultSubplebbits = () => {
})();
}, []);
return cache || subplebbits;
return cacheSubplebbits || subplebbits;
};
export const useDefaultSubplebbitAddresses = () => {
@@ -38,4 +46,30 @@ export const useDefaultSubplebbitAddresses = () => {
return useMemo(() => defaultSubplebbits.map((subplebbit: MultisubSubplebbit) => subplebbit.address), [defaultSubplebbits]);
};
export const useMultisubMetadata = () => {
const [metadata, setMetadata] = useState<MultisubMetadata | null>(null);
useEffect(() => {
if (cacheMetadata) {
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());
const { title, description, createdAt, updatedAt } = multisub;
const metadata: MultisubMetadata = { title, description, createdAt, updatedAt };
cacheMetadata = metadata;
setMetadata(metadata);
} catch (e) {
console.warn(e);
}
})();
}, []);
return cacheMetadata || metadata;
};
export default useDefaultSubplebbits;