From ed61081b0130965972f83668312701a561d95821 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 27 Jul 2026 15:21:39 -0700 Subject: [PATCH] Fix key backup gating, mention alerts toggle, and silent load failures --- src/app/components/ContentMinimal.svelte | 10 ++++++--- src/app/components/KeyDownload.svelte | 11 ++++------ src/app/components/ProfilePage.svelte | 8 ++------ src/app/components/RoomDetail.svelte | 26 +++++++++++------------- src/app/components/SpaceSearch.svelte | 14 ++++++++----- src/routes/people/[npub]/+page.svelte | 6 ++++-- src/routes/settings/alerts/+page.svelte | 2 +- 7 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/app/components/ContentMinimal.svelte b/src/app/components/ContentMinimal.svelte index 428501a6..d9e13dfb 100644 --- a/src/app/components/ContentMinimal.svelte +++ b/src/app/components/ContentMinimal.svelte @@ -63,12 +63,16 @@ const isQuote = (p: Parsed) => isEvent(p) || isAddress(p) + let warningDismissed = $state(false) + const ignoreWarning = () => { - warning = undefined + warningDismissed = true } - let warning = $state( - $userSettingsValues.hide_sensitive && event.tags.find(nthEq(0, "content-warning"))?.[1], + const warning = $derived( + warningDismissed + ? undefined + : $userSettingsValues.hide_sensitive && event.tags.find(nthEq(0, "content-warning"))?.[1], ) const dropWhile = (f: (x: T) => boolean, xs: Iterable) => { diff --git a/src/app/components/KeyDownload.svelte b/src/app/components/KeyDownload.svelte index 3644cbac..a9909f7b 100644 --- a/src/app/components/KeyDownload.svelte +++ b/src/app/components/KeyDownload.svelte @@ -4,6 +4,7 @@ import {encrypt} from "nostr-tools/nip49" import {hexToBytes} from "@welshman/lib" import {preventDefault, downloadText} from "@lib/html" + import {errorMessage} from "@lib/util" import Key from "@assets/icons/key-minimalistic.svg?dataurl" import ArrowDown from "@assets/icons/arrow-down.svg?dataurl" import AltArrowLeft from "@assets/icons/alt-arrow-left.svg?dataurl" @@ -94,19 +95,15 @@ try { await downloadText("Nostr Secret Key.txt", cleanupCopy(instructions)) + + didDownload = true } catch (e) { // Dismissing the native share sheet rejects with "Share canceled" — leave // the flow gated so the user can try again rather than showing an error. - if ( - !String((e as any)?.message || e) - .toLowerCase() - .includes("cancel") - ) { + if (!errorMessage(e).toLowerCase().includes("cancel")) { pushToast({theme: "error", message: "We couldn't save your key. Please try again."}) } } - - didDownload = true } const onPasswordChange = () => { diff --git a/src/app/components/ProfilePage.svelte b/src/app/components/ProfilePage.svelte index a1d98ab7..2b308846 100644 --- a/src/app/components/ProfilePage.svelte +++ b/src/app/components/ProfilePage.svelte @@ -22,6 +22,7 @@ import Link from "@lib/components/Link.svelte" import Button from "@lib/components/Button.svelte" import Spinner from "@lib/components/Spinner.svelte" + import ProfileAbout from "@app/components/ProfileAbout.svelte" import ProfileCircle from "@app/components/ProfileCircle.svelte" import ProfileTrust from "@app/components/ProfileTrust.svelte" import ProfileSharedSpaces from "@app/components/ProfileSharedSpaces.svelte" @@ -29,7 +30,6 @@ import ProfileEdit from "@app/components/ProfileEdit.svelte" import ProfileMenu from "@app/components/ProfileMenu.svelte" import WotScore from "@app/components/WotScore.svelte" - import Content from "@app/components/Content.svelte" import {updateProfile} from "@app/profiles" import {compressFileForUpload, uploadFile} from "@app/uploads" import {pushModal} from "@app/modal" @@ -201,11 +201,7 @@ {/if} {#if $profile?.about} - + {/if} diff --git a/src/app/components/RoomDetail.svelte b/src/app/components/RoomDetail.svelte index 3f0c8133..4e74a804 100644 --- a/src/app/components/RoomDetail.svelte +++ b/src/app/components/RoomDetail.svelte @@ -118,8 +118,8 @@ {/if} - {#if $members !== undefined && $members.length > 0} -
+
+ {#if $members.length > 0}
Members: @@ -128,18 +128,16 @@
- {#if $userIsAdmin} - - {/if} -
- {:else if $members === undefined} -
- Member list not available from this relay -
- {/if} + {:else} + No member list is available for this room. + {/if} + {#if $userIsAdmin} + + {/if} +
Room Settings
diff --git a/src/app/components/SpaceSearch.svelte b/src/app/components/SpaceSearch.svelte index da9a30f7..7ac9f4d9 100644 --- a/src/app/components/SpaceSearch.svelte +++ b/src/app/components/SpaceSearch.svelte @@ -22,6 +22,7 @@ import {CONTENT_KINDS} from "@app/content" import {deriveEventsForUrlDesc} from "@app/repository" import {popModal} from "@app/modal" + import {pushToast} from "@app/toast" import {goToEvent} from "@app/routes" type Props = { @@ -59,13 +60,16 @@ results = sortEventsDesc(uniqBy((e: TrustedEvent) => e.id, [...events, ...results])) } catch (error) { - // Ignore aborts from superseded searches; surface anything else - if (!(error instanceof DOMException && error.name === "AbortError")) { - throw error + // Superseded searches abort; the search that replaced this one owns loading from here + if (error instanceof DOMException && error.name === "AbortError") { + return } - } finally { - loading = false + + console.error(error) + pushToast({theme: "error", message: "Something went wrong while searching."}) } + + loading = false }) const onInput = () => { diff --git a/src/routes/people/[npub]/+page.svelte b/src/routes/people/[npub]/+page.svelte index ab90aaa2..ed5bb6d1 100644 --- a/src/routes/people/[npub]/+page.svelte +++ b/src/routes/people/[npub]/+page.svelte @@ -21,6 +21,7 @@ import PageContent from "@lib/components/PageContent.svelte" import ProfilePage from "@app/components/ProfilePage.svelte" import {loadGroupList} from "@app/groups" + import {pushToast} from "@app/toast" const {npub} = $page.params as MakeNonOptional @@ -58,8 +59,9 @@ relays: Router.get().FromPubkeys([pubkey]).getUrls(), filters, }) - } catch { - goto("/people", {replaceState: true}) + } catch (e) { + console.error(e) + pushToast({theme: "error", message: "Some of this profile could not be loaded."}) } }) diff --git a/src/routes/settings/alerts/+page.svelte b/src/routes/settings/alerts/+page.svelte index b1db36fa..42a0097e 100644 --- a/src/routes/settings/alerts/+page.svelte +++ b/src/routes/settings/alerts/+page.svelte @@ -115,7 +115,7 @@

Always notify me when mentioned

{/snippet} {#snippet input()} - + {/snippet}