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 @@ -24,10 +24,7 @@ import com.wire.android.ui.home.conversations.model.messagetypes.multipart.CellA
import com.wire.kalium.cells.CellsScope
import com.wire.kalium.cells.domain.CellUploadManager
import com.wire.kalium.cells.domain.usecase.AddAttachmentDraftUseCase
import com.wire.kalium.cells.domain.usecase.CreateFolderUseCase
import com.wire.kalium.cells.domain.usecase.DeleteCellAssetUseCase
import com.wire.kalium.cells.domain.usecase.DownloadCellFileUseCase
import com.wire.kalium.cells.domain.usecase.DownloadCellVersionUseCase
import com.wire.kalium.cells.domain.usecase.GetAllTagsUseCase
import com.wire.kalium.cells.domain.usecase.GetCellFileUseCase
import com.wire.kalium.cells.domain.usecase.GetEditorUrlUseCase
Expand All @@ -47,6 +44,12 @@ import com.wire.kalium.cells.domain.usecase.RenameNodeUseCase
import com.wire.kalium.cells.domain.usecase.RestoreNodeFromRecycleBinUseCase
import com.wire.kalium.cells.domain.usecase.RetryAttachmentUploadUseCase
import com.wire.kalium.cells.domain.usecase.UpdateNodeTagsUseCase
import com.wire.kalium.cells.domain.usecase.create.CreateDocumentFileUseCase
import com.wire.kalium.cells.domain.usecase.create.CreateFolderUseCase
import com.wire.kalium.cells.domain.usecase.create.CreatePresentationFileUseCase
import com.wire.kalium.cells.domain.usecase.create.CreateSpreadsheetFileUseCase
import com.wire.kalium.cells.domain.usecase.download.DownloadCellFileUseCase
import com.wire.kalium.cells.domain.usecase.download.DownloadCellVersionUseCase
import com.wire.kalium.cells.domain.usecase.publiclink.CreatePublicLinkPasswordUseCase
import com.wire.kalium.cells.domain.usecase.publiclink.CreatePublicLinkUseCase
import com.wire.kalium.cells.domain.usecase.publiclink.DeletePublicLinkUseCase
Expand Down Expand Up @@ -142,6 +145,18 @@ class CellsModule {
@Provides
fun provideCreateFolderUseCase(cellsScope: CellsScope): CreateFolderUseCase = cellsScope.createFolderUseCase

@ViewModelScoped
@Provides
fun provideCreateSpreadsheetFileUseCase(cellsScope: CellsScope): CreateSpreadsheetFileUseCase = cellsScope.createSpreadsheetFileUseCase

@ViewModelScoped
@Provides
fun provideCreateDocumentFileUseCase(cellsScope: CellsScope): CreateDocumentFileUseCase = cellsScope.createDocumentFileUseCase

@ViewModelScoped
@Provides
fun provideCreatePresentationFileUseCase(cellsScope: CellsScope): CreatePresentationFileUseCase = cellsScope.createPresentationFileUseCase

@ViewModelScoped
@Provides
fun provideMoveNodeUseCase(cellsScope: CellsScope): MoveNodeUseCase = cellsScope.moveNodeUseCase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import com.ramcosta.composedestinations.spec.NavGraphSpec
import com.wire.android.feature.cells.ui.destinations.AddRemoveTagsScreenDestination
import com.wire.android.feature.cells.ui.destinations.ConversationFilesScreenDestination
import com.wire.android.feature.cells.ui.destinations.ConversationFilesWithSlideInTransitionScreenDestination
import com.wire.android.feature.cells.ui.destinations.CreateFileScreenDestination
import com.wire.android.feature.cells.ui.destinations.CreateFolderScreenDestination
import com.wire.android.feature.cells.ui.destinations.MoveToFolderScreenDestination
import com.wire.android.feature.cells.ui.destinations.PublicLinkExpirationScreenDestination
Expand All @@ -43,6 +44,7 @@ object WireMainNavGraph : NavGraphSpec {
.plus(ConversationFilesScreenDestination)
.plus(ConversationFilesWithSlideInTransitionScreenDestination)
.plus(CreateFolderScreenDestination)
.plus(CreateFileScreenDestination)
.plus(MoveToFolderScreenDestination)
.plus(RecycleBinScreenDestination)
.plus(RenameNodeScreenDestination)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import com.wire.android.feature.cells.ui.edit.OnlineEditor
import com.wire.android.ui.common.multipart.MultipartAttachmentUi
import com.wire.android.ui.common.multipart.toUiModel
import com.wire.android.util.FileManager
import com.wire.kalium.cells.domain.usecase.DownloadCellFileUseCase
import com.wire.kalium.cells.domain.usecase.download.DownloadCellFileUseCase
import com.wire.kalium.cells.domain.usecase.GetEditorUrlUseCase
import com.wire.kalium.common.functional.onSuccess
import com.wire.kalium.logic.data.asset.AssetTransferStatus
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import com.wire.android.framework.FakeKaliumFileSystem
import com.wire.android.ui.common.multipart.AssetSource
import com.wire.android.ui.common.multipart.MultipartAttachmentUi
import com.wire.android.util.FileManager
import com.wire.kalium.cells.domain.usecase.DownloadCellFileUseCase
import com.wire.kalium.cells.domain.usecase.download.DownloadCellFileUseCase
import com.wire.kalium.cells.domain.usecase.GetEditorUrlUseCase
import com.wire.kalium.common.functional.right
import com.wire.kalium.logic.data.asset.AssetTransferStatus
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import com.wire.android.ui.common.ActionsViewModel
import com.wire.android.ui.common.DEFAULT_SEARCH_QUERY_DEBOUNCE
import com.wire.kalium.cells.domain.model.Node
import com.wire.kalium.cells.domain.usecase.DeleteCellAssetUseCase
import com.wire.kalium.cells.domain.usecase.DownloadCellFileUseCase
import com.wire.kalium.cells.domain.usecase.download.DownloadCellFileUseCase
import com.wire.kalium.cells.domain.usecase.GetAllTagsUseCase
import com.wire.kalium.cells.domain.usecase.GetEditorUrlUseCase
import com.wire.kalium.cells.domain.usecase.GetPaginatedFilesFlowUseCase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,11 @@ import androidx.paging.compose.collectAsLazyPagingItems
import com.wire.android.feature.cells.R
import com.wire.android.feature.cells.domain.model.AttachmentFileType
import com.wire.android.feature.cells.ui.common.Breadcrumbs
import com.wire.android.feature.cells.ui.create.FileTypeBottomSheetDialog
import com.wire.android.feature.cells.ui.create.file.CreateFileScreenNavArgs
import com.wire.android.feature.cells.ui.destinations.AddRemoveTagsScreenDestination
import com.wire.android.feature.cells.ui.destinations.ConversationFilesWithSlideInTransitionScreenDestination
import com.wire.android.feature.cells.ui.destinations.CreateFileScreenDestination
import com.wire.android.feature.cells.ui.destinations.CreateFolderScreenDestination
import com.wire.android.feature.cells.ui.destinations.MoveToFolderScreenDestination
import com.wire.android.feature.cells.ui.destinations.PublicLinkScreenDestination
Expand Down Expand Up @@ -159,6 +162,7 @@ fun ConversationFilesScreenContent(
breadcrumbs: Array<String>? = emptyArray(),
) {
val newActionBottomSheetState = rememberWireModalSheetState<Unit>()
val fileTypeBottomSheetState = rememberWireModalSheetState<Unit>()
val optionsBottomSheetState = rememberWireModalSheetState<Unit>()

val isFabVisible = when {
Expand All @@ -176,6 +180,10 @@ fun ConversationFilesScreenContent(
onCreateFolder = {
newActionBottomSheetState.hide()
navigator.navigate(NavigationCommand(CreateFolderScreenDestination(currentNodeUuid)))
},
onCreateFile = {
newActionBottomSheetState.hide()
fileTypeBottomSheetState.show()
}
)

Expand All @@ -198,6 +206,19 @@ fun ConversationFilesScreenContent(
}
)

FileTypeBottomSheetDialog(
sheetState = fileTypeBottomSheetState,
onDismiss = {
fileTypeBottomSheetState.hide()
},
onItemSelected = {
currentNodeUuid?.let { uuid ->
navigator.navigate(NavigationCommand(CreateFileScreenDestination(CreateFileScreenNavArgs(uuid, it))))
}
fileTypeBottomSheetState.hide()
},
)

CollapsingTopBarScaffold(
modifier = modifier,
topBarHeader = {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
/*
* Wire
* Copyright (C) 2025 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.wire.android.feature.cells.ui.create

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.size
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import com.wire.android.feature.cells.R
import com.wire.android.feature.cells.ui.create.file.FileType
import com.wire.android.ui.common.bottomsheet.MenuBottomSheetItem
import com.wire.android.ui.common.bottomsheet.WireMenuModalSheetContent
import com.wire.android.ui.common.bottomsheet.WireModalSheetLayout
import com.wire.android.ui.common.bottomsheet.WireModalSheetState
import com.wire.android.ui.common.bottomsheet.WireSheetValue
import com.wire.android.ui.common.bottomsheet.rememberWireModalSheetState
import com.wire.android.ui.common.preview.MultipleThemePreviews
import com.wire.android.ui.theme.WireTheme
import com.wire.android.ui.theme.wireDimensions

@Composable
fun FileTypeBottomSheetDialog(
sheetState: WireModalSheetState<Unit>,
onDismiss: () -> Unit,
onItemSelected: (FileType) -> Unit,
) {
WireModalSheetLayout(
onDismissRequest = onDismiss,
sheetState = sheetState
) {
WireMenuModalSheetContent(
menuItems = buildList {
add {
BottomSheetItem(
title = stringResource(R.string.file_type_bottom_sheet_document),
icon = R.drawable.ic_file_type_doc,
onClicked = { onItemSelected(FileType.DOCUMENT) },
)
}
add {
BottomSheetItem(
title = stringResource(R.string.file_type_bottom_sheet_spreadsheet),
icon = R.drawable.ic_file_type_spreadsheet,
onClicked = { onItemSelected(FileType.SPREADSHEET) },
)
}
add {
BottomSheetItem(
title = stringResource(R.string.file_type_bottom_sheet_presentation),
icon = R.drawable.ic_file_type_presentation,
onClicked = { onItemSelected(FileType.PRESENTATION) },
)
}
}
)
}
}

@Composable
private fun BottomSheetItem(
title: String,
icon: Int = R.drawable.ic_folder,
onClicked: () -> Unit,
) {
MenuBottomSheetItem(
title = title,
onItemClick = onClicked,
leading = {
Image(
painter = painterResource(id = icon),
contentDescription = null,
modifier = Modifier
.size(MaterialTheme.wireDimensions.wireIconButtonSize)
)
},
)
}

@MultipleThemePreviews
@Composable
fun PreviewFileTypeBottomSheetDialog() {
WireTheme {
FileTypeBottomSheetDialog(
sheetState = rememberWireModalSheetState(WireSheetValue.Expanded(value = Unit)),
onDismiss = {},
onItemSelected = {},
)
}
}
Loading
Loading