fix: relays tab on profile
This commit is contained in:
@ -1,28 +1,16 @@
|
|||||||
import { useMemo } from "react";
|
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 { useRequestBuilder } from "@snort/system-react";
|
||||||
|
import { parseRelayTag } from "./RelaysFeedFollows";
|
||||||
|
|
||||||
export default function useRelaysFeed(pubkey?: HexKey) {
|
export default function useRelaysFeed(pubkey?: HexKey) {
|
||||||
const sub = useMemo(() => {
|
const sub = useMemo(() => {
|
||||||
if (!pubkey) return null;
|
if (!pubkey) return null;
|
||||||
const b = new RequestBuilder(`relays:${pubkey.slice(0, 12)}`);
|
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;
|
return b;
|
||||||
}, [pubkey]);
|
}, [pubkey]);
|
||||||
|
|
||||||
const relays = useRequestBuilder(ReplaceableNoteStore, sub);
|
const relays = useRequestBuilder(ReplaceableNoteStore, sub);
|
||||||
|
return relays.data?.tags.filter(a => a[0] === "r").map(parseRelayTag) ?? [];
|
||||||
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[];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -27,15 +27,7 @@ export default function useRelaysFeedFollows(pubkeys: HexKey[]): Array<RelayList
|
|||||||
pubkey: ev.pubkey,
|
pubkey: ev.pubkey,
|
||||||
created_at: ev.created_at,
|
created_at: ev.created_at,
|
||||||
relays: ev.tags
|
relays: ev.tags
|
||||||
.map(a => {
|
.map(parseRelayTag)
|
||||||
return {
|
|
||||||
url: sanitizeRelayUrl(a[1]),
|
|
||||||
settings: {
|
|
||||||
read: a[2] === "read" || a[2] === undefined,
|
|
||||||
write: a[2] === "write" || a[2] === undefined,
|
|
||||||
},
|
|
||||||
} as FullRelaySettings;
|
|
||||||
})
|
|
||||||
.filter(a => a.url !== undefined),
|
.filter(a => a.url !== undefined),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@ -47,3 +39,13 @@ export default function useRelaysFeedFollows(pubkeys: HexKey[]): Array<RelayList
|
|||||||
return mapFromRelays(notesRelays);
|
return mapFromRelays(notesRelays);
|
||||||
}, [relays]);
|
}, [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;
|
||||||
|
}
|
Reference in New Issue
Block a user