diff --git a/app/src/main/java/chat/stoat/api/settings/SyncedSettings.kt b/app/src/main/java/chat/stoat/api/settings/SyncedSettings.kt index 950009ba..82c68872 100644 --- a/app/src/main/java/chat/stoat/api/settings/SyncedSettings.kt +++ b/app/src/main/java/chat/stoat/api/settings/SyncedSettings.kt @@ -10,6 +10,7 @@ import chat.stoat.core.model.schemas.NotificationSettings import chat.stoat.core.model.schemas.OrderingSettings import chat.stoat.core.model.schemas.ReleaseNotesSettings import chat.stoat.core.model.schemas._NotificationSettingsToParse +import kotlinx.coroutines.CompletableDeferred import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.jsonPrimitive import logcat.LogPriority @@ -24,6 +25,10 @@ import logcat.logcat */ object SyncedSettings { + private val _fetchCompleted = CompletableDeferred() + + suspend fun awaitFetched() = _fetchCompleted.await() + private val _ordering = mutableStateOf(OrderingSettings()) private val _android = mutableStateOf( AndroidSpecificSettings( @@ -93,6 +98,8 @@ object SyncedSettings { } } catch (e: Exception) { e.printStackTrace() + } finally { + _fetchCompleted.complete(Unit) } } diff --git a/app/src/main/java/chat/stoat/screens/chat/ChatRouterScreen.kt b/app/src/main/java/chat/stoat/screens/chat/ChatRouterScreen.kt index 5727acd7..93f68688 100644 --- a/app/src/main/java/chat/stoat/screens/chat/ChatRouterScreen.kt +++ b/app/src/main/java/chat/stoat/screens/chat/ChatRouterScreen.kt @@ -276,6 +276,7 @@ class ChatRouterViewModel( return@launch } + SyncedSettings.awaitFetched() val lastSeenChangelog = SyncedSettings.releaseNotes.lastSeenId if (lastSeenChangelog == null || lastSeenChangelog != latestChangelog.id) { showChangelogScreenForId = latestChangelog.id