Browse Source

fix: get user relays

replace getLoggedInUserRelays with getUserRelays as
getLoggedInUserRelays was broken and getUserRelays is more flexible
master
DanConwayDev 2 years ago
parent
commit
2a6ef1fbdc
No known key found for this signature in database
GPG Key ID: 68E15486D73F75E1
  1. 6
      src/lib/components/prs/StatusSelector.svelte
  2. 45
      src/lib/stores/users.ts

6
src/lib/components/prs/StatusSelector.svelte

@ -3,9 +3,8 @@
import { NDKEvent, NDKRelaySet, type NDKTag } from "@nostr-dev-kit/ndk"; import { NDKEvent, NDKRelaySet, type NDKTag } from "@nostr-dev-kit/ndk";
import type { PRStatus } from "./type"; import type { PRStatus } from "./type";
import { selected_pr_full } from "$lib/stores/PR"; import { selected_pr_full } from "$lib/stores/PR";
import { load } from "../../../routes/repo/[repo_id]/+page";
import { patch_kind } from "$lib/kinds"; import { patch_kind } from "$lib/kinds";
import { getLoggedInUserRelays, logged_in_user } from "$lib/stores/users"; import { getUserRelays, logged_in_user } from "$lib/stores/users";
import { selected_repo } from "$lib/stores/repo"; import { selected_repo } from "$lib/stores/repo";
export let status: PRStatus = "Draft"; export let status: PRStatus = "Draft";
@ -21,6 +20,7 @@
} }
async function changeStatus(new_status: PRStatus) { async function changeStatus(new_status: PRStatus) {
if (!$logged_in_user) return;
let event = new NDKEvent(ndk); let event = new NDKEvent(ndk);
event.kind = patch_kind; event.kind = patch_kind;
event.tags.push(["t", new_status]); event.tags.push(["t", new_status]);
@ -34,7 +34,7 @@
alert("failed to sign event"); alert("failed to sign event");
} }
try { try {
let user_relays = await getLoggedInUserRelays(); let user_relays = await getUserRelays($logged_in_user.hexpubkey);
relays = [ relays = [
...relays, ...relays,
...(user_relays.ndk_relays ...(user_relays.ndk_relays

45
src/lib/stores/users.ts

@ -116,7 +116,7 @@ export let getUserRelays = async (hexpubkey: string): Promise<UserRelays> => {
unsubscriber = user_relays[hexpubkey].subscribe(querying_user_relays => { unsubscriber = user_relays[hexpubkey].subscribe(querying_user_relays => {
if (querying_user_relays && !querying_user_relays.loading) { if (querying_user_relays && !querying_user_relays.loading) {
res(querying_user_relays); res(querying_user_relays);
unsubscriber(); if (unsubscriber) unsubscriber();
} }
}); });
} }
@ -125,10 +125,6 @@ export let getUserRelays = async (hexpubkey: string): Promise<UserRelays> => {
loading: true, loading: true,
ndk_relays: undefined, ndk_relays: undefined,
}); });
logged_in_user_relays.set({
loading: true,
ndk_relays: undefined,
});
let relay_list = await ndk.getUser({ hexpubkey }).relayList(); let relay_list = await ndk.getUser({ hexpubkey }).relayList();
let querying_user_relays = { let querying_user_relays = {
loading: false, loading: false,
@ -138,43 +134,4 @@ export let getUserRelays = async (hexpubkey: string): Promise<UserRelays> => {
res(querying_user_relays); res(querying_user_relays);
} }
}); });
};
export let logged_in_user_relays: Writable<undefined | UserRelays> = writable(undefined);
export let getLoggedInUserRelays = async (): Promise<UserRelays> => {
return new Promise(async (res, rej) => {
let user_relays = get(logged_in_user_relays);
if (user_relays) {
if (!user_relays.loading) return res(user_relays);
let unsubscriber = logged_in_user_relays.subscribe(user_relays => {
if (user_relays && !user_relays.loading) {
res(user_relays);
unsubscriber();
}
});
}
else {
let unsubscriber: Unsubscriber;
unsubscriber = logged_in_user.subscribe(async user => {
if (user) {
if (unsubscriber) unsubscriber();
logged_in_user_relays.set({
loading: true,
ndk_relays: undefined,
});
let relay_list = await ndk.getUser({ hexpubkey: user.hexpubkey }).relayList();
let user_relays = {
loading: false,
ndk_relays: relay_list,
};
logged_in_user_relays.set({ ...user_relays });
res(user_relays);
}
});
}
});
}; };
Loading…
Cancel
Save