diff --git a/package.json b/package.json index ff1fad1e..f5d90f8e 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d55c3a0a..af6ff204 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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 diff --git a/src/index.css b/src/index.css index 1a48f676..12383eda 100644 --- a/src/index.css +++ b/src/index.css @@ -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; diff --git a/src/libs/storage.tsx b/src/libs/storage.tsx index 69c68c7c..54b3f619 100644 --- a/src/libs/storage.tsx +++ b/src/libs/storage.tsx @@ -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; } diff --git a/src/shared/composer/composer.tsx b/src/shared/composer/composer.tsx index fc00b4df..7832f4e7 100644 --- a/src/shared/composer/composer.tsx +++ b/src/shared/composer/composer.tsx @@ -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); - 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 (
diff --git a/src/shared/composer/modal.tsx b/src/shared/composer/modal.tsx index e7daea8a..341942ad 100644 --- a/src/shared/composer/modal.tsx +++ b/src/shared/composer/modal.tsx @@ -29,7 +29,7 @@ export function ComposerModal() { return ( <> @@ -68,7 +68,7 @@ export function ComposerModal() {
New Post - +