From 4b5405c6b7946d2935d3a1539a198cec6a4654d1 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sat, 28 Mar 2026 20:21:57 -0400 Subject: [PATCH] Dynamically adjust the preferred server to the first one when the list changes and the current default is not in the list of servers. --- .../amethyst/model/nipB7Blossom/BlossomServerListState.kt | 5 +++++ .../ui/screen/loggedIn/chats/utils/ChatFileUploadDialog.kt | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nipB7Blossom/BlossomServerListState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nipB7Blossom/BlossomServerListState.kt index b2d127f46..a61a1b020 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nipB7Blossom/BlossomServerListState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nipB7Blossom/BlossomServerListState.kt @@ -38,6 +38,7 @@ import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.stateIn @@ -87,6 +88,10 @@ class BlossomServerListState( mergeServerList(blossoms) }.onStart { emit(mergeServerList(flow.value)) + }.onEach { servers -> + if (servers.none { it == settings.defaultFileServer }) { + settings.changeDefaultFileServer(servers.firstOrNull() ?: DEFAULT_MEDIA_SERVERS[0]) + } }.flowOn(Dispatchers.IO) .stateIn( scope, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/ChatFileUploadDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/ChatFileUploadDialog.kt index d1d7e98b8..42dc6d1ed 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/ChatFileUploadDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/ChatFileUploadDialog.kt @@ -207,7 +207,7 @@ private fun ImageVideoPostChat( label = "", placeholder = fileServers - .firstOrNull { it == accountViewModel.account.settings.defaultFileServer } + .firstOrNull { it.baseUrl == accountViewModel.account.settings.defaultFileServer.baseUrl } ?.name ?: fileServers.firstOrNull()?.name ?: DEFAULT_MEDIA_SERVERS[0].name,