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

View File

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

View File

@ -15,11 +15,11 @@ button {
} }
.markdown { .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 { .ProseMirror p.is-empty::before {
@apply text-zinc-400; @apply text-zinc-500;
content: attr(data-placeholder); content: attr(data-placeholder);
float: left; float: left;
height: 0; height: 0;

View File

@ -1,6 +1,7 @@
import destr from 'destr'; import destr from 'destr';
import Database from 'tauri-plugin-sql-api'; import Database from 'tauri-plugin-sql-api';
import { parser } from '@utils/parser';
import { getParentID } from '@utils/transform'; import { getParentID } from '@utils/transform';
import { Account, Block, Chats, LumeEvent, Profile, Settings } from '@utils/types'; 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 // get note by id
export async function getNoteByID(event_id: string) { export async function getNoteByID(event_id: string) {
const db = await connect(); const db = await connect();
const result = await db.select(`SELECT * FROM notes WHERE event_id = "${event_id}";`); 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]; return result[0];
} else {
return null;
}
} }
// create note // create note
@ -458,8 +467,11 @@ export async function getAllMetadata() {
const profile: Profile = destr(el.content); const profile: Profile = destr(el.content);
return { return {
pubkey: el.pubkey, pubkey: el.pubkey,
ident: profile.name || profile.display_name || profile.username, ident: profile.name || profile.display_name || profile.username || 'anon',
picture: profile.picture || profile.image, picture:
profile.picture ||
profile.image ||
'https://void.cat/d/5VKmKyuHyxrNMf9bWSVPih.jpg',
}; };
}); });
return users; return users;
@ -470,7 +482,7 @@ export async function getUserMetadata(pubkey: string) {
const db = await connect(); const db = await connect();
const result = await db.select(`SELECT * FROM metadata WHERE pubkey = "${pubkey}";`); const result = await db.select(`SELECT * FROM metadata WHERE pubkey = "${pubkey}";`);
if (result[0]) { if (result[0]) {
return result[0]; return JSON.parse(result[0].content) as Profile;
} else { } else {
return null; 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 Image from '@tiptap/extension-image';
import Mention from '@tiptap/extension-mention'; import Mention from '@tiptap/extension-mention';
import Placeholder from '@tiptap/extension-placeholder'; import Placeholder from '@tiptap/extension-placeholder';
@ -7,7 +5,7 @@ import { EditorContent, useEditor } from '@tiptap/react';
import StarterKit from '@tiptap/starter-kit'; import StarterKit from '@tiptap/starter-kit';
import { convert } from 'html-to-text'; import { convert } from 'html-to-text';
import { nip19 } from 'nostr-tools'; import { nip19 } from 'nostr-tools';
import { useEffect, useState } from 'react'; import { useState } from 'react';
import { twMerge } from 'tailwind-merge'; import { twMerge } from 'tailwind-merge';
import { Button } from '@shared/button'; import { Button } from '@shared/button';
@ -24,11 +22,7 @@ import { sendNativeNotification } from '@utils/notification';
export function Composer() { export function Composer() {
const [status, setStatus] = useState<null | 'loading' | 'done'>(null); const [status, setStatus] = useState<null | 'loading' | 'done'>(null);
const [reply, clearReply, toggleModal] = useComposer((state) => [ const [reply, clearReply] = useComposer((state) => [state.reply, state.clearReply]);
state.reply,
state.clearReply,
state.toggleModal,
]);
const editor = useEditor({ const editor = useEditor({
extensions: [ extensions: [
@ -110,22 +104,17 @@ export function Composer() {
// update state // update state
setStatus('done'); setStatus('done');
// reset editor
editor.commands.clearContent();
if (reply.id) {
clearReply();
}
} catch { } catch {
setStatus(null); setStatus(null);
console.log('failed to publish'); 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 ( return (
<div className="flex h-full flex-col px-4 pb-4"> <div className="flex h-full flex-col px-4 pb-4">
<div className="flex h-full w-full gap-3"> <div className="flex h-full w-full gap-3">

View File

@ -29,7 +29,7 @@ export function ComposerModal() {
return ( return (
<> <>
<Button onClick={() => toggle(true)} preset="small"> <Button onClick={() => toggle(true)} preset="small">
<ComposeIcon width={14} height={14} /> <ComposeIcon className="h-4 w-4" />
Compose Compose
</Button> </Button>
<Transition appear show={open} as={Fragment}> <Transition appear show={open} as={Fragment}>
@ -68,7 +68,7 @@ export function ComposerModal() {
</span> </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"> <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 New Post
<ChevronDownIcon width={14} height={14} /> <ChevronDownIcon className="h-4 w-4" />
</div> </div>
</div> </div>
<button <button

View File

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

View File

@ -7,14 +7,9 @@ import { parser } from '@utils/parser';
export function useEvent(id: string, fallback?: string) { export function useEvent(id: string, fallback?: string) {
const { ndk } = useNDK(); const { ndk } = useNDK();
const { status, data, error, isFetching } = useQuery( const { status, data, error, isFetching } = useQuery(['note', id], async () => {
['note', id],
async () => {
const result = await getNoteByID(id); const result = await getNoteByID(id);
if (result) { if (result) {
if (result.kind === 1) {
result['content'] = parser(result);
}
return result; return result;
} else { } else {
if (fallback) { if (fallback) {
@ -51,14 +46,7 @@ export function useEvent(id: string, fallback?: string) {
} }
} }
} }
}, });
{
refetchOnWindowFocus: false,
refetchOnMount: false,
refetchOnReconnect: false,
staleTime: Infinity,
}
);
return { status, data, error, isFetching }; 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 current = Math.floor(Date.now() / 1000);
const cache = await getUserMetadata(pubkey); const cache = await getUserMetadata(pubkey);
if (cache && parseInt(cache.created_at) + 86400 >= current) { if (cache && parseInt(cache.created_at) + 86400 >= current) {
console.log('cache hit:', cache);
return JSON.parse(cache.content); return JSON.parse(cache.content);
} else { } else {
const filter: NDKFilter = { kinds: [0], authors: [pubkey] }; 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); await createMetadata(latest.id, latest.pubkey, latest.content);
return JSON.parse(latest.content); return JSON.parse(latest.content);
} else { } else {
return null; throw new Error('User not found');
} }
} }
} else { } else {
@ -38,7 +39,6 @@ export function useProfile(pubkey: string, fallback?: string) {
{ {
refetchOnWindowFocus: false, refetchOnWindowFocus: false,
refetchOnReconnect: false, refetchOnReconnect: false,
staleTime: Infinity,
} }
); );