Await publish when appropriate

This commit is contained in:
Jon Staab
2024-10-17 12:08:19 -07:00
parent 96bc07c739
commit f4db820588
5 changed files with 14 additions and 22 deletions
+6 -6
View File
@@ -126,7 +126,7 @@ export const addSpaceMembership = async (url: string) => {
const list = get(userMembership) || makeList({kind: MEMBERSHIPS}) const list = get(userMembership) || makeList({kind: MEMBERSHIPS})
const event = await addToListPublicly(list, ["r", url]).reconcile(nip44EncryptToSelf) const event = await addToListPublicly(list, ["r", url]).reconcile(nip44EncryptToSelf)
return publishThunk({event, relays: ctx.app.router.WriteRelays().getUrls()}) return publishThunk({event, relays: ctx.app.router.WriteRelays().getUrls()}).result
} }
export const removeSpaceMembership = async (url: string) => { export const removeSpaceMembership = async (url: string) => {
@@ -134,14 +134,14 @@ export const removeSpaceMembership = async (url: string) => {
const pred = (t: string[]) => equals(["r", url], t) || t[2] !== url const pred = (t: string[]) => equals(["r", url], t) || t[2] !== url
const event = await removeFromListByPredicate(list, pred).reconcile(nip44EncryptToSelf) const event = await removeFromListByPredicate(list, pred).reconcile(nip44EncryptToSelf)
return publishThunk({event, relays: ctx.app.router.WriteRelays().getUrls()}) return publishThunk({event, relays: ctx.app.router.WriteRelays().getUrls()}).result
} }
export const addRoomMembership = async (url: string, room: string) => { export const addRoomMembership = async (url: string, room: string) => {
const list = get(userMembership) || makeList({kind: MEMBERSHIPS}) const list = get(userMembership) || makeList({kind: MEMBERSHIPS})
const event = await addToListPublicly(list, tagRoom(room, url)).reconcile(nip44EncryptToSelf) const event = await addToListPublicly(list, tagRoom(room, url)).reconcile(nip44EncryptToSelf)
return publishThunk({event, relays: ctx.app.router.WriteRelays().getUrls()}) return publishThunk({event, relays: ctx.app.router.WriteRelays().getUrls()}).result
} }
export const removeRoomMembership = async (url: string, room: string) => { export const removeRoomMembership = async (url: string, room: string) => {
@@ -149,7 +149,7 @@ export const removeRoomMembership = async (url: string, room: string) => {
const pred = (t: string[]) => equals(tagRoom(room, url), t) const pred = (t: string[]) => equals(tagRoom(room, url), t)
const event = await removeFromListByPredicate(list, pred).reconcile(nip44EncryptToSelf) const event = await removeFromListByPredicate(list, pred).reconcile(nip44EncryptToSelf)
return publishThunk({event, relays: ctx.app.router.WriteRelays().getUrls()}) return publishThunk({event, relays: ctx.app.router.WriteRelays().getUrls()}).result
} }
export const setRelayPolicy = (url: string, read: boolean, write: boolean) => { export const setRelayPolicy = (url: string, read: boolean, write: boolean) => {
@@ -168,7 +168,7 @@ export const setRelayPolicy = (url: string, read: boolean, write: boolean) => {
return publishThunk({ return publishThunk({
event: createEvent(list.kind, {tags}), event: createEvent(list.kind, {tags}),
relays: ctx.app.router.WriteRelays().getUrls(), relays: ctx.app.router.WriteRelays().getUrls(),
}) }).result
} }
export const setInboxRelayPolicy = (url: string, enabled: boolean) => { export const setInboxRelayPolicy = (url: string, enabled: boolean) => {
@@ -185,7 +185,7 @@ export const setInboxRelayPolicy = (url: string, enabled: boolean) => {
return publishThunk({ return publishThunk({
event: createEvent(list.kind, {tags}), event: createEvent(list.kind, {tags}),
relays: ctx.app.router.WriteRelays().getUrls(), relays: ctx.app.router.WriteRelays().getUrls(),
}) }).result
} }
} }
+4 -3
View File
@@ -1,10 +1,10 @@
<script lang="ts"> <script lang="ts">
import {pubkey, publishThunk} from '@welshman/app' import {pubkey} from '@welshman/app'
import Button from "@lib/components/Button.svelte" import Button from "@lib/components/Button.svelte"
import Icon from "@lib/components/Icon.svelte" import Icon from "@lib/components/Icon.svelte"
import Confirm from "@lib/components/Confirm.svelte" import Confirm from "@lib/components/Confirm.svelte"
import EventInfo from "@app/components/EventInfo.svelte" import EventInfo from "@app/components/EventInfo.svelte"
import {makeDelete} from '@app/commands' import {publishDelete} from '@app/commands'
import {pushModal} from '@app/modal' import {pushModal} from '@app/modal'
export let url export let url
@@ -25,7 +25,8 @@
This will send a request to delete this message. This will send a request to delete this message.
Be aware that not all relays may honor this request.`, Be aware that not all relays may honor this request.`,
confirm: async () => { confirm: async () => {
await publishThunk({event: makeDelete({event}), relays: [url]}) await publishDelete({event, relays: [url]})
history.back() history.back()
}, },
}) })
@@ -9,7 +9,7 @@
import Button from "@lib/components/Button.svelte" import Button from "@lib/components/Button.svelte"
import Tippy from "@lib/components/Tippy.svelte" import Tippy from "@lib/components/Tippy.svelte"
import EmojiPicker from "@lib/components/EmojiPicker.svelte" import EmojiPicker from "@lib/components/EmojiPicker.svelte"
import {makeReaction} from "@app/commands" import {makeReaction, sendWrapped} from "@app/commands"
export let event: TrustedEvent export let event: TrustedEvent
export let pubkeys: string[] export let pubkeys: string[]
@@ -18,17 +18,8 @@
const onClick = async (emoji: NativeEmoji) => { const onClick = async (emoji: NativeEmoji) => {
const template = makeReaction({event, content: emoji.unicode}) const template = makeReaction({event, content: emoji.unicode})
const nip59 = Nip59.fromSigner($signer!)
for (const recipient of uniq(pubkeys)) {
const rumor = await nip59.wrap(recipient, template)
publishThunk({
event: rumor.wrap,
relays: ctx.app.router.PublishMessage(recipient).getUrls(),
})
}
sendWrapped({template, pubkeys})
popover.hide() popover.hide()
} }
+1 -1
View File
@@ -18,7 +18,7 @@
const back = () => history.back() const back = () => history.back()
const confirm = async (url: string) => { const confirm = async (url: string) => {
await addSpaceMembership(url).result await addSpaceMembership(url)
goto(makeSpacePath(url), {replaceState: true}) goto(makeSpacePath(url), {replaceState: true})
+1 -1
View File
@@ -13,7 +13,7 @@
const back = () => history.back() const back = () => history.back()
const tryJoin = async () => { const tryJoin = async () => {
await addSpaceMembership(url).result await addSpaceMembership(url)
clearModals() clearModals()
} }