fix small errors

This commit is contained in:
Ren Amamiya 2023-07-22 17:35:04 +07:00
parent 20a8ce9cba
commit 6d20f84489
9 changed files with 124 additions and 135 deletions

View File

@ -21,8 +21,8 @@
"@nostr-fetch/adapter-ndk": "^0.11.0",
"@radix-ui/react-popover": "^1.0.6",
"@radix-ui/react-tooltip": "^1.0.6",
"@tanstack/react-query": "^4.30.0",
"@tanstack/react-query-devtools": "^4.30.0",
"@tanstack/react-query": "^4.32.0",
"@tanstack/react-query-devtools": "^4.32.0",
"@tanstack/react-virtual": "3.0.0-beta.54",
"@tauri-apps/api": "^1.4.0",
"@tiptap/extension-image": "^2.0.4",
@ -64,7 +64,7 @@
"@tailwindcss/typography": "^0.5.9",
"@tauri-apps/cli": "^1.4.0",
"@trivago/prettier-plugin-sort-imports": "^4.2.0",
"@types/node": "^18.16.19",
"@types/node": "^18.16.20",
"@types/react": "^18.2.15",
"@types/react-dom": "^18.2.7",
"@types/youtube-player": "^5.5.7",
@ -82,7 +82,7 @@
"eslint-plugin-simple-import-sort": "^10.0.0",
"husky": "^8.0.3",
"lint-staged": "^13.2.3",
"postcss": "^8.4.26",
"postcss": "^8.4.27",
"prettier": "^2.8.8",
"prettier-plugin-tailwindcss": "^0.3.0",
"prop-types": "^15.8.1",

View File

@ -17,11 +17,11 @@ dependencies:
specifier: ^1.0.6
version: 1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)
'@tanstack/react-query':
specifier: ^4.30.0
version: 4.30.0(react-dom@18.2.0)(react@18.2.0)
specifier: ^4.32.0
version: 4.32.0(react-dom@18.2.0)(react@18.2.0)
'@tanstack/react-query-devtools':
specifier: ^4.30.0
version: 4.30.0(@tanstack/react-query@4.30.0)(react-dom@18.2.0)(react@18.2.0)
specifier: ^4.32.0
version: 4.32.0(@tanstack/react-query@4.32.0)(react-dom@18.2.0)(react@18.2.0)
'@tanstack/react-virtual':
specifier: 3.0.0-beta.54
version: 3.0.0-beta.54(react@18.2.0)
@ -142,8 +142,8 @@ devDependencies:
specifier: ^4.2.0
version: 4.2.0(prettier@2.8.8)
'@types/node':
specifier: ^18.16.19
version: 18.16.19
specifier: ^18.16.20
version: 18.16.20
'@types/react':
specifier: ^18.2.15
version: 18.2.15
@ -164,7 +164,7 @@ devDependencies:
version: 3.3.2(vite@4.4.6)
autoprefixer:
specifier: ^10.4.14
version: 10.4.14(postcss@8.4.26)
version: 10.4.14(postcss@8.4.27)
cross-env:
specifier: ^7.0.3
version: 7.0.3
@ -196,8 +196,8 @@ devDependencies:
specifier: ^13.2.3
version: 13.2.3
postcss:
specifier: ^8.4.26
version: 8.4.26
specifier: ^8.4.27
version: 8.4.27
prettier:
specifier: ^2.8.8
version: 2.8.8
@ -215,7 +215,7 @@ devDependencies:
version: 4.9.5
vite:
specifier: ^4.4.6
version: 4.4.6(@types/node@18.16.19)
version: 4.4.6(@types/node@18.16.20)
vite-plugin-top-level-await:
specifier: ^1.3.1
version: 1.3.1(vite@4.4.6)
@ -928,8 +928,8 @@ packages:
eslint: 8.45.0
eslint-visitor-keys: 3.4.1
/@eslint-community/regexpp@4.5.1:
resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==}
/@eslint-community/regexpp@4.6.0:
resolution: {integrity: sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
/@eslint/eslintrc@2.1.0:
@ -1850,27 +1850,27 @@ packages:
remove-accents: 0.4.2
dev: false
/@tanstack/query-core@4.30.0:
resolution: {integrity: sha512-R5ozHCm3CJL9cT3j8cN6ztA0rdjw6pJN9e3zNeCPkwqfp89H1mQsn6W1RSJGuykzydQ+gFhAzteTM7NI3hz32g==}
/@tanstack/query-core@4.32.0:
resolution: {integrity: sha512-ei4IYwL2kmlKSlCw9WgvV7PpXi0MiswVwfQRxawhJA690zWO3dU49igaQ/UMTl+Jy9jj9dK5IKAYvbX7kUvviQ==}
dev: false
/@tanstack/react-query-devtools@4.30.0(@tanstack/react-query@4.30.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-9QAivSCVwkHzNVhaWXo8O/ApCXzFqd0hlr8uwEZMsTOG+g60q4BEGFm8Cin4QJx9gCQ17Dnb6QH1VQHF0lanbQ==}
/@tanstack/react-query-devtools@4.32.0(@tanstack/react-query@4.32.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-rOmWqzKzRmQrQULV5Ova2FGEEPT76FZA3hz8T+LFkvp3ehw9ugSZ1BosgRJ7AFCeir+5pcNvFwILy4pDK8HpRw==}
peerDependencies:
'@tanstack/react-query': 4.30.0
'@tanstack/react-query': 4.32.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
'@tanstack/match-sorter-utils': 8.8.4
'@tanstack/react-query': 4.30.0(react-dom@18.2.0)(react@18.2.0)
'@tanstack/react-query': 4.32.0(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
superjson: 1.13.1
use-sync-external-store: 1.2.0(react@18.2.0)
dev: false
/@tanstack/react-query@4.30.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-uDURvabCVYtEamap4kmyLHCVOtzGSts83OsLpPvyzXMTHNptQwhU+YBH/vrgGAtceAuWn7JQfs9R9jJwPOJXXg==}
/@tanstack/react-query@4.32.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-B8WUMcByYAH9500ENejDCATOmEZhqjtS9wsfiQ3BNa+s+yAynY8SESI8WWHhSqUmjd0pmCSFRP6BOUGSda3QXA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
@ -1881,7 +1881,7 @@ packages:
react-native:
optional: true
dependencies:
'@tanstack/query-core': 4.30.0
'@tanstack/query-core': 4.32.0
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
use-sync-external-store: 1.2.0(react@18.2.0)
@ -2379,8 +2379,8 @@ packages:
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
dev: false
/@types/node@18.16.19:
resolution: {integrity: sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==}
/@types/node@18.16.20:
resolution: {integrity: sha512-nL54VfDjThdP2UXJXZao5wp76CDiDw4zSRO8d4Tk7UgDqNKGKVEQB0/t3ti63NS+YNNkIQDvwEAF04BO+WYu7Q==}
dev: true
/@types/normalize-package-data@2.4.1:
@ -2439,7 +2439,7 @@ packages:
typescript:
optional: true
dependencies:
'@eslint-community/regexpp': 4.5.1
'@eslint-community/regexpp': 4.6.0
'@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@4.9.5)
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/type-utils': 5.62.0(eslint@8.45.0)(typescript@4.9.5)
@ -2556,7 +2556,7 @@ packages:
vite: ^4
dependencies:
'@swc/core': 1.3.70
vite: 4.4.6(@types/node@18.16.19)
vite: 4.4.6(@types/node@18.16.20)
transitivePeerDependencies:
- '@swc/helpers'
dev: true
@ -2764,7 +2764,7 @@ packages:
engines: {node: '>=8'}
dev: true
/autoprefixer@10.4.14(postcss@8.4.26):
/autoprefixer@10.4.14(postcss@8.4.27):
resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
@ -2776,7 +2776,7 @@ packages:
fraction.js: 4.2.0
normalize-range: 0.1.2
picocolors: 1.0.0
postcss: 8.4.26
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: true
@ -2845,7 +2845,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001517
electron-to-chromium: 1.4.467
electron-to-chromium: 1.4.468
node-releases: 2.0.13
update-browserslist-db: 1.0.11(browserslist@4.21.9)
@ -3318,8 +3318,8 @@ packages:
/eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
/electron-to-chromium@1.4.467:
resolution: {integrity: sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg==}
/electron-to-chromium@1.4.468:
resolution: {integrity: sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==}
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@ -3707,7 +3707,7 @@ packages:
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0)
'@eslint-community/regexpp': 4.5.1
'@eslint-community/regexpp': 4.6.0
'@eslint/eslintrc': 2.1.0
'@eslint/js': 8.44.0
'@humanwhocodes/config-array': 0.11.10
@ -5809,29 +5809,29 @@ packages:
irregular-plurals: 3.5.0
dev: false
/postcss-import@15.1.0(postcss@8.4.26):
/postcss-import@15.1.0(postcss@8.4.27):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
postcss: 8.4.26
postcss: 8.4.27
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.2
dev: true
/postcss-js@4.0.1(postcss@8.4.26):
/postcss-js@4.0.1(postcss@8.4.27):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
postcss: 8.4.26
postcss: 8.4.27
dev: true
/postcss-load-config@4.0.1(postcss@8.4.26):
/postcss-load-config@4.0.1(postcss@8.4.27):
resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
engines: {node: '>= 14'}
peerDependencies:
@ -5844,17 +5844,17 @@ packages:
optional: true
dependencies:
lilconfig: 2.1.0
postcss: 8.4.26
postcss: 8.4.27
yaml: 2.3.1
dev: true
/postcss-nested@6.0.1(postcss@8.4.26):
/postcss-nested@6.0.1(postcss@8.4.27):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
postcss: 8.4.26
postcss: 8.4.27
postcss-selector-parser: 6.0.13
dev: true
@ -5878,8 +5878,8 @@ packages:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
dev: true
/postcss@8.4.26:
resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==}
/postcss@8.4.27:
resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.6
@ -6880,11 +6880,11 @@ packages:
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
postcss: 8.4.26
postcss-import: 15.1.0(postcss@8.4.26)
postcss-js: 4.0.1(postcss@8.4.26)
postcss-load-config: 4.0.1(postcss@8.4.26)
postcss-nested: 6.0.1(postcss@8.4.26)
postcss: 8.4.27
postcss-import: 15.1.0(postcss@8.4.27)
postcss-js: 4.0.1(postcss@8.4.27)
postcss-load-config: 4.0.1(postcss@8.4.27)
postcss-nested: 6.0.1(postcss@8.4.27)
postcss-selector-parser: 6.0.13
resolve: 1.22.2
sucrase: 3.34.0
@ -7321,7 +7321,7 @@ packages:
'@rollup/plugin-virtual': 3.0.1
'@swc/core': 1.3.70
uuid: 9.0.0
vite: 4.4.6(@types/node@18.16.19)
vite: 4.4.6(@types/node@18.16.20)
transitivePeerDependencies:
- '@swc/helpers'
- rollup
@ -7338,13 +7338,13 @@ packages:
debug: 4.3.4
globrex: 0.1.2
tsconfck: 2.1.2(typescript@4.9.5)
vite: 4.4.6(@types/node@18.16.19)
vite: 4.4.6(@types/node@18.16.20)
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/vite@4.4.6(@types/node@18.16.19):
/vite@4.4.6(@types/node@18.16.20):
resolution: {integrity: sha512-EY6Mm8vJ++S3D4tNAckaZfw3JwG3wa794Vt70M6cNJ6NxT87yhq7EC8Rcap3ahyHdo8AhCmV9PTk+vG1HiYn1A==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
@ -7372,9 +7372,9 @@ packages:
terser:
optional: true
dependencies:
'@types/node': 18.16.19
'@types/node': 18.16.20
esbuild: 0.18.15
postcss: 8.4.26
postcss: 8.4.27
rollup: 3.26.3
optionalDependencies:
fsevents: 2.3.2

View File

@ -15,11 +15,11 @@ button {
}
.markdown {
@apply prose prose-zinc max-w-none select-text break-words dark:prose-invert prose-p:mb-2 prose-p:mt-0 prose-p:last:mb-0 prose-a:break-all prose-a:font-normal prose-a:leading-tight prose-a:text-fuchsia-400 hover:prose-a:text-fuchsia-500 prose-blockquote:m-0 prose-ol:m-0 prose-ol:mb-1 prose-ul:mb-1 prose-li:leading-tight prose-img:mt-1.5 prose-img:mb-1 prose-hr:mx-0 prose-hr:my-2;
@apply prose prose-zinc max-w-none select-text break-words dark:prose-invert prose-p:mb-2 prose-p:mt-0 prose-p:last:mb-0 prose-a:break-all prose-a:font-normal prose-a:leading-tight prose-a:text-fuchsia-400 hover:prose-a:text-fuchsia-500 prose-blockquote:m-0 prose-ol:m-0 prose-ol:mb-1 prose-ul:mb-1 prose-li:leading-tight prose-img:mt-3 prose-img:mb-2 prose-hr:mx-0 prose-hr:my-2;
}
.ProseMirror p.is-empty::before {
@apply text-zinc-400;
@apply text-zinc-500;
content: attr(data-placeholder);
float: left;
height: 0;

View File

@ -1,6 +1,7 @@
import destr from 'destr';
import Database from 'tauri-plugin-sql-api';
import { parser } from '@utils/parser';
import { getParentID } from '@utils/transform';
import { Account, Block, Chats, LumeEvent, Profile, Settings } from '@utils/types';
@ -160,8 +161,16 @@ export async function getNotesByAuthors(authors: string, limit: number, offset:
// get note by id
export async function getNoteByID(event_id: string) {
const db = await connect();
const result = await db.select(`SELECT * FROM notes WHERE event_id = "${event_id}";`);
return result[0];
const result: LumeEvent[] = await db.select(
`SELECT * FROM notes WHERE event_id = "${event_id}";`
);
if (result[0]) {
// @ts-expect-error, todo
if (result[0].kind === 1) result[0]['content'] = parser(result[0]);
return result[0];
} else {
return null;
}
}
// create note
@ -458,8 +467,11 @@ export async function getAllMetadata() {
const profile: Profile = destr(el.content);
return {
pubkey: el.pubkey,
ident: profile.name || profile.display_name || profile.username,
picture: profile.picture || profile.image,
ident: profile.name || profile.display_name || profile.username || 'anon',
picture:
profile.picture ||
profile.image ||
'https://void.cat/d/5VKmKyuHyxrNMf9bWSVPih.jpg',
};
});
return users;
@ -470,7 +482,7 @@ export async function getUserMetadata(pubkey: string) {
const db = await connect();
const result = await db.select(`SELECT * FROM metadata WHERE pubkey = "${pubkey}";`);
if (result[0]) {
return result[0];
return JSON.parse(result[0].content) as Profile;
} else {
return null;
}

View File

@ -1,5 +1,3 @@
import { TauriEvent } from '@tauri-apps/api/event';
import { getCurrent } from '@tauri-apps/api/window';
import Image from '@tiptap/extension-image';
import Mention from '@tiptap/extension-mention';
import Placeholder from '@tiptap/extension-placeholder';
@ -7,7 +5,7 @@ import { EditorContent, useEditor } from '@tiptap/react';
import StarterKit from '@tiptap/starter-kit';
import { convert } from 'html-to-text';
import { nip19 } from 'nostr-tools';
import { useEffect, useState } from 'react';
import { useState } from 'react';
import { twMerge } from 'tailwind-merge';
import { Button } from '@shared/button';
@ -24,11 +22,7 @@ import { sendNativeNotification } from '@utils/notification';
export function Composer() {
const [status, setStatus] = useState<null | 'loading' | 'done'>(null);
const [reply, clearReply, toggleModal] = useComposer((state) => [
state.reply,
state.clearReply,
state.toggleModal,
]);
const [reply, clearReply] = useComposer((state) => [state.reply, state.clearReply]);
const editor = useEditor({
extensions: [
@ -110,22 +104,17 @@ export function Composer() {
// update state
setStatus('done');
// reset editor
editor.commands.clearContent();
if (reply.id) {
clearReply();
}
} catch {
setStatus(null);
console.log('failed to publish');
}
};
useEffect(() => {
getCurrent().listen(TauriEvent.WINDOW_FILE_DROP, (event) => {
const filepath: string = event.payload[0];
if (filepath.match(/\.(jpg|jpeg|png|gif)$/gi)) {
// open modal
toggleModal(true);
}
});
}, []);
return (
<div className="flex h-full flex-col px-4 pb-4">
<div className="flex h-full w-full gap-3">

View File

@ -29,7 +29,7 @@ export function ComposerModal() {
return (
<>
<Button onClick={() => toggle(true)} preset="small">
<ComposeIcon width={14} height={14} />
<ComposeIcon className="h-4 w-4" />
Compose
</Button>
<Transition appear show={open} as={Fragment}>
@ -68,7 +68,7 @@ export function ComposerModal() {
</span>
<div className="inline-flex h-7 w-max items-center justify-center gap-0.5 rounded bg-zinc-800 pl-3 pr-1.5 text-sm font-medium text-zinc-400">
New Post
<ChevronDownIcon width={14} height={14} />
<ChevronDownIcon className="h-4 w-4" />
</div>
</div>
<button

View File

@ -35,13 +35,13 @@ export function NoteContent({
},
}}
>
{content.parsed}
{content?.parsed}
</ReactMarkdown>
{content.images?.length > 0 && <ImagePreview urls={content.images} />}
{content.videos?.length > 0 && <VideoPreview urls={content.videos} />}
{content.links?.length > 0 && <LinkPreview urls={content.links} />}
{content.notes?.length > 0 &&
content.notes.map((note: string) => <MentionNote key={note} id={note} />)}
{content?.images?.length > 0 && <ImagePreview urls={content.images} />}
{content?.videos?.length > 0 && <VideoPreview urls={content.videos} />}
{content?.links?.length > 0 && <LinkPreview urls={content.links} />}
{content?.notes?.length > 0 &&
content?.notes.map((note: string) => <MentionNote key={note} id={note} />)}
</>
);
}

View File

@ -7,58 +7,46 @@ import { parser } from '@utils/parser';
export function useEvent(id: string, fallback?: string) {
const { ndk } = useNDK();
const { status, data, error, isFetching } = useQuery(
['note', id],
async () => {
const result = await getNoteByID(id);
if (result) {
if (result.kind === 1) {
result['content'] = parser(result);
}
return result;
const { status, data, error, isFetching } = useQuery(['note', id], async () => {
const result = await getNoteByID(id);
if (result) {
return result;
} else {
if (fallback) {
const embed = JSON.parse(fallback);
await createNote(
embed.id,
embed.pubkey,
embed.kind,
embed.tags,
embed.content,
embed.created_at
);
return embed;
} else {
if (fallback) {
const embed = JSON.parse(fallback);
const event = await ndk.fetchEvent(id);
if (event) {
await createNote(
embed.id,
embed.pubkey,
embed.kind,
embed.tags,
embed.content,
embed.created_at
event.id,
event.pubkey,
event.kind,
event.tags,
event.content,
event.created_at
);
return embed;
} else {
const event = await ndk.fetchEvent(id);
if (event) {
await createNote(
event.id,
event.pubkey,
event.kind,
event.tags,
event.content,
event.created_at
);
event['event_id'] = event.id;
if (event.kind === 1) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
event['content'] = parser(event);
}
return event;
} else {
throw new Error('Event not found');
event['event_id'] = event.id;
if (event.kind === 1) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
event['content'] = parser(event);
}
return event;
} else {
throw new Error('Event not found');
}
}
},
{
refetchOnWindowFocus: false,
refetchOnMount: false,
refetchOnReconnect: false,
staleTime: Infinity,
}
);
});
return { status, data, error, isFetching };
}

View File

@ -18,6 +18,7 @@ export function useProfile(pubkey: string, fallback?: string) {
const current = Math.floor(Date.now() / 1000);
const cache = await getUserMetadata(pubkey);
if (cache && parseInt(cache.created_at) + 86400 >= current) {
console.log('cache hit:', cache);
return JSON.parse(cache.content);
} else {
const filter: NDKFilter = { kinds: [0], authors: [pubkey] };
@ -27,7 +28,7 @@ export function useProfile(pubkey: string, fallback?: string) {
await createMetadata(latest.id, latest.pubkey, latest.content);
return JSON.parse(latest.content);
} else {
return null;
throw new Error('User not found');
}
}
} else {
@ -38,7 +39,6 @@ export function useProfile(pubkey: string, fallback?: string) {
{
refetchOnWindowFocus: false,
refetchOnReconnect: false,
staleTime: Infinity,
}
);