From 6722bd8493e0d43ccd4bdac0fc46440783f0ce1a Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Fri, 23 Aug 2024 14:42:50 -0700 Subject: [PATCH] recognize reactions --- src/app/base.ts | 5 +++- src/app/commands.ts | 19 +++++++++--- src/app/components/GroupNote.svelte | 35 +++++++++++++++++++--- src/app/components/SpaceJoin.svelte | 9 ++---- src/app/state.ts | 8 +++-- src/lib/components/SecondaryNavItem.svelte | 4 +-- src/lib/util.ts | 9 ++++++ src/routes/discover/+page.svelte | 4 ++- 8 files changed, 73 insertions(+), 20 deletions(-) diff --git a/src/app/base.ts b/src/app/base.ts index e35a250f..48b8e8e1 100644 --- a/src/app/base.ts +++ b/src/app/base.ts @@ -1,7 +1,7 @@ import {derived} from "svelte/store" import {memoize, assoc} from "@welshman/lib" import type {TrustedEvent, HashedEvent} from "@welshman/util" -import {Repository, createEvent, Relay} from "@welshman/util" +import {Repository, createEvent, Relay, REACTION, ZAP_RESPONSE} from "@welshman/util" import {withGetter} from "@welshman/store" import {NetworkContext, Tracker} from "@welshman/net" import {Nip46Broker, Nip46Signer, Nip07Signer, Nip01Signer} from "@welshman/signer" @@ -12,12 +12,15 @@ export const DEFAULT_RELAYS = [ "wss://groups.fiatjaf.com/", "wss://relay29.galaxoidlabs.com/", "wss://devrelay.highlighter.com/", + "wss://relay.groups.nip29.com/", ] export const INDEXER_RELAYS = ["wss://purplepag.es/", "wss://relay.damus.io/", "wss://nos.lol/"] export const DUFFLEPUD_URL = "https://dufflepud.onrender.com" +export const REACTION_KINDS = [REACTION, ZAP_RESPONSE] + export const repository = new Repository() export const relay = new Relay(repository) diff --git a/src/app/commands.ts b/src/app/commands.ts index f9a96805..25961820 100644 --- a/src/app/commands.ts +++ b/src/app/commands.ts @@ -12,8 +12,11 @@ import { createEvent, displayProfile, } from "@welshman/util" +import {PublishStatus} from "@welshman/net" import {pk, signer, repository, INDEXER_RELAYS} from "@app/base" import { + loadOne, + subscribe, getWriteRelayUrls, loadGroup, loadGroupMembership, @@ -98,9 +101,17 @@ export const addGroupMemberships = (newTags: string[][]) => export const removeGroupMemberships = (noms: string[]) => updateList(GROUPS, (tags: string[][]) => tags.filter(t => !noms.includes(t[1]))) -export const sendJoinRequest = async (nom: string, url: string) => { - const event = createEvent(GROUP_JOIN, {tags: [["h", nom]]}) - const result = await publishThunk(makeThunk({event, relays: [url]})) +export const sendJoinRequest = async (nom: string, url: string): Promise<[boolean, string]> => { + const relays = [url] + const filters = [{kinds: [9000], '#h': [nom], '#p': [pk.get()!], since: now() - 30}] - return result[url] + const event = createEvent(GROUP_JOIN, {tags: [["h", nom]]}) + const statusData = await publishThunk(makeThunk({event, relays})) + const {status, message} = statusData[url] + + if (message.includes('already a member')) return [true, ""] + if (status !== PublishStatus.Success) return [false, message] + if (await loadOne({filters, relays})) return [true, ""] + + return [false, "Your request was not automatically approved, but may be approved manually later. Please try again later or contact the group admin."] } diff --git a/src/app/components/GroupNote.svelte b/src/app/components/GroupNote.svelte index 2a2f2c0b..f4564d9a 100644 --- a/src/app/components/GroupNote.svelte +++ b/src/app/components/GroupNote.svelte @@ -1,13 +1,17 @@ @@ -78,7 +90,10 @@ {/if}
{#if showPubkey} - {$profileDisplay} +
+ {$profileDisplay} + {formatTimestampAsTime(event.created_at)} +
{/if}

{event.content} @@ -98,6 +113,18 @@

+ {#if $reactions.length > 0 || $zaps.length > 0} +
+ {#each groupBy(e => e.content, $reactions).entries() as [content, events]} + + {/each} +
+ {/if}
-

{group.about}

+ {#if group.about} +

{group.about}

+ {/if}