From f5df8dcad9ac5b6b3a2109adb4da2ead6c1995d5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 30 Sep 2025 12:15:25 +0200 Subject: [PATCH] Remove Progress from splashscreen to follow design requirements. --- .../android/appnav/LoggedInFlowNode.kt | 4 ++-- .../io/element/android/appnav/RootFlowNode.kt | 6 +++--- .../features/ftue/impl/FtueFlowNode.kt | 4 ++-- .../settings/LockScreenSettingsFlowNode.kt | 4 ++-- .../nodes/{LoadingNode.kt => EmptyNode.kt} | 20 ++++++++++--------- 5 files changed, 20 insertions(+), 18 deletions(-) rename libraries/ui-common/src/main/kotlin/io/element/android/libraries/ui/common/nodes/{LoadingNode.kt => EmptyNode.kt} (60%) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index a0622a0766..66df9a6dd5 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -80,7 +80,7 @@ import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.verification.SessionVerificationServiceListener import io.element.android.libraries.matrix.api.verification.VerificationRequest import io.element.android.libraries.push.api.notifications.conversations.NotificationConversationService -import io.element.android.libraries.ui.common.nodes.loadingNode +import io.element.android.libraries.ui.common.nodes.emptyNode import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.first @@ -281,7 +281,7 @@ class LoggedInFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { - NavTarget.Placeholder -> loadingNode(buildContext, showProgressIndicator = false) + NavTarget.Placeholder -> emptyNode(buildContext) NavTarget.LoggedInPermanent -> { val callback = object : LoggedInNode.Callback { override fun navigateToNotificationTroubleshoot() { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index 57aed62911..93df005c76 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -56,7 +56,7 @@ import io.element.android.libraries.oidc.api.OidcAction import io.element.android.libraries.oidc.api.OidcActionFlow import io.element.android.libraries.sessionstorage.api.LoggedInState import io.element.android.libraries.sessionstorage.api.SessionStore -import io.element.android.libraries.ui.common.nodes.loadingNode +import io.element.android.libraries.ui.common.nodes.emptyNode import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -216,7 +216,7 @@ import timber.log.Timber return when (navTarget) { is NavTarget.LoggedInFlow -> { val matrixClient = matrixSessionCache.getOrNull(navTarget.sessionId) - ?: return loadingNode(buildContext, showProgressIndicator = false).also { + ?: return emptyNode(buildContext).also { Timber.w("Couldn't find any session, go through SplashScreen") } val inputs = LoggedInAppScopeFlowNode.Inputs(matrixClient) @@ -249,7 +249,7 @@ import timber.log.Timber ) ).build() } - NavTarget.SplashScreen -> loadingNode(buildContext) + NavTarget.SplashScreen -> emptyNode(buildContext) NavTarget.BugReport -> { val callback = object : BugReportEntryPoint.Callback { override fun onDone() { diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt index 3cc0de7438..6552a3b360 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt @@ -31,7 +31,7 @@ import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.ui.common.nodes.loadingNode +import io.element.android.libraries.ui.common.nodes.emptyNode import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -83,7 +83,7 @@ class FtueFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { NavTarget.Placeholder -> { - loadingNode(buildContext) + emptyNode(buildContext) } is NavTarget.SessionVerification -> { val callback = object : FtueSessionVerificationFlowNode.Callback { diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt index 2dbfcddfbc..01aeaabe89 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt @@ -29,7 +29,7 @@ import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.ui.common.nodes.loadingNode +import io.element.android.libraries.ui.common.nodes.emptyNode import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch import kotlinx.parcelize.Parcelize @@ -95,7 +95,7 @@ class LockScreenSettingsFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { NavTarget.Loading -> { - loadingNode(buildContext, showProgressIndicator = false) + emptyNode(buildContext) } NavTarget.Unlock -> { val callback = object : PinUnlockNode.Callback { diff --git a/libraries/ui-common/src/main/kotlin/io/element/android/libraries/ui/common/nodes/LoadingNode.kt b/libraries/ui-common/src/main/kotlin/io/element/android/libraries/ui/common/nodes/EmptyNode.kt similarity index 60% rename from libraries/ui-common/src/main/kotlin/io/element/android/libraries/ui/common/nodes/LoadingNode.kt rename to libraries/ui-common/src/main/kotlin/io/element/android/libraries/ui/common/nodes/EmptyNode.kt index abc22068af..6f64cf90fb 100644 --- a/libraries/ui-common/src/main/kotlin/io/element/android/libraries/ui/common/nodes/LoadingNode.kt +++ b/libraries/ui-common/src/main/kotlin/io/element/android/libraries/ui/common/nodes/EmptyNode.kt @@ -7,21 +7,23 @@ package io.element.android.libraries.ui.common.nodes +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.ui.Alignment import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.node.node -import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator +import io.element.android.compound.theme.ElementTheme -fun loadingNode( +/** + * Ref: https://www.figma.com/design/0MMNu7cTOzLOlWb7ctTkv3/Element-X?node-id=1518-85323 + */ +fun emptyNode( buildContext: BuildContext, - showProgressIndicator: Boolean = true, ): Node = node(buildContext) { modifier -> - Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { - if (showProgressIndicator) { - CircularProgressIndicator() - } - } + Box( + modifier = modifier + .fillMaxSize() + .background(ElementTheme.colors.bgCanvasDefault), + ) }