forked from Kieran/snort
fix: relays tab on profile
This commit is contained in:
parent
d60862da11
commit
b166427f28
@ -1,28 +1,16 @@
|
||||
import { useMemo } from "react";
|
||||
import { HexKey, FullRelaySettings, EventKind, RequestBuilder, ReplaceableNoteStore } from "@snort/system";
|
||||
import { HexKey, EventKind, RequestBuilder, ReplaceableNoteStore } from "@snort/system";
|
||||
import { useRequestBuilder } from "@snort/system-react";
|
||||
import { parseRelayTag } from "./RelaysFeedFollows";
|
||||
|
||||
export default function useRelaysFeed(pubkey?: HexKey) {
|
||||
const sub = useMemo(() => {
|
||||
if (!pubkey) return null;
|
||||
const b = new RequestBuilder(`relays:${pubkey.slice(0, 12)}`);
|
||||
b.withFilter().authors([pubkey]).kinds([EventKind.ContactList]);
|
||||
b.withFilter().authors([pubkey]).kinds([EventKind.Relays]);
|
||||
return b;
|
||||
}, [pubkey]);
|
||||
|
||||
const relays = useRequestBuilder(ReplaceableNoteStore, sub);
|
||||
|
||||
if (!relays.data?.content) {
|
||||
return [] as FullRelaySettings[];
|
||||
}
|
||||
|
||||
try {
|
||||
return Object.entries(JSON.parse(relays.data.content)).map(([url, settings]) => ({
|
||||
url,
|
||||
settings,
|
||||
})) as FullRelaySettings[];
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return [] as FullRelaySettings[];
|
||||
}
|
||||
return relays.data?.tags.filter(a => a[0] === "r").map(parseRelayTag) ?? [];
|
||||
}
|
||||
|
@ -27,15 +27,7 @@ export default function useRelaysFeedFollows(pubkeys: HexKey[]): Array<RelayList
|
||||
pubkey: ev.pubkey,
|
||||
created_at: ev.created_at,
|
||||
relays: ev.tags
|
||||
.map(a => {
|
||||
return {
|
||||
url: sanitizeRelayUrl(a[1]),
|
||||
settings: {
|
||||
read: a[2] === "read" || a[2] === undefined,
|
||||
write: a[2] === "write" || a[2] === undefined,
|
||||
},
|
||||
} as FullRelaySettings;
|
||||
})
|
||||
.map(parseRelayTag)
|
||||
.filter(a => a.url !== undefined),
|
||||
};
|
||||
});
|
||||
@ -47,3 +39,13 @@ export default function useRelaysFeedFollows(pubkeys: HexKey[]): Array<RelayList
|
||||
return mapFromRelays(notesRelays);
|
||||
}, [relays]);
|
||||
}
|
||||
|
||||
export function parseRelayTag(tag: Array<string>) {
|
||||
return {
|
||||
url: sanitizeRelayUrl(tag[1]),
|
||||
settings: {
|
||||
read: tag[2] === "read" || tag[2] === undefined,
|
||||
write: tag[2] === "write" || tag[2] === undefined,
|
||||
},
|
||||
} as FullRelaySettings;
|
||||
}
|
Loading…
Reference in New Issue
Block a user