Add relay hints when opening file events for download

Pass relay hints from the release event's seen relays when opening
file metadata events (kind 1063) for download. This ensures the
event loader knows where to fetch the file event from.

Also adds relay hints to the ReleaseItem component for both opening
the release detail and the download file.
This commit is contained in:
Claude
2026-01-15 15:17:45 +00:00
parent 67e0da7444
commit 17cfa887fb
2 changed files with 30 additions and 5 deletions

View File

@@ -44,12 +44,19 @@ function ReleaseItem({ release }: { release: NostrEvent }) {
const version = getReleaseVersion(release);
const fileEventId = getReleaseFileEventId(release);
// Get relay hints from the release event
const releaseSeenRelays = getSeenRelays(release);
const relayHints = releaseSeenRelays
? Array.from(releaseSeenRelays).slice(0, 3)
: [];
const handleClick = () => {
addWindow("open", {
pointer: {
kind: release.kind,
pubkey: release.pubkey,
identifier: release.tags.find((t) => t[0] === "d")?.[1] || "",
relays: relayHints,
},
});
};
@@ -57,7 +64,9 @@ function ReleaseItem({ release }: { release: NostrEvent }) {
const handleDownload = (e: React.MouseEvent) => {
e.stopPropagation();
if (fileEventId) {
addWindow("open", { pointer: { id: fileEventId } });
addWindow("open", {
pointer: { id: fileEventId, relays: relayHints },
});
}
};
@@ -231,8 +240,16 @@ export function ZapstoreAppDetailRenderer({
const latestVersion = latestRelease ? getReleaseVersion(latestRelease) : null;
const handleDownloadLatest = () => {
if (latestFileEventId) {
addWindow("open", { pointer: { id: latestFileEventId } });
if (latestFileEventId && latestRelease) {
// Get relay hints from the release event (where we found it)
const releaseSeenRelays = getSeenRelays(latestRelease);
const relayHints = releaseSeenRelays
? Array.from(releaseSeenRelays).slice(0, 3)
: relays.slice(0, 3);
addWindow("open", {
pointer: { id: latestFileEventId, relays: relayHints },
});
}
};

View File

@@ -101,8 +101,16 @@ export function ZapstoreAppRenderer({ event }: BaseEventProps) {
const handleDownload = (e: React.MouseEvent) => {
e.stopPropagation();
if (latestFileEventId) {
addWindow("open", { pointer: { id: latestFileEventId } });
if (latestFileEventId && latestRelease) {
// Get relay hints from the release event (where we found it)
const releaseSeenRelays = getSeenRelays(latestRelease);
const relayHints = releaseSeenRelays
? Array.from(releaseSeenRelays).slice(0, 3)
: relays.slice(0, 3);
addWindow("open", {
pointer: { id: latestFileEventId, relays: relayHints },
});
}
};