1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-07 21:37:02 +09:00

DROID-3499 New settings | Enhancement | Add bin widget to settings (#2193)

This commit is contained in:
Evgenii Kozlov 2025-03-26 14:20:47 +01:00 committed by GitHub
parent 9e99769baa
commit 9e809c7b8c
Signed by: github
GPG key ID: B5690EEEBB952194
6 changed files with 55 additions and 0 deletions

View file

@ -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")
}
}
}
}
}

View file

@ -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

View file

@ -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(

View file

@ -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<Id>) : Command()
data object ExitToVault : Command()
data object ShowDeleteSpaceWarning : Command()

View file

@ -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()

View file

@ -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()
}