From 2746ec035d7bfdb6115c610e8a377671513936b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Fri, 21 Aug 2026 11:27:03 -0600 Subject: [PATCH] Add media server selection to Nostr settings Also, hide the fallback option when there's no server to fall back to --- app/components/app-menu/settings/nostr.gjs | 75 ++++++++++++++----- app/services/blossom.js | 9 ++- app/services/nostr-data.js | 11 +++ app/services/settings.js | 6 ++ .../app-menu/settings/nostr-test.gjs | 32 ++++++++ 5 files changed, 110 insertions(+), 23 deletions(-) diff --git a/app/components/app-menu/settings/nostr.gjs b/app/components/app-menu/settings/nostr.gjs index 7612f9e..a0b72fc 100644 --- a/app/components/app-menu/settings/nostr.gjs +++ b/app/components/app-menu/settings/nostr.gjs @@ -4,12 +4,14 @@ import { action } from '@ember/object'; import { tracked } from '@glimmer/tracking'; import { service } from '@ember/service'; import { fn } from '@ember/helper'; +import eq from 'ember-truth-helpers/helpers/eq'; import Icon from '#components/icon'; import { excludeRequiredRelays, mergeRequiredRelays, normalizeRelayUrl, } from '../../../utils/nostr'; +import { DEFAULT_BLOSSOM_SERVER } from '../../../services/blossom'; const stripProtocol = (url) => (url ? url.replace(/^wss?:\/\//, '') : ''); @@ -89,6 +91,15 @@ export default class AppMenuSettingsNostr extends Component { }); } + get mediaServerOptions() { + const servers = this.nostrData.blossomServers; + return servers.length ? servers : [DEFAULT_BLOSSOM_SERVER]; + } + + get hasMultipleMediaServers() { + return this.mediaServerOptions.length > 1; + } + @action updateNewReadRelay(event) { this.newReadRelay = event.target.value; @@ -342,31 +353,57 @@ export default class AppMenuSettingsNostr extends Component {
- +
+ {{#if this.hasMultipleMediaServers}} +
+ + +
+ {{/if}} +