Report first render to main activity within nav hosts.

This commit is contained in:
Alex Hart
2025-10-29 12:56:38 -03:00
committed by jeffrey-signal
parent 5f5e0963e1
commit 24c8501985
2 changed files with 21 additions and 0 deletions

View File

@@ -5,12 +5,16 @@
package org.thoughtcrime.securesms.main package org.thoughtcrime.securesms.main
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
import androidx.navigation.NavGraphBuilder import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.toRoute import androidx.navigation.toRoute
import org.thoughtcrime.securesms.MainNavigator
import org.thoughtcrime.securesms.calls.links.EditCallLinkNameScreen import org.thoughtcrime.securesms.calls.links.EditCallLinkNameScreen
import org.thoughtcrime.securesms.calls.links.details.CallLinkDetailsScreen import org.thoughtcrime.securesms.calls.links.details.CallLinkDetailsScreen
import org.thoughtcrime.securesms.serialization.JsonSerializableNavType import org.thoughtcrime.securesms.serialization.JsonSerializableNavType
@@ -27,6 +31,8 @@ fun NavGraphBuilder.callNavGraphBuilder(navHostController: NavHostController) {
typeOf<CallLinkRoomId>() to JsonSerializableNavType(CallLinkRoomId.serializer()) typeOf<CallLinkRoomId>() to JsonSerializableNavType(CallLinkRoomId.serializer())
) )
) { ) {
informNavigatorWeAreReady()
val route = it.toRoute<MainNavigationDetailLocation.Calls.CallLinks.CallLinkDetails>() val route = it.toRoute<MainNavigationDetailLocation.Calls.CallLinks.CallLinkDetails>()
CallLinkDetailsScreen(roomId = route.callLinkRoomId) CallLinkDetailsScreen(roomId = route.callLinkRoomId)
@@ -37,6 +43,8 @@ fun NavGraphBuilder.callNavGraphBuilder(navHostController: NavHostController) {
typeOf<CallLinkRoomId>() to JsonSerializableNavType(CallLinkRoomId.serializer()) typeOf<CallLinkRoomId>() to JsonSerializableNavType(CallLinkRoomId.serializer())
) )
) { ) {
informNavigatorWeAreReady()
val route = it.toRoute<MainNavigationDetailLocation.Calls.CallLinks.EditCallLinkName>() val route = it.toRoute<MainNavigationDetailLocation.Calls.CallLinks.EditCallLinkName>()
val parent = navHostController.previousBackStackEntry ?: return@composable val parent = navHostController.previousBackStackEntry ?: return@composable
@@ -45,3 +53,11 @@ fun NavGraphBuilder.callNavGraphBuilder(navHostController: NavHostController) {
} }
} }
} }
@Composable
private fun informNavigatorWeAreReady() {
val navigator = LocalContext.current as? MainNavigator.NavigatorProvider
LaunchedEffect(navigator) {
navigator?.onFirstRender()
}
}

View File

@@ -42,6 +42,7 @@ import androidx.navigation.toRoute
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.thoughtcrime.securesms.MainNavigator
import org.thoughtcrime.securesms.conversation.ConversationArgs import org.thoughtcrime.securesms.conversation.ConversationArgs
import org.thoughtcrime.securesms.conversation.ConversationIntents import org.thoughtcrime.securesms.conversation.ConversationIntents
import org.thoughtcrime.securesms.conversation.v2.ConversationFragment import org.thoughtcrime.securesms.conversation.v2.ConversationFragment
@@ -85,6 +86,10 @@ fun NavGraphBuilder.chatNavGraphBuilder(
} }
} }
LaunchedEffect(shouldDisplayFragment) {
(context as? MainNavigator.NavigatorProvider)?.onFirstRender()
}
if (bitmap != null) { if (bitmap != null) {
Image( Image(
bitmap = bitmap, bitmap = bitmap,