From ca87624727b042531296f2ce8a5e4dd92cb64615 Mon Sep 17 00:00:00 2001 From: Ren Amamiya <123083837+reyamir@users.noreply.github.com> Date: Wed, 22 Mar 2023 10:37:07 +0700 Subject: [PATCH] I'm tired of writing commit message, sorry! --- package.json | 11 +- pnpm-lock.yaml | 143 ++++++-------------------- src/components/note/content/index.tsx | 3 +- src/components/note/index.tsx | 3 +- src/pages/newsfeed/circle.tsx | 41 +------- src/pages/newsfeed/following.tsx | 10 +- src/stores/note.tsx | 10 -- 7 files changed, 49 insertions(+), 172 deletions(-) diff --git a/package.json b/package.json index 3ac57ebd..3a6c1ca7 100644 --- a/package.json +++ b/package.json @@ -15,28 +15,23 @@ "@radix-ui/react-collapsible": "^1.0.2", "@radix-ui/react-dialog": "^1.0.3", "@radix-ui/react-dropdown-menu": "^2.0.4", - "@radix-ui/react-icons": "^1.2.0", + "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-popover": "^1.0.5", "@radix-ui/react-tabs": "^1.0.3", "@rehooks/local-storage": "^2.4.4", "@supabase/supabase-js": "^2.12.0", - "@tanstack/query-core": "^4.27.0", - "@tanstack/react-virtual": "3.0.0-beta.54", "@tauri-apps/api": "^1.2.0", "@uiw/react-markdown-preview": "^4.1.10", "@uiw/react-md-editor": "^3.20.5", - "bitcoin-address-validation": "^2.2.1", "boring-avatars": "^1.7.0", "dayjs": "^1.11.7", + "destr": "^1.2.2", "framer-motion": "^9.1.7", "jotai": "^2.0.3", - "jotai-tanstack-query": "^0.6.0", - "moment": "^2.29.4", "next": "^13.2.4", "next-remove-imports": "^1.0.10", "nostr-relaypool": "^0.5.18", "nostr-tools": "^1.7.5", - "qrcode.react": "^3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.43.7", @@ -66,7 +61,7 @@ "husky": "^8.0.3", "lint-staged": "^13.2.0", "postcss": "^8.4.21", - "prettier": "^2.8.5", + "prettier": "^2.8.6", "prettier-plugin-tailwindcss": "^0.2.5", "prop-types": "^15.8.1", "tailwindcss": "^3.2.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79d385a1..c17141f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,14 +4,12 @@ specifiers: '@radix-ui/react-collapsible': ^1.0.2 '@radix-ui/react-dialog': ^1.0.3 '@radix-ui/react-dropdown-menu': ^2.0.4 - '@radix-ui/react-icons': ^1.2.0 + '@radix-ui/react-icons': ^1.3.0 '@radix-ui/react-popover': ^1.0.5 '@radix-ui/react-tabs': ^1.0.3 '@rehooks/local-storage': ^2.4.4 '@supabase/supabase-js': ^2.12.0 '@tailwindcss/typography': ^0.5.9 - '@tanstack/query-core': ^4.27.0 - '@tanstack/react-virtual': 3.0.0-beta.54 '@tauri-apps/api': ^1.2.0 '@tauri-apps/cli': ^1.2.3 '@trivago/prettier-plugin-sort-imports': ^4.1.1 @@ -23,10 +21,10 @@ specifiers: '@uiw/react-markdown-preview': ^4.1.10 '@uiw/react-md-editor': ^3.20.5 autoprefixer: ^10.4.14 - bitcoin-address-validation: ^2.2.1 boring-avatars: ^1.7.0 csstype: ^3.1.1 dayjs: ^1.11.7 + destr: ^1.2.2 eslint: ^8.36.0 eslint-config-next: ^13.2.4 eslint-config-prettier: ^8.8.0 @@ -35,18 +33,15 @@ specifiers: framer-motion: ^9.1.7 husky: ^8.0.3 jotai: ^2.0.3 - jotai-tanstack-query: ^0.6.0 lint-staged: ^13.2.0 - moment: ^2.29.4 next: ^13.2.4 next-remove-imports: ^1.0.10 nostr-relaypool: ^0.5.18 nostr-tools: ^1.7.5 postcss: ^8.4.21 - prettier: ^2.8.5 + prettier: ^2.8.6 prettier-plugin-tailwindcss: ^0.2.5 prop-types: ^15.8.1 - qrcode.react: ^3.1.0 react: ^18.2.0 react-dom: ^18.2.0 react-hook-form: ^7.43.7 @@ -63,28 +58,23 @@ dependencies: '@radix-ui/react-collapsible': 1.0.2_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-dialog': 1.0.3_zula6vjvt3wdocc4mwcxqa6nzi '@radix-ui/react-dropdown-menu': 2.0.4_zula6vjvt3wdocc4mwcxqa6nzi - '@radix-ui/react-icons': 1.2.0_react@18.2.0 + '@radix-ui/react-icons': 1.3.0_react@18.2.0 '@radix-ui/react-popover': 1.0.5_zula6vjvt3wdocc4mwcxqa6nzi '@radix-ui/react-tabs': 1.0.3_biqbaboplfbrettd7655fr4n2y '@rehooks/local-storage': 2.4.4_react@18.2.0 '@supabase/supabase-js': 2.12.0 - '@tanstack/query-core': 4.27.0 - '@tanstack/react-virtual': 3.0.0-beta.54_react@18.2.0 '@tauri-apps/api': 1.2.0 '@uiw/react-markdown-preview': 4.1.10_zula6vjvt3wdocc4mwcxqa6nzi '@uiw/react-md-editor': 3.20.5_zula6vjvt3wdocc4mwcxqa6nzi - bitcoin-address-validation: 2.2.1 boring-avatars: 1.7.0 dayjs: 1.11.7 + destr: 1.2.2 framer-motion: 9.1.7_biqbaboplfbrettd7655fr4n2y jotai: 2.0.3_react@18.2.0 - jotai-tanstack-query: 0.6.0_jqgumvl52k2nlr5n23qdneaa6y - moment: 2.29.4 next: 13.2.4_biqbaboplfbrettd7655fr4n2y next-remove-imports: 1.0.10 nostr-relaypool: 0.5.18_ws@8.13.0 nostr-tools: 1.7.5 - qrcode.react: 3.1.0_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-hook-form: 7.43.7_react@18.2.0 @@ -98,7 +88,7 @@ dependencies: devDependencies: '@tailwindcss/typography': 0.5.9_tailwindcss@3.2.7 '@tauri-apps/cli': 1.2.3 - '@trivago/prettier-plugin-sort-imports': 4.1.1_prettier@2.8.5 + '@trivago/prettier-plugin-sort-imports': 4.1.1_prettier@2.8.6 '@types/node': 18.15.5 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -114,8 +104,8 @@ devDependencies: husky: 8.0.3 lint-staged: 13.2.0 postcss: 8.4.21 - prettier: 2.8.5 - prettier-plugin-tailwindcss: 0.2.5_wgxk27ud2vbqu6hanimyzzegte + prettier: 2.8.6 + prettier-plugin-tailwindcss: 0.2.5_c5px7p3j4kcmt2ngqd44w4h7we prop-types: 15.8.1 tailwindcss: 3.2.7_postcss@8.4.21 typescript: 4.9.5 @@ -922,9 +912,9 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@radix-ui/react-icons/1.2.0_react@18.2.0: + /@radix-ui/react-icons/1.3.0_react@18.2.0: resolution: - { integrity: sha512-NqrZxn+Ig6c6MypUt84/Nab9WBFXH75T1mhEhFjPlIYaNkp113pqlo6QdK5r7zb3b7RckDAPgUQACes0aKwcFA== } + { integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw== } peerDependencies: react: ^16.x || ^17.x || ^18.x dependencies: @@ -1235,9 +1225,9 @@ packages: - encoding dev: false - /@supabase/gotrue-js/2.15.0: + /@supabase/gotrue-js/2.16.0: resolution: - { integrity: sha512-cu3JRGEK03Aa+yWf7YPyDibVYoMYM8apc5HwsnjnVgLtFuIqaVKFrlIBWgzBOSabxaP//6i/pd39oXo9uDH3Ew== } + { integrity: sha512-k7curH5xxnQmUiG8AeFW7KEJST99vhFnBCidWFhuSSyLP1Ja8Ix3g4bmLUv209mhX8LmAaDMGKNQs8gG0MOKCw== } dependencies: cross-fetch: 3.1.5 transitivePeerDependencies: @@ -1278,7 +1268,7 @@ packages: { integrity: sha512-tHV4KqlPHuPt4uPu+nYwQTEp+mU7Qc0h42EyRW7rsAGGo8bmKIOGnZjyDDc5lxg0CW7OF5R5oMQWmtuuXZh00Q== } dependencies: '@supabase/functions-js': 2.1.0 - '@supabase/gotrue-js': 2.15.0 + '@supabase/gotrue-js': 2.16.0 '@supabase/postgrest-js': 1.4.1 '@supabase/realtime-js': 2.7.1 '@supabase/storage-js': 2.3.1 @@ -1308,26 +1298,6 @@ packages: tailwindcss: 3.2.7_postcss@8.4.21 dev: true - /@tanstack/query-core/4.27.0: - resolution: - { integrity: sha512-sm+QncWaPmM73IPwFlmWSKPqjdTXZeFf/7aEmWh00z7yl2FjqophPt0dE1EHW9P1giMC5rMviv7OUbSDmWzXXA== } - dev: false - - /@tanstack/react-virtual/3.0.0-beta.54_react@18.2.0: - resolution: - { integrity: sha512-D1mDMf4UPbrtHRZZriCly5bXTBMhylslm4dhcHqTtDJ6brQcgGmk8YD9JdWBGWfGSWPKoh2x1H3e7eh+hgPXtQ== } - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@tanstack/virtual-core': 3.0.0-beta.54 - react: 18.2.0 - dev: false - - /@tanstack/virtual-core/3.0.0-beta.54: - resolution: - { integrity: sha512-jtkwqdP2rY2iCCDVAFuaNBH3fiEi29aTn2RhtIoky8DTTiCdc48plpHHreLwmv1PICJ4AJUUESaq3xa8fZH8+g== } - dev: false - /@tauri-apps/api/1.2.0: resolution: { integrity: sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw== } @@ -1441,7 +1411,7 @@ packages: '@tauri-apps/cli-win32-x64-msvc': 1.2.3 dev: true - /@trivago/prettier-plugin-sort-imports/4.1.1_prettier@2.8.5: + /@trivago/prettier-plugin-sort-imports/4.1.1_prettier@2.8.6: resolution: { integrity: sha512-dQ2r2uzNr1x6pJsuh/8x0IRA3CBUB+pWEW3J/7N98axqt7SQSm+2fy0FLNXvXGg77xEDC7KHxJlHfLYyi7PDcw== } peerDependencies: @@ -1457,7 +1427,7 @@ packages: '@babel/types': 7.17.0 javascript-natural-sort: 0.7.1 lodash: 4.17.21 - prettier: 2.8.5 + prettier: 2.8.6 transitivePeerDependencies: - supports-color dev: true @@ -1983,7 +1953,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001468 + caniuse-lite: 1.0.30001469 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -2042,37 +2012,17 @@ packages: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } dev: true - /base58-js/1.0.5: - resolution: - { integrity: sha512-LkkAPP8Zu+c0SVNRTRVDyMfKVORThX+rCViget00xdgLRrKkClCTz1T7cIrpr69ShwV5XJuuoZvMvJ43yURwkA== } - engines: { node: '>= 8' } - dev: false - /bcp-47-match/2.0.3: resolution: { integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ== } dev: false - /bech32/2.0.0: - resolution: - { integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== } - dev: false - /binary-extensions/2.2.0: resolution: { integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== } engines: { node: '>=8' } dev: true - /bitcoin-address-validation/2.2.1: - resolution: - { integrity: sha512-f6LXNpvRKlTbHWb37N9tHoAbYGbshzM8FPWvCtloh++hxZ0/dmkokvKNVLz6HkG82zVwo8w6Sq4JmfO2timzyg== } - dependencies: - base58-js: 1.0.5 - bech32: 2.0.0 - sha256-uint8array: 0.10.5 - dev: false - /boolbase/1.0.0: resolution: { integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== } @@ -2105,8 +2055,8 @@ packages: engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true dependencies: - caniuse-lite: 1.0.30001468 - electron-to-chromium: 1.4.334 + caniuse-lite: 1.0.30001469 + electron-to-chromium: 1.4.335 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 @@ -2138,9 +2088,9 @@ packages: engines: { node: '>= 6' } dev: true - /caniuse-lite/1.0.30001468: + /caniuse-lite/1.0.30001469: resolution: - { integrity: sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A== } + { integrity: sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g== } /ccount/2.0.1: resolution: @@ -2454,6 +2404,11 @@ packages: engines: { node: '>=6' } dev: false + /destr/1.2.2: + resolution: + { integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA== } + dev: false + /detect-node-es/1.1.0: resolution: { integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== } @@ -2521,9 +2476,9 @@ packages: { integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== } dev: true - /electron-to-chromium/1.4.334: + /electron-to-chromium/1.4.335: resolution: - { integrity: sha512-laZ1odk+TRen6q0GeyQx/JEkpD3iSZT7ewopCpKqg9bTjP1l8XRfU3Bg20CFjNPZkp5+NDBl3iqd4o/kPO+Vew== } + { integrity: sha512-l/eowQqTnrq3gu+WSrdfkhfNHnPgYqlKAwxz7MTOj6mom19vpEDHNXl6dxDxyTiYuhemydprKr/HCrHfgk+OfQ== } /emoji-regex/8.0.0: resolution: @@ -3862,17 +3817,6 @@ packages: { integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== } dev: true - /jotai-tanstack-query/0.6.0_jqgumvl52k2nlr5n23qdneaa6y: - resolution: - { integrity: sha512-87oD6MnjrgfLWeCJXB/dQt4xyCmyFYZeG9jw4Y2lIprtwLKS5s/vCEjNP5fnYG2nuPBkopiRECTEqtIysvHSxg== } - peerDependencies: - '@tanstack/query-core': '*' - jotai: '>=1.11.0' - dependencies: - '@tanstack/query-core': 4.27.0 - jotai: 2.0.3_react@18.2.0 - dev: false - /jotai/2.0.3_react@18.2.0: resolution: { integrity: sha512-MMjhSPAL3RoeZD9WbObufRT2quThEAEknHHridf2ma8Ml7ZVQmUiHk0ssdbR3F0h3kcwhYqSGJ59OjhPge7RRg== } @@ -4587,11 +4531,6 @@ packages: { integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== } dev: true - /moment/2.29.4: - resolution: - { integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== } - dev: false - /mri/1.2.0: resolution: { integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== } @@ -4669,7 +4608,7 @@ packages: dependencies: '@next/env': 13.2.4 '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001468 + caniuse-lite: 1.0.30001469 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -4749,7 +4688,7 @@ packages: '@scure/base': 1.1.1 '@scure/bip32': 1.2.0 '@scure/bip39': 1.1.1 - prettier: 2.8.5 + prettier: 2.8.6 dev: false /not/0.1.0: @@ -5143,7 +5082,7 @@ packages: engines: { node: '>= 0.8.0' } dev: true - /prettier-plugin-tailwindcss/0.2.5_wgxk27ud2vbqu6hanimyzzegte: + /prettier-plugin-tailwindcss/0.2.5_c5px7p3j4kcmt2ngqd44w4h7we: resolution: { integrity: sha512-vZ/iKieyCx0WTxHbkf5E1rBlv/ybFk8WTT4hL5W2jlVxum2Zbe0jMUpuQdDrpa4z2vnPiJ5KIWCqL/kd16fKYg== } engines: { node: '>=12.17.0' } @@ -5196,13 +5135,13 @@ packages: prettier-plugin-twig-melody: optional: true dependencies: - '@trivago/prettier-plugin-sort-imports': 4.1.1_prettier@2.8.5 - prettier: 2.8.5 + '@trivago/prettier-plugin-sort-imports': 4.1.1_prettier@2.8.6 + prettier: 2.8.6 dev: true - /prettier/2.8.5: + /prettier/2.8.6: resolution: - { integrity: sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ== } + { integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ== } engines: { node: '>=10.13.0' } hasBin: true @@ -5224,15 +5163,6 @@ packages: { integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== } engines: { node: '>=6' } - /qrcode.react/3.1.0_react@18.2.0: - resolution: - { integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== } - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - /queue-microtask/1.2.3: resolution: { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } @@ -5708,11 +5638,6 @@ packages: lru-cache: 6.0.0 dev: true - /sha256-uint8array/0.10.5: - resolution: - { integrity: sha512-KjYP8M6y8VvV62lnSSZwzutuwqphVOOVQamP+GmmClZcYhbq1HSIw/M2tlKgHndiaIwe3tFG5X38YYsQfUdItw== } - dev: false - /shebang-command/2.0.0: resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } diff --git a/src/components/note/content/index.tsx b/src/components/note/content/index.tsx index 6f84a640..1f13839b 100644 --- a/src/components/note/content/index.tsx +++ b/src/components/note/content/index.tsx @@ -3,6 +3,7 @@ import NotePreview from '@components/note/content/preview'; import { UserExtend } from '@components/user/extend'; import { UserMention } from '@components/user/mention'; +import destr from 'destr'; import { memo, useMemo } from 'react'; import reactStringReplace from 'react-string-replace'; @@ -10,7 +11,7 @@ export const Content = memo(function Content({ data }: { data: any }) { const content = useMemo(() => { let parsedContent; // get data tags - const tags = JSON.parse(data.tags); + const tags = destr(data.tags); // remove all image urls parsedContent = data.content.replace(/(https?:\/\/.*\.(jpg|jpeg|gif|png|webp|mp4|webm)((\?.*)$|$))/gim, ''); // handle urls diff --git a/src/components/note/index.tsx b/src/components/note/index.tsx index d069646c..5d5909cb 100644 --- a/src/components/note/index.tsx +++ b/src/components/note/index.tsx @@ -1,10 +1,11 @@ import { Content } from '@components/note/content'; import { RootNote } from '@components/note/root'; +import destr from 'destr'; import { memo, useMemo } from 'react'; export const Note = memo(function Note({ event }: { event: any }) { - const tags = JSON.parse(event.tags); + const tags = destr(event.tags); const fetchRootEvent = useMemo(() => { if (tags.length > 0) { diff --git a/src/pages/newsfeed/circle.tsx b/src/pages/newsfeed/circle.tsx index 2068d805..f37272fc 100644 --- a/src/pages/newsfeed/circle.tsx +++ b/src/pages/newsfeed/circle.tsx @@ -1,47 +1,10 @@ import BaseLayout from '@layouts/base'; import WithSidebarLayout from '@layouts/withSidebar'; -import { Note } from '@components/note'; - -import { initialNotesAtom } from '@stores/note'; - -import { useVirtualizer } from '@tanstack/react-virtual'; -import { useAtom } from 'jotai'; -import { JSXElementConstructor, ReactElement, ReactFragment, ReactPortal, useMemo, useRef } from 'react'; +import { JSXElementConstructor, ReactElement, ReactFragment, ReactPortal } from 'react'; export default function Page() { - const [data]: any = useAtom(initialNotesAtom); - - const parentRef = useRef(null); - const count = useMemo(() => data.length, [data]); - - const virtualizer = useVirtualizer({ - count, - getScrollElement: () => parentRef.current, - getItemKey: (index: number) => data[index].id, - estimateSize: () => 500, - overscan: 5, - }); - - const items = virtualizer.getVirtualItems(); - - return ( -
- {items.length > 0 && ( -
-
-
- {items.map((virtualRow) => ( -
- -
- ))} -
-
-
- )} -
- ); + return <>; } Page.getLayout = function getLayout( diff --git a/src/pages/newsfeed/following.tsx b/src/pages/newsfeed/following.tsx index ca86f7f4..84b7e3db 100644 --- a/src/pages/newsfeed/following.tsx +++ b/src/pages/newsfeed/following.tsx @@ -32,7 +32,7 @@ export default function Page() { const result = await db.select( `SELECT * FROM cache_notes - WHERE created_at <= ${dateToUnix(now.current)} + WHERE created_at <= ${dateToUnix(now.current)} AND is_root = 0 ORDER BY created_at DESC LIMIT ${limit.current} OFFSET ${offset.current}` ); @@ -43,7 +43,7 @@ export default function Page() { const result = await db.select( `SELECT * FROM cache_notes - WHERE created_at > ${dateToUnix(now.current)} + WHERE created_at > ${dateToUnix(now.current)} AND is_root = 0 ORDER BY created_at DESC LIMIT ${limit.current}` ); @@ -65,14 +65,16 @@ export default function Page() { const computeItemKey = useCallback( (index: Key) => { - return data[index].id; + return data[index].id + data[index].created_at; }, [data] ); useEffect(() => { const getData = async () => { - const result = await db.select(`SELECT * FROM cache_notes ORDER BY created_at DESC LIMIT ${limit.current}`); + const result = await db.select( + `SELECT * FROM cache_notes WHERE is_root = 0 ORDER BY created_at DESC LIMIT ${limit.current}` + ); if (result.length > 0) { setData(result); } else { diff --git a/src/stores/note.tsx b/src/stores/note.tsx index b3f365b5..21682af0 100644 --- a/src/stores/note.tsx +++ b/src/stores/note.tsx @@ -1,14 +1,4 @@ import { atom } from 'jotai'; -import { atomsWithQuery } from 'jotai-tanstack-query'; -import Database from 'tauri-plugin-sql-api'; // usecase: notify user that connector has receive newer note export const hasNewerNoteAtom = atom(false); -// usecase: get all notes (limit 1000) -export const [initialNotesAtom] = atomsWithQuery(() => ({ - queryFn: async () => { - const db = await Database.load('sqlite:lume.db'); - const result = await db.select(`SELECT * FROM cache_notes ORDER BY created_at DESC LIMIT 1000`); - return result; - }, -}));