mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
feat(p/all): use multisub title, description and createdAt in mock description and board header
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user