diff --git a/app/src/main/java/com/anytypeio/anytype/ui/settings/space/SpaceSettingsFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/settings/space/SpaceSettingsFragment.kt index 738a463309..22158004b0 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/settings/space/SpaceSettingsFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/settings/space/SpaceSettingsFragment.kt @@ -21,6 +21,7 @@ import com.anytypeio.anytype.core_utils.ext.shareFile import com.anytypeio.anytype.core_utils.ext.toast import com.anytypeio.anytype.core_utils.ui.BaseComposeFragment import com.anytypeio.anytype.di.common.componentManager +import com.anytypeio.anytype.presentation.search.Subscriptions import com.anytypeio.anytype.presentation.spaces.SpaceSettingsViewModel import com.anytypeio.anytype.presentation.spaces.SpaceSettingsViewModel.Command import com.anytypeio.anytype.presentation.util.downloader.UriFileProvider @@ -31,6 +32,7 @@ import com.anytypeio.anytype.ui.objects.types.pickers.ObjectTypeSelectionListene import com.anytypeio.anytype.ui.settings.SpacesStorageFragment import com.anytypeio.anytype.ui.settings.typography import com.anytypeio.anytype.ui.spaces.DeleteSpaceWarning +import com.anytypeio.anytype.ui.widgets.collection.CollectionFragment import com.anytypeio.anytype.ui_settings.space.new_settings.SpaceSettingsContainer import java.io.File import javax.inject.Inject @@ -174,6 +176,19 @@ class SpaceSettingsFragment : BaseComposeFragment(), ObjectTypeSelectionListener Timber.e(it, "Failed to execute nav command: $command") } } + is Command.ManageBin -> { + runCatching { + findNavController().navigate( + R.id.homeScreenWidgets, + CollectionFragment.args( + subscription = Subscriptions.SUBSCRIPTION_ARCHIVED, + space = space + ) + ) + }.onFailure { + Timber.w(it, "Error while opening bin from widgets") + } + } } } } diff --git a/feature-ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/space/new_settings/Items.kt b/feature-ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/space/new_settings/Items.kt index c155b4f9c6..96b29a9a36 100644 --- a/feature-ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/space/new_settings/Items.kt +++ b/feature-ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/space/new_settings/Items.kt @@ -45,6 +45,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.anytypeio.anytype.core_models.Wallpaper +import com.anytypeio.anytype.core_ui.common.DefaultPreviews import com.anytypeio.anytype.core_ui.extensions.light import com.anytypeio.anytype.core_ui.features.wallpaper.gradient import com.anytypeio.anytype.core_ui.foundation.Section @@ -245,6 +246,23 @@ fun RemoteStorageItem( ) } +@Composable +fun BinItem( + modifier: Modifier = Modifier +) { + BaseButton( + modifier = modifier, + title = stringResource(id = R.string.bin), + icon = R.drawable.ic_widget_bin + ) +} + +@Composable +@DefaultPreviews +private fun BinItemPreview() { + BinItem() +} + @Composable fun DeleteSpaceItem( modifier: Modifier = Modifier diff --git a/feature-ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/space/new_settings/NewSettings.kt b/feature-ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/space/new_settings/NewSettings.kt index 21c7a9def3..46aec30155 100644 --- a/feature-ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/space/new_settings/NewSettings.kt +++ b/feature-ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/space/new_settings/NewSettings.kt @@ -270,6 +270,18 @@ fun NewSpaceSettingsScreen( } } + is UiSpaceSettingsItem.Bin -> { + item { + BinItem( + modifier = Modifier + .fillMaxWidth() + .animateItem() + .clip(RoundedCornerShape(16.dp)) + .clickable { uiEvent(UiEvent.OnBinClick) } + ) + } + } + is UiSpaceSettingsItem.Section -> { item { SpaceSettingsSection( diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SpaceSettingsViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SpaceSettingsViewModel.kt index f987eb188b..9466be7b83 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SpaceSettingsViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SpaceSettingsViewModel.kt @@ -206,6 +206,8 @@ class SpaceSettingsViewModel( UiSpaceSettingsItem.Wallpapers(current = wallpaper), UiSpaceSettingsItem.Section.DataManagement, UiSpaceSettingsItem.RemoteStorage, + Spacer(height = 8), + UiSpaceSettingsItem.Bin, UiSpaceSettingsItem.Section.Misc, UiSpaceSettingsItem.SpaceInfo, Spacer(height = 8), @@ -242,6 +244,11 @@ class SpaceSettingsViewModel( commands.emit(Command.ManageRemoteStorage) } } + UiEvent.OnBinClick -> { + viewModelScope.launch { + commands.emit(Command.ManageBin(vmParams.space)) + } + } UiEvent.OnInviteClicked -> { sendToast("Coming soon") } @@ -617,6 +624,7 @@ class SpaceSettingsViewModel( data class ShareSpaceDebug(val filepath: Filepath) : Command() data class SharePrivateSpace(val space: SpaceId) : Command() data class ManageSharedSpace(val space: SpaceId) : Command() + data class ManageBin(val space: SpaceId) : Command() data class SelectDefaultObjectType(val space: SpaceId, val excludedTypeIds: List) : Command() data object ExitToVault : Command() data object ShowDeleteSpaceWarning : Command() diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/UiEvent.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/UiEvent.kt index 55eeda3a7c..90f5264908 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/UiEvent.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/UiEvent.kt @@ -15,6 +15,7 @@ sealed class UiEvent { data object OnDeleteSpaceClicked : UiEvent() data object OnRemoteStorageClick : UiEvent() + data object OnBinClick : UiEvent() data object OnPersonalizationClicked : UiEvent() data object OnInviteClicked : UiEvent() data object OnQrCodeClicked : UiEvent() diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/UiState.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/UiState.kt index 5caee611f2..b24ebbe7f4 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/UiState.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/UiState.kt @@ -50,6 +50,7 @@ sealed class UiSpaceSettingsItem { data class DefaultObjectType(val id: Id?, val name: String, val icon: ObjectIcon) : UiSpaceSettingsItem() data class Wallpapers(val current: Wallpaper?) : UiSpaceSettingsItem() data object RemoteStorage : UiSpaceSettingsItem() + data object Bin : UiSpaceSettingsItem() data object SpaceInfo : UiSpaceSettingsItem() data object DeleteSpace : UiSpaceSettingsItem() } \ No newline at end of file