wip
This commit is contained in:
@@ -1,31 +1,40 @@
|
||||
import { createNote, getNoteByID } from "@libs/storage";
|
||||
import { RelayContext } from "@shared/relayProvider";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { parser } from "@utils/parser";
|
||||
import { useContext } from "react";
|
||||
import useSWR from "swr";
|
||||
|
||||
const fetcher = async ([, ndk, id]) => {
|
||||
const result = await getNoteByID(id);
|
||||
|
||||
if (result) {
|
||||
return result;
|
||||
} else {
|
||||
const event = await ndk.fetchEvent(id);
|
||||
await createNote(
|
||||
event.id,
|
||||
event.pubkey,
|
||||
event.kind,
|
||||
event.tags,
|
||||
event.content,
|
||||
event.created_at,
|
||||
);
|
||||
event["event_id"] = event.id;
|
||||
return event;
|
||||
}
|
||||
};
|
||||
|
||||
export function useEvent(id: string) {
|
||||
const ndk = useContext(RelayContext);
|
||||
const { data } = useSWR(["note", ndk, id], fetcher);
|
||||
const { status, data, error, isFetching } = useQuery(
|
||||
["note", id],
|
||||
async () => {
|
||||
const result = await getNoteByID(id);
|
||||
if (result) {
|
||||
result["content"] = parser(result);
|
||||
return result;
|
||||
} else {
|
||||
const event = await ndk.fetchEvent(id);
|
||||
await createNote(
|
||||
event.id,
|
||||
event.pubkey,
|
||||
event.kind,
|
||||
event.tags,
|
||||
event.content,
|
||||
event.created_at,
|
||||
);
|
||||
event["event_id"] = event.id;
|
||||
// @ts-ignore
|
||||
event["content"] = parser(event);
|
||||
return event;
|
||||
}
|
||||
},
|
||||
{
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnMount: false,
|
||||
refetchOnReconnect: false,
|
||||
},
|
||||
);
|
||||
|
||||
return data;
|
||||
return { status, data, error, isFetching };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user