diff --git a/README.md b/README.md index ade48b1..91b4319 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,18 @@ A discord-like nostr client based on the idea of "relays as groups". WIP. # Todo -- [ ] NIP 17 dms/chats - [ ] Hook up donate buttons -- [ ] Profile settings -- [ ] Relay settings +- [ ] Mobile version +- [ ] Single-relay version +- [ ] Relay access detection +- [ ] Env vars for: + - Theme + - Relay --- -- [ ] Add person drawer with info and recent notes, where you can follow/mute them. Maybe same stuff as person search - [ ] If the user isn't following anyone, show warning/fallback on people/notes pages +- [ ] Show warning if people in a dm conversation don't have a 10050 - [ ] Add react/reply to notes - [ ] Indicate cut-off images, allow user to expand - [ ] Sort/migrate repository data to keep important events diff --git a/package-lock.json b/package-lock.json index 1687049..48e4d30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,13 +23,14 @@ "@tiptap/extension-text": "^2.6.6", "@tiptap/suggestion": "^2.6.4", "@types/throttle-debounce": "^5.0.2", - "@welshman/app": "^0.0.7", + "@welshman/app": "^0.0.11", "@welshman/content": "^0.0.11", + "@welshman/feeds": "^0.0.19", "@welshman/lib": "^0.0.19", - "@welshman/net": "^0.0.23", - "@welshman/signer": "^0.0.6", - "@welshman/store": "^0.0.8", - "@welshman/util": "^0.0.34", + "@welshman/net": "^0.0.24", + "@welshman/signer": "^0.0.7", + "@welshman/store": "^0.0.9", + "@welshman/util": "^0.0.36", "daisyui": "^4.12.10", "date-picker-svelte": "^2.13.0", "emoji-picker-element": "^1.22.8", @@ -1658,94 +1659,21 @@ } }, "node_modules/@welshman/app": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@welshman/app/-/app-0.0.7.tgz", - "integrity": "sha512-37dTcUDe+6wLhCFClexuJZKCZyGHgGoiFBvm8EL6ig4UHRMRWH2NCeddftScq0gEIl2GVWuq96iCni9COc7nRw==", + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/@welshman/app/-/app-0.0.11.tgz", + "integrity": "sha512-zSY+L6buAuGBMWUZ+HYIRFaaseQugV27DeJKhyDMerGJRW1OCwanCzAnEm6WSZiC3AXQDzviucUe+Rfgm5kO5w==", "dependencies": { - "@welshman/lib": "0.0.17", - "@welshman/net": "0.0.22", - "@welshman/signer": "0.0.5", - "@welshman/store": "0.0.7", - "@welshman/util": "0.0.31", + "@welshman/lib": "~0.0.19", + "@welshman/net": "~0.0.24", + "@welshman/signer": "~0.0.7", + "@welshman/store": "~0.0.9", + "@welshman/util": "~0.0.36", "fuse.js": "^7.0.0", "idb": "^8.0.0", "svelte": "^4.2.18", "throttle-debounce": "^5.0.2" } }, - "node_modules/@welshman/app/node_modules/@welshman/lib": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.17.tgz", - "integrity": "sha512-C0yelgMD6F5hgIcDjflJ+1Qg9/yvodtxSE00p1DZgkTn0s/7znvxraYpQInQdhqp8vJ8r+3coR3YagrRdm9+LA==", - "dependencies": { - "@scure/base": "^1.1.6", - "@types/events": "^3.0.3", - "@types/throttle-debounce": "^5.0.2", - "events": "^3.3.0", - "throttle-debounce": "^5.0.0" - } - }, - "node_modules/@welshman/app/node_modules/@welshman/net": { - "version": "0.0.22", - "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.22.tgz", - "integrity": "sha512-sXdHevglDqLujQrhXFUwSPsC0Zu/SY2WWy049Citpi1nej4JnAjCbpI8XUeI1it80a84dWa+vGA5Da4OhCYkmA==", - "dependencies": { - "@welshman/lib": "0.0.17", - "@welshman/util": "0.0.31", - "isomorphic-ws": "^5.0.0", - "ws": "^8.16.0" - } - }, - "node_modules/@welshman/app/node_modules/@welshman/signer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@welshman/signer/-/signer-0.0.5.tgz", - "integrity": "sha512-i3SUEF4yAb8up2qk6hdLyRytnkRt5W+5KyrbN1RmFcQpDC/foa3nYO+Q0mydwXIX3h6HAV7MzO8vi9tHWJ30Ww==", - "dependencies": { - "@welshman/lib": "0.0.17", - "@welshman/net": "0.0.21", - "@welshman/util": "0.0.30", - "nostr-tools": "^2.7.2" - } - }, - "node_modules/@welshman/app/node_modules/@welshman/signer/node_modules/@welshman/net": { - "version": "0.0.21", - "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.21.tgz", - "integrity": "sha512-BOWRevNJjyNHshxr0eFn/yBjjVIuvofyy/Q+eYuLLTRwolFkqmaiN8xuG3wFndPi5z2uuC87Ay4PmRTzp+kCSg==", - "dependencies": { - "@welshman/lib": "0.0.17", - "@welshman/util": "0.0.30", - "isomorphic-ws": "^5.0.0", - "ws": "^8.16.0" - } - }, - "node_modules/@welshman/app/node_modules/@welshman/signer/node_modules/@welshman/util": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.30.tgz", - "integrity": "sha512-CYLtaXfCod5Xo/OCXPUGYKwT+fRwm5DU7ASqcGwPuB/vadDodT/OJPSmrMH9Pq63VY9xK4gX/I2ma/rKRokdpg==", - "dependencies": { - "@welshman/lib": "0.0.17", - "nostr-tools": "^2.7.2" - } - }, - "node_modules/@welshman/app/node_modules/@welshman/store": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@welshman/store/-/store-0.0.7.tgz", - "integrity": "sha512-Ltx2RYwMicCeGWBdl3+Wr+pilIdofmNSDKTqgOqtPanOgSarGn7uqZnPzDz9N+P0htg2TDSogg7YkBWf5drhDw==", - "dependencies": { - "@welshman/lib": "0.0.17", - "@welshman/util": "0.0.31", - "svelte": "^4.2.18" - } - }, - "node_modules/@welshman/app/node_modules/@welshman/util": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.31.tgz", - "integrity": "sha512-nUv/Mto6maQx6vbCaZ0HKQRvLYRWqQzPTLsKoxSDX0HkeFP653T6raFx8TvWt+op/qBuuT8sANJactc2/qGoYg==", - "dependencies": { - "@welshman/lib": "0.0.17", - "nostr-tools": "^2.7.2" - } - }, "node_modules/@welshman/content": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/@welshman/content/-/content-0.0.11.tgz", @@ -1755,6 +1683,15 @@ "nostr-tools": "^2.7.2" } }, + "node_modules/@welshman/feeds": { + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/@welshman/feeds/-/feeds-0.0.19.tgz", + "integrity": "sha512-bw5iS7aXKPPvebrNj8TrG60xgkBTI42cBVG9+hSvTojuf3H7/GamyhlJYGYNzyflwpJaWNevLdnoSgG2J007kg==", + "dependencies": { + "@welshman/lib": "~0.0.19", + "@welshman/util": "~0.0.36" + } + }, "node_modules/@welshman/lib": { "version": "0.0.19", "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.19.tgz", @@ -1768,97 +1705,49 @@ } }, "node_modules/@welshman/net": { - "version": "0.0.23", - "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.23.tgz", - "integrity": "sha512-aeogvtQbmzS+qEdxPVFzcdhSGbdJzDjq9j2epIJ8esB+HFpeLJ51EfY0pAs8W4ATs09526o98W25maOXVKpYtw==", + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/@welshman/net/-/net-0.0.24.tgz", + "integrity": "sha512-1PofNlCRHkJypz/heqAkzyokUrt/ttcZdjT2Ol4chh2PQANgOlpK2sbpjbYcfrxP1yCFOa+EaQ3QzKWutKoB6A==", "dependencies": { - "@welshman/lib": "^0.0.18", - "@welshman/util": "^0.0.34", + "@welshman/lib": "~0.0.19", + "@welshman/util": "~0.0.36", "isomorphic-ws": "^5.0.0", "ws": "^8.16.0" } }, - "node_modules/@welshman/net/node_modules/@welshman/lib": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.18.tgz", - "integrity": "sha512-ZFmK7GdUeZp+uwWY0H0/r/4hui/GZ5xlF0FPDKljhXGR/l771F5+lGGbgeeWWFVpRcEbWD54Q4ioQxmQSWb30Q==", - "dependencies": { - "@scure/base": "^1.1.6", - "@types/events": "^3.0.3", - "@types/throttle-debounce": "^5.0.2", - "events": "^3.3.0", - "throttle-debounce": "^5.0.0" - } - }, "node_modules/@welshman/signer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@welshman/signer/-/signer-0.0.6.tgz", - "integrity": "sha512-y+Lj/f+MhAZmB4/BOnDRgTl1kQfbOJ8jPM5mC1U+LQ7/th1/RJRgPr7OjBPApMh13ZYnd/6dLD5V2+qZ0LHRIA==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@welshman/signer/-/signer-0.0.7.tgz", + "integrity": "sha512-GWpDIzqS4RGyc0UmeOrPkwS0+0oNOpGFbDW68W701o4IXYkTqndXPLtxD8zhl2ZpBsX2J7kMSuyUX4aUKEjjRg==", "dependencies": { - "@welshman/lib": "^0.0.18", - "@welshman/net": "^0.0.23", - "@welshman/util": "^0.0.34", + "@welshman/lib": "~0.0.19", + "@welshman/net": "~0.0.24", + "@welshman/util": "~0.0.36", "nostr-tools": "^2.7.2" }, "peerDependencies": { "nostr-signer-capacitor-plugin": "github:chebizarro/nostr-signer-capacitor-plugin" } }, - "node_modules/@welshman/signer/node_modules/@welshman/lib": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.18.tgz", - "integrity": "sha512-ZFmK7GdUeZp+uwWY0H0/r/4hui/GZ5xlF0FPDKljhXGR/l771F5+lGGbgeeWWFVpRcEbWD54Q4ioQxmQSWb30Q==", - "dependencies": { - "@scure/base": "^1.1.6", - "@types/events": "^3.0.3", - "@types/throttle-debounce": "^5.0.2", - "events": "^3.3.0", - "throttle-debounce": "^5.0.0" - } - }, "node_modules/@welshman/store": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@welshman/store/-/store-0.0.8.tgz", - "integrity": "sha512-A9oIy7qh++kmJAEbSf0gXrncW5M1FMpJiIAzoOX8MEwPb/r06nz7PDs1HyFAV9AXEXRfcceWImDflf8uPYo9NA==", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@welshman/store/-/store-0.0.9.tgz", + "integrity": "sha512-VZfw+oB1LXsFcLYQeKiX8OulPbKT5YXO7eAo8+FEEJoCxVwDXep3JyHhrEFoUrSMKKFZk3pjLp/urYy7ZnMCMQ==", "dependencies": { - "@welshman/lib": "^0.0.18", - "@welshman/util": "^0.0.34", + "@welshman/lib": "~0.0.19", + "@welshman/util": "~0.0.36", "svelte": "^4.2.18" } }, - "node_modules/@welshman/store/node_modules/@welshman/lib": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.18.tgz", - "integrity": "sha512-ZFmK7GdUeZp+uwWY0H0/r/4hui/GZ5xlF0FPDKljhXGR/l771F5+lGGbgeeWWFVpRcEbWD54Q4ioQxmQSWb30Q==", - "dependencies": { - "@scure/base": "^1.1.6", - "@types/events": "^3.0.3", - "@types/throttle-debounce": "^5.0.2", - "events": "^3.3.0", - "throttle-debounce": "^5.0.0" - } - }, "node_modules/@welshman/util": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.34.tgz", - "integrity": "sha512-x1MXvwze1bPCWRrvY6qDyzhG63qSk3t4B5uNc/yNMEeOase/6k4MsqdOuddUqgegjYeDqNDSaQPlFWfP+j/dWA==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@welshman/util/-/util-0.0.36.tgz", + "integrity": "sha512-++9962r6QXg0ZWbzGQpvtIZ+ACTQMYOS6XrxEqzapbZquiol65QodVJeKHzXcA/Wix50Si7FuwlDpb73qAVGJg==", "dependencies": { - "@welshman/lib": "^0.0.18", + "@welshman/lib": "~0.0.19", "nostr-tools": "^2.7.2" } }, - "node_modules/@welshman/util/node_modules/@welshman/lib": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@welshman/lib/-/lib-0.0.18.tgz", - "integrity": "sha512-ZFmK7GdUeZp+uwWY0H0/r/4hui/GZ5xlF0FPDKljhXGR/l771F5+lGGbgeeWWFVpRcEbWD54Q4ioQxmQSWb30Q==", - "dependencies": { - "@scure/base": "^1.1.6", - "@types/events": "^3.0.3", - "@types/throttle-debounce": "^5.0.2", - "events": "^3.3.0", - "throttle-debounce": "^5.0.0" - } - }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", diff --git a/package.json b/package.json index 2a01c0e..f57ce73 100644 --- a/package.json +++ b/package.json @@ -48,13 +48,14 @@ "@tiptap/extension-text": "^2.6.6", "@tiptap/suggestion": "^2.6.4", "@types/throttle-debounce": "^5.0.2", + "@welshman/app": "^0.0.11", "@welshman/content": "^0.0.11", + "@welshman/feeds": "^0.0.19", "@welshman/lib": "^0.0.19", - "@welshman/util": "^0.0.36", - "@welshman/store": "^0.0.9", "@welshman/net": "^0.0.24", "@welshman/signer": "^0.0.7", - "@welshman/app": "^0.0.11", + "@welshman/store": "^0.0.9", + "@welshman/util": "^0.0.36", "daisyui": "^4.12.10", "date-picker-svelte": "^2.13.0", "emoji-picker-element": "^1.22.8", diff --git a/src/app/components/ChatMessage.svelte b/src/app/components/ChatMessage.svelte index aa20a21..d4ec03d 100644 --- a/src/app/components/ChatMessage.svelte +++ b/src/app/components/ChatMessage.svelte @@ -17,8 +17,10 @@ import Icon from "@lib/components/Icon.svelte" import Avatar from "@lib/components/Avatar.svelte" import Content from "@app/components/Content.svelte" + import ProfileDetail from "@app/components/ProfileDetail.svelte" import ChatMessageEmojiButton from "@app/components/ChatMessageEmojiButton.svelte" import {colors, displayReaction} from "@app/state" + import {pushDrawer} from "@app/modal" import {makeDelete, makeReaction, sendWrapped} from "@app/commands" export let event: TrustedEvent @@ -32,6 +34,8 @@ const [colorName, colorValue] = colors[parseInt(hash(event.pubkey)) % colors.length] const ps = derived(publishStatusData, $m => Object.values($m[event.id] || {})) + const showProfile = () => pushDrawer(ProfileDetail, {pubkey: event.pubkey}) + const findStatus = ($ps: PublishStatusData[], statuses: PublishStatus[]) => $ps.find(({status}) => statuses.includes(status)) @@ -53,16 +57,19 @@ class="group chat relative flex w-full flex-col gap-1 p-2 text-left" class:chat-start={event.pubkey !== $pubkey} class:chat-end={event.pubkey === $pubkey}> -
Recent notes
+
+ {#await sleep(3000)}
+