Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import com.wire.kalium.cells.domain.usecase.GetCellFileUseCase
import com.wire.kalium.cells.domain.usecase.GetEditorUrlUseCase
import com.wire.kalium.cells.domain.usecase.GetFoldersUseCase
import com.wire.kalium.cells.domain.usecase.GetMessageAttachmentUseCase
import com.wire.kalium.cells.domain.usecase.GetOwnersUseCase
import com.wire.kalium.cells.domain.usecase.GetPaginatedFilesFlowUseCase
import com.wire.kalium.cells.domain.usecase.GetPaginatedNodesUseCase
import com.wire.kalium.cells.domain.usecase.GetWireCellConfigurationUseCase
Expand Down Expand Up @@ -197,6 +198,10 @@ class CellsModule {
@Provides
fun provideGetAttachmentUseCase(cellsScope: CellsScope): GetMessageAttachmentUseCase = cellsScope.getMessageAttachmentUseCase

@ViewModelScoped
@Provides
fun provideGetOwnersUseCase(cellsScope: CellsScope): GetOwnersUseCase = cellsScope.getOwnersUseCase

@Provides
fun provideFileNameResolver(): FileNameResolver = FileNameResolver()

Expand Down
114 changes: 62 additions & 52 deletions app/src/main/kotlin/com/wire/android/navigation/MainNavHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@
package com.wire.android.navigation

import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.ExperimentalSharedTransitionApi
import androidx.compose.animation.SharedTransitionLayout
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
Expand All @@ -44,12 +47,13 @@ import com.ramcosta.composedestinations.scope.resultBackNavigator
import com.ramcosta.composedestinations.scope.resultRecipient
import com.ramcosta.composedestinations.spec.Direction
import com.wire.android.feature.sketch.model.DrawingCanvasNavBackArgs
import com.wire.android.navigation.transition.LocalSharedTransitionScope
import com.wire.android.ui.authentication.login.email.LoginEmailViewModel
import com.wire.android.ui.home.conversations.ConversationScreen
import com.wire.android.ui.home.newconversation.NewConversationViewModel
import com.wire.android.ui.userprofile.teammigration.TeamMigrationViewModel

@OptIn(ExperimentalAnimationApi::class)
@OptIn(ExperimentalAnimationApi::class, ExperimentalSharedTransitionApi::class)
@Composable
fun MainNavHost(
navigator: Navigator,
Expand All @@ -58,61 +62,67 @@ fun MainNavHost(
modifier: Modifier = Modifier,
) {
val navHostEngine = rememberWireNavHostEngine(Alignment.Center)
DestinationsNavHost(
modifier = modifier,
navGraph = WireRootGraph,
defaultTransitions = WireRootGraph.defaultTransitions,
engine = navHostEngine,
start = startDestination,
navController = navigator.navController,
dependenciesContainerBuilder = {
// 👇 To make Navigator available to all destinations as a non-navigation parameter
dependency(navigator)
SharedTransitionLayout(modifier = modifier) {
CompositionLocalProvider(LocalSharedTransitionScope provides this) {
DestinationsNavHost(
modifier = Modifier,
navGraph = WireRootGraph,
defaultTransitions = WireRootGraph.defaultTransitions,
engine = navHostEngine,
start = startDestination,
navController = navigator.navController,
dependenciesContainerBuilder = {
// 👇 To make Navigator available to all destinations as a non-navigation parameter
dependency(navigator)

// 👇 To make LoginTypeSelector available to all destinations as a non-navigation parameter if provided
if (loginTypeSelector != null) dependency(loginTypeSelector)
// 👇 To make LoginTypeSelector available to all destinations as a non-navigation parameter if provided
if (loginTypeSelector != null) dependency(loginTypeSelector)

// 👇 To tie NewConversationViewModel to nested NewConversationNavGraph, making it shared between all screens that belong to it
navGraph(NewConversationGraph) {
val parentEntry = remember(navBackStackEntry) {
navController.getBackStackEntry(NewConversationGraph.route)
}
dependency(hiltViewModel<NewConversationViewModel>(parentEntry))
}
// 👇 To tie NewConversationViewModel to nested NewConversationNavGraph,
// making it shared between all screens that belong to it
navGraph(NewConversationGraph) {
val parentEntry = remember(navBackStackEntry) {
navController.getBackStackEntry(NewConversationGraph.route)
}
dependency(hiltViewModel<NewConversationViewModel>(parentEntry))
}

// 👇 To reuse LoginEmailViewModel from NewLoginPasswordScreen on NewLoginVerificationCodeScreen
destination(NewLoginVerificationCodeScreenDestination) {
val loginPasswordEntry = remember(navBackStackEntry) {
navController.getBackStackEntry(NewLoginPasswordScreenDestination.route)
}
dependency(hiltViewModel<LoginEmailViewModel>(loginPasswordEntry))
}
// 👇 To reuse LoginEmailViewModel from NewLoginPasswordScreen on NewLoginVerificationCodeScreen
destination(NewLoginVerificationCodeScreenDestination) {
val loginPasswordEntry = remember(navBackStackEntry) {
navController.getBackStackEntry(NewLoginPasswordScreenDestination.route)
}
dependency(hiltViewModel<LoginEmailViewModel>(loginPasswordEntry))
}

// 👇 To tie TeamMigrationViewModel to PersonalToTeamMigrationNavGraph, making it shared between all screens that belong to it
navGraph(PersonalToTeamMigrationGraph) {
val parentEntry = remember(navBackStackEntry) {
navController.getBackStackEntry(PersonalToTeamMigrationGraph.route)
// 👇 To tie TeamMigrationViewModel to PersonalToTeamMigrationNavGraph,
// making it shared between all screens that belong to it
navGraph(PersonalToTeamMigrationGraph) {
val parentEntry = remember(navBackStackEntry) {
navController.getBackStackEntry(PersonalToTeamMigrationGraph.route)
}
dependency(hiltViewModel<TeamMigrationViewModel>(parentEntry))
}
},
manualComposableCallsBuilder = {
/**
* Keep manual composable calls for cross-module result wiring until we refactor
* those destinations to rely on generated dependencies directly.
*/
composable(ConversationScreenDestination) {
ConversationScreen(
navigator = navigator,
groupDetailsScreenResultRecipient = resultRecipient(groupConversationDetailsNavBackArgsNavType),
mediaGalleryScreenResultRecipient = resultRecipient(mediaGalleryNavBackArgsNavType),
imagePreviewScreenResultRecipient = resultRecipient(imagesPreviewNavBackArgsNavType),
drawingCanvasScreenResultRecipient = resultRecipient<DrawingCanvasScreenDestination, DrawingCanvasNavBackArgs>(
drawingCanvasNavBackArgsNavType
),
resultNavigator = resultBackNavigator(groupConversationDetailsNavBackArgsNavType),
)
}
}
dependency(hiltViewModel<TeamMigrationViewModel>(parentEntry))
}
},
manualComposableCallsBuilder = {
/**
* Keep manual composable calls for cross-module result wiring until we refactor
* those destinations to rely on generated dependencies directly.
*/
composable(ConversationScreenDestination) {
ConversationScreen(
navigator = navigator,
groupDetailsScreenResultRecipient = resultRecipient(groupConversationDetailsNavBackArgsNavType),
mediaGalleryScreenResultRecipient = resultRecipient(mediaGalleryNavBackArgsNavType),
imagePreviewScreenResultRecipient = resultRecipient(imagesPreviewNavBackArgsNavType),
drawingCanvasScreenResultRecipient = resultRecipient<DrawingCanvasScreenDestination, DrawingCanvasNavBackArgs>(
drawingCanvasNavBackArgsNavType
),
resultNavigator = resultBackNavigator(groupConversationDetailsNavBackArgsNavType),
)
}
)
}
)
}
}
16 changes: 8 additions & 8 deletions app/src/main/kotlin/com/wire/android/ui/home/HomeScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

package com.wire.android.ui.home

import com.wire.android.navigation.annotation.app.WireRootDestination
import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.ExperimentalAnimationApi
Expand Down Expand Up @@ -63,6 +62,13 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.compose.LocalLifecycleOwner
import com.ramcosta.composedestinations.DestinationsNavHost
import com.ramcosta.composedestinations.generated.app.destinations.ConversationFoldersScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.ConversationScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.NewConversationSearchPeopleScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.OtherUserProfileScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.SelfUserProfileScreenDestination
import com.ramcosta.composedestinations.generated.app.navgraphs.HomeGraph
import com.ramcosta.composedestinations.generated.app.navgraphs.WireRootGraph
import com.ramcosta.composedestinations.navigation.dependency
import com.ramcosta.composedestinations.result.NavResult
import com.ramcosta.composedestinations.result.ResultRecipient
Expand All @@ -72,10 +78,9 @@ import com.wire.android.navigation.HomeDestination
import com.wire.android.navigation.HomeDestination.FabOptions
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.annotation.app.WireRootDestination
import com.wire.android.navigation.handleNavigation
import com.wire.android.navigation.rememberWireNavHostEngine
import com.ramcosta.composedestinations.generated.app.navgraphs.HomeGraph
import com.ramcosta.composedestinations.generated.app.navgraphs.WireRootGraph
import com.wire.android.ui.analytics.AnalyticsUsageViewModel
import com.wire.android.ui.common.CollapsingTopBarScaffold
import com.wire.android.ui.common.HandleActions
Expand All @@ -85,11 +90,6 @@ import com.wire.android.ui.common.dimensions
import com.wire.android.ui.common.snackbar.LocalSnackbarHostState
import com.wire.android.ui.common.topappbar.search.SearchTopBar
import com.wire.android.ui.common.visbility.rememberVisibilityState
import com.ramcosta.composedestinations.generated.app.destinations.ConversationFoldersScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.ConversationScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.NewConversationSearchPeopleScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.OtherUserProfileScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.SelfUserProfileScreenDestination
import com.wire.android.ui.home.conversations.PermissionPermanentlyDeniedDialogState
import com.wire.android.ui.home.conversations.details.GroupConversationActionType
import com.wire.android.ui.home.conversations.details.GroupConversationDetailsNavBackArgs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
*/
package com.wire.android.ui.home.conversations.channels

import com.wire.android.navigation.annotation.app.WireRootDestination
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.rememberLazyListState
Expand All @@ -27,6 +26,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.wire.android.R
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.annotation.app.WireRootDestination
import com.wire.android.navigation.style.PopUpNavigationAnimation
import com.wire.android.ui.common.rememberTopBarElevationState
import com.wire.android.ui.common.scaffold.WireScaffold
Expand Down Expand Up @@ -69,7 +69,7 @@ private fun Content(
isSearchActive = true,
searchBarHint = stringResource(id = R.string.label_search_public_channels),
searchQueryTextState = searchQueryTextState,
isLoading = false
isLoading = false,
)
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
*/
package com.wire.android.ui.home.conversations.search.messages

import com.wire.android.navigation.annotation.app.WireRootDestination
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.rememberLazyListState
Expand All @@ -31,18 +30,20 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.paging.compose.collectAsLazyPagingItems
import com.ramcosta.composedestinations.generated.app.destinations.ConversationScreenDestination
import com.ramcosta.composedestinations.generated.cells.destinations.SearchScreenDestination
import com.wire.android.R
import com.ramcosta.composedestinations.generated.cells.destinations.ConversationFilesScreenDestination
import com.wire.android.feature.cells.ui.search.SearchNavArgs
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.annotation.app.WireRootDestination
import com.wire.android.navigation.style.PopUpNavigationAnimation
import com.wire.android.ui.common.button.WireSecondaryButton
import com.wire.android.ui.common.dimensions
import com.wire.android.ui.common.scaffold.WireScaffold
import com.wire.android.ui.common.topBarElevation
import com.wire.android.ui.common.topappbar.search.SearchTopBar
import com.ramcosta.composedestinations.generated.app.destinations.ConversationScreenDestination
import com.wire.android.ui.home.conversations.ConversationNavArgs
import com.wire.android.ui.theme.WireTheme
import com.wire.android.ui.theme.wireColorScheme
Expand Down Expand Up @@ -81,10 +82,8 @@ fun SearchConversationMessagesScreen(
onSearchFilesButtonClick = {
navigator.navigate(
NavigationCommand(
ConversationFilesScreenDestination(
conversationId = searchConversationMessagesViewModel.conversationId.toString(),
breadcrumbs = arrayOf(searchConversationMessagesViewModel.groupName),
isSearchByDefaultActive = true
SearchScreenDestination(
SearchNavArgs(conversationId = searchConversationMessagesViewModel.conversationId.toString())
)
)
)
Expand Down Expand Up @@ -117,7 +116,7 @@ fun SearchConversationMessagesResultContent(
searchBarHint = stringResource(id = R.string.label_search_messages),
searchQueryTextState = searchQueryTextState,
onCloseSearchClicked = onCloseSearchClicked,
isLoading = state.isLoading
isLoading = state.isLoading,
)
}
if (isCellsConversation) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@

package com.wire.android.ui.sharing

import com.wire.android.navigation.annotation.app.WireRootDestination
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
Expand Down Expand Up @@ -58,6 +57,9 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.paging.compose.collectAsLazyPagingItems
import com.ramcosta.composedestinations.generated.app.destinations.ConversationScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.NewLoginScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.WelcomeScreenDestination
import com.wire.android.R
import com.wire.android.model.Clickable
import com.wire.android.model.ImageAsset
Expand All @@ -67,6 +69,7 @@ import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.LoginTypeSelector
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.annotation.app.WireRootDestination
import com.wire.android.ui.common.avatar.UserProfileAvatar
import com.wire.android.ui.common.bottomsheet.WireMenuModalSheetContent
import com.wire.android.ui.common.bottomsheet.WireModalSheetLayout
Expand All @@ -83,9 +86,6 @@ import com.wire.android.ui.common.topBarElevation
import com.wire.android.ui.common.topappbar.NavigationIconType
import com.wire.android.ui.common.topappbar.WireCenterAlignedTopAppBar
import com.wire.android.ui.common.topappbar.search.SearchTopBar
import com.ramcosta.composedestinations.generated.app.destinations.ConversationScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.NewLoginScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.WelcomeScreenDestination
import com.wire.android.ui.home.FeatureFlagState
import com.wire.android.ui.home.conversations.AssetTooLargeDialog
import com.wire.android.ui.home.conversations.ConversationNavArgs
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-hu/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -830,6 +830,7 @@
<string name="label_conversation_media">Média</string>
<string name="label_conversation_pictures">Képek</string>
<string name="label_conversation_pictures_empty">Ebben a beszélgetésben még senki nem osztott meg képet 🥲</string>
<string name="label_conversation_files">Fájlok</string>
<string name="label_conversation_files_empty">Ebben a beszégetésben még senki nem osztott meg fájlt 🙀</string>
<!-- Search Contact-->
<string name="label_contacts">Névjegyek</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -618,6 +618,7 @@ Un messaggio eliminato non pu&#242; essere ripristinato.</string>
<string name="label_conversation_media">Multimedia</string>
<string name="label_conversation_pictures">Immagini</string>
<string name="label_conversation_pictures_empty">Nessuno ha ancora condiviso immagini in questa conversazione 🥲</string>
<string name="label_conversation_files">File</string>
<string name="label_conversation_files_empty">Nessuno ha ancora condiviso dei file in questa conversazione 🙀</string>
<!-- Search Contact-->
<string name="label_new_group">Nuovo Gruppo</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -790,6 +790,7 @@ Uma mensagem excluída não pode ser restaurada.</string>
<string name="label_conversation_media">Mídia</string>
<string name="label_conversation_pictures">Imagens</string>
<string name="label_conversation_pictures_empty">Ninguém compartilhou fotos nesta conversa ainda 🥲</string>
<string name="label_conversation_files">Arquivos</string>
<string name="label_conversation_files_empty">Ninguém compartilhou arquivos nesta conversa ainda 🙀</string>
<!-- Search Contact-->
<string name="label_contacts">Contatos</string>
Expand Down
Loading
Loading