Update router methods

This commit is contained in:
Jon Staab
2024-11-12 13:32:54 -08:00
parent d5412811b2
commit 952ebd38bf
5 changed files with 31 additions and 22 deletions
+6 -6
View File
@@ -196,7 +196,7 @@ export const broadcastUserData = async (relays: string[]) => {
export const addSpaceMembership = async (url: string) => { 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)
const relays = uniq([...ctx.app.router.WriteRelays().getUrls(), ...getRelayTagValues(event.tags)]) const relays = uniq([...ctx.app.router.FromUser().getUrls(), ...getRelayTagValues(event.tags)])
return publishThunk({event, relays}).result return publishThunk({event, relays}).result
} }
@@ -205,7 +205,7 @@ export const removeSpaceMembership = async (url: string) => {
const list = get(userMembership) || makeList({kind: MEMBERSHIPS}) const list = get(userMembership) || makeList({kind: MEMBERSHIPS})
const pred = (t: string[]) => t[t[0] === "r" ? 1 : 2] === url const pred = (t: string[]) => t[t[0] === "r" ? 1 : 2] === url
const event = await removeFromListByPredicate(list, pred).reconcile(nip44EncryptToSelf) const event = await removeFromListByPredicate(list, pred).reconcile(nip44EncryptToSelf)
const relays = uniq([...ctx.app.router.WriteRelays().getUrls(), ...getRelayTagValues(event.tags)]) const relays = uniq([...ctx.app.router.FromUser().getUrls(), ...getRelayTagValues(event.tags)])
return publishThunk({event, relays}).result return publishThunk({event, relays}).result
} }
@@ -213,7 +213,7 @@ export const removeSpaceMembership = async (url: string) => {
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)
const relays = uniq([...ctx.app.router.WriteRelays().getUrls(), ...getRelayTagValues(event.tags)]) const relays = uniq([...ctx.app.router.FromUser().getUrls(), ...getRelayTagValues(event.tags)])
return publishThunk({event, relays}).result return publishThunk({event, relays}).result
} }
@@ -222,7 +222,7 @@ export const removeRoomMembership = async (url: string, room: string) => {
const list = get(userMembership) || makeList({kind: MEMBERSHIPS}) const list = get(userMembership) || makeList({kind: MEMBERSHIPS})
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)
const relays = uniq([...ctx.app.router.WriteRelays().getUrls(), ...getRelayTagValues(event.tags)]) const relays = uniq([...ctx.app.router.FromUser().getUrls(), ...getRelayTagValues(event.tags)])
return publishThunk({event, relays}).result return publishThunk({event, relays}).result
} }
@@ -241,7 +241,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.FromUser().getUrls(),
}).result }).result
} }
@@ -258,7 +258,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.FromUser().getUrls(),
}).result }).result
} }
} }
+3 -3
View File
@@ -65,21 +65,21 @@ export const getEditorTags = (editor: Editor) => {
({attrs: {kind, pubkey, identifier, relays = []}}: any) => { ({attrs: {kind, pubkey, identifier, relays = []}}: any) => {
const address = new Address(kind, pubkey, identifier).toString() const address = new Address(kind, pubkey, identifier).toString()
return ["q", address, ctx.app.router.fromRelays(relays).getUrl(), pubkey] return ["q", address, ctx.app.router.FromRelays(relays).getUrl(), pubkey]
}, },
) )
const neventTags = findNodes("nevent", json).map(({attrs: {id, author, relays = []}}: any) => [ const neventTags = findNodes("nevent", json).map(({attrs: {id, author, relays = []}}: any) => [
"q", "q",
id, id,
ctx.app.router.fromRelays(relays).getUrl(), ctx.app.router.FromRelays(relays).getUrl(),
author || "", author || "",
]) ])
const mentionTags = findNodes("nprofile", json).map(({attrs: {pubkey, relays = []}}: any) => [ const mentionTags = findNodes("nprofile", json).map(({attrs: {pubkey, relays = []}}: any) => [
"p", "p",
pubkey, pubkey,
ctx.app.router.fromRelays(relays).getUrl(), ctx.app.router.FromRelays(relays).getUrl(),
"", "",
]) ])
+2 -2
View File
@@ -19,12 +19,12 @@
event: createEvent(SETTINGS, { event: createEvent(SETTINGS, {
content: await $signer!.nip04.encrypt($pubkey!, JSON.stringify(settings)), content: await $signer!.nip04.encrypt($pubkey!, JSON.stringify(settings)),
}), }),
relays: ctx.app.router.WriteRelays().getUrls(), relays: ctx.app.router.FromUser().getUrls(),
}) })
publishThunk({ publishThunk({
event: createEvent(MUTES, {tags: mutedPubkeys.map(tagPubkey)}), event: createEvent(MUTES, {tags: mutedPubkeys.map(tagPubkey)}),
relays: ctx.app.router.WriteRelays().getUrls(), relays: ctx.app.router.FromUser().getUrls(),
}) })
pushToast({message: "Your settings have been saved!"}) pushToast({message: "Your settings have been saved!"})
+1 -1
View File
@@ -48,7 +48,7 @@
} }
const saveEdit = () => { const saveEdit = () => {
const relays = ctx.app.router.WriteRelays().getUrls() const relays = ctx.app.router.FromUser().getUrls()
const template = isPublishedProfile(values) ? editProfile(values) : createProfile(values) const template = isPublishedProfile(values) ? editProfile(values) : createProfile(values)
const event = createEvent(template.kind, template) const event = createEvent(template.kind, template)
+19 -10
View File
@@ -32,8 +32,11 @@
let limit = 5 let limit = 5
let loading = true let loading = true
let element: Element let element: Element
let scroller
onMount(() => { onMount(() => {
let unmounted = false
const ctrl = createFeedController({ const ctrl = createFeedController({
feed, feed,
onExhausted: () => { onExhausted: () => {
@@ -46,20 +49,26 @@
relays: [url], relays: [url],
}) })
const scroller = createScroller({ // Element is frequently not defined. I don't know why
element, setTimeout(() => {
delay: 300, if (!unmounted) {
threshold: 3000, scroller = createScroller({
onScroll: async () => { element,
limit += 5 delay: 300,
threshold: 3000,
onScroll: async () => {
limit += 5
await ctrl.load(5) await ctrl.load(5)
}, },
}) })
}
}, 1000)
return () => { return () => {
unmounted = true
unsub() unsub()
scroller.stop() scroller?.stop()
} }
}) })
</script> </script>