mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-1013 Space | Fix | Fixed ui for space image & object unsetting (#3057)
DROID-1013 Space | Fix | Fixed ui for space image & object unsetting
This commit is contained in:
parent
ebdbf1b0b6
commit
f8b964e795
6 changed files with 67 additions and 34 deletions
|
@ -1,7 +1,11 @@
|
|||
package com.anytypeio.anytype.ui.sets
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.core_utils.ext.argBoolean
|
||||
import com.anytypeio.anytype.core_utils.ext.setVisible
|
||||
import com.anytypeio.anytype.di.common.componentManager
|
||||
import com.anytypeio.anytype.presentation.picker.IconPickerViewModel
|
||||
import com.anytypeio.anytype.presentation.editor.picker.ObjectSetIconPickerViewModelFactory
|
||||
|
@ -17,6 +21,14 @@ class ObjectSetIconPickerFragment : IconPickerFragmentBase<Id>() {
|
|||
override val target: Id
|
||||
get() = context
|
||||
|
||||
private val showRemoveButton: Boolean
|
||||
get() = argBoolean(ARG_SHOW_REMOVE_BUTTON)
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
binding.btnRemoveIcon.setVisible(showRemoveButton)
|
||||
}
|
||||
|
||||
override fun injectDependencies() {
|
||||
componentManager().objectSetIconPickerComponent.get(context).inject(this)
|
||||
}
|
||||
|
@ -24,4 +36,6 @@ class ObjectSetIconPickerFragment : IconPickerFragmentBase<Id>() {
|
|||
override fun releaseDependencies() {
|
||||
componentManager().objectSetIconPickerComponent.release(context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const val ARG_SHOW_REMOVE_BUTTON = "arg.show_remove_button"
|
|
@ -24,6 +24,7 @@ import com.anytypeio.anytype.presentation.settings.MainSettingsViewModel
|
|||
import com.anytypeio.anytype.presentation.settings.MainSettingsViewModel.Command
|
||||
import com.anytypeio.anytype.presentation.settings.MainSettingsViewModel.Event
|
||||
import com.anytypeio.anytype.ui.editor.modals.IconPickerFragmentBase.Companion.ARG_CONTEXT_ID_KEY
|
||||
import com.anytypeio.anytype.ui.sets.ARG_SHOW_REMOVE_BUTTON
|
||||
import com.anytypeio.anytype.ui.settings.system.SettingsActivity
|
||||
import com.anytypeio.anytype.ui_settings.main.MainSettingScreen
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
|
@ -133,7 +134,8 @@ class MainSettingFragment : BaseBottomSheetComposeFragment() {
|
|||
is Command.OpenSpaceImageSet -> {
|
||||
safeNavigate(
|
||||
R.id.actionOpenImagePickerScreen, bundleOf(
|
||||
ARG_CONTEXT_ID_KEY to command.id
|
||||
ARG_CONTEXT_ID_KEY to command.id,
|
||||
ARG_SHOW_REMOVE_BUTTON to false
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -107,7 +107,12 @@
|
|||
<dialog
|
||||
android:id="@+id/objectSetIconPickerScreen"
|
||||
android:name="com.anytypeio.anytype.ui.sets.ObjectSetIconPickerFragment"
|
||||
android:label="Object-Set-Icon-Picker-Screen" />
|
||||
android:label="Object-Set-Icon-Picker-Screen">
|
||||
<argument
|
||||
android:name="arg.show_remove_button"
|
||||
android:defaultValue="true"
|
||||
app:argType="boolean"/>
|
||||
</dialog>
|
||||
<dialog
|
||||
android:id="@+id/objectSetCoverScreen"
|
||||
android:name="com.anytypeio.anytype.ui.editor.cover.SelectCoverObjectSetFragment"
|
||||
|
|
|
@ -75,7 +75,6 @@ interface StorelessSubscriptionContainer {
|
|||
ids = targets,
|
||||
keys = keys
|
||||
).results.map {
|
||||
println()
|
||||
SubscriptionObject(it.id, it)
|
||||
}.toMutableList()
|
||||
emitAll(
|
||||
|
|
|
@ -9,16 +9,12 @@ class EventUnsetProcessor : SubscriptionEventProcessor<SubscriptionEvent.Unset>
|
|||
override fun process(
|
||||
event: SubscriptionEvent.Unset,
|
||||
dataItems: MutableList<SubscriptionObject>
|
||||
): MutableList<SubscriptionObject> = with(dataItems) {
|
||||
val item = find { it.id == event.target }?.let {
|
||||
SubscriptionObject(it.id, it.objectWrapper.apply {
|
||||
this?.unset(event.keys)
|
||||
})
|
||||
): MutableList<SubscriptionObject> = dataItems.map {
|
||||
if (it.id == event.target) {
|
||||
SubscriptionObject(it.id, it.objectWrapper?.unset(event.keys))
|
||||
} else {
|
||||
it
|
||||
}
|
||||
if (item != null) {
|
||||
set(indexOf(item), item)
|
||||
}
|
||||
return this
|
||||
}
|
||||
}.toMutableList()
|
||||
|
||||
}
|
|
@ -1,7 +1,9 @@
|
|||
package com.anytypeio.anytype.ui_settings.main
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.padding
|
||||
|
@ -17,7 +19,7 @@ import androidx.compose.material.TextFieldDefaults
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.ExperimentalComposeUiApi
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
|
@ -136,25 +138,30 @@ fun SpaceNameBlock(modifier: Modifier = Modifier) {
|
|||
|
||||
@Composable
|
||||
fun SpaceImageBlock(icon: SpaceIconView, onSpaceIconClick: () -> Unit) {
|
||||
|
||||
val spaceImageModifier = Modifier
|
||||
.size(96.dp)
|
||||
.clip(RoundedCornerShape(8.dp))
|
||||
.noRippleClickable {
|
||||
onSpaceIconClick.invoke()
|
||||
}
|
||||
|
||||
when (icon) {
|
||||
is SpaceIconView.Emoji -> {
|
||||
Image(
|
||||
painter = rememberAsyncImagePainter(
|
||||
model = Emojifier.uri(icon.unicode),
|
||||
error = painterResource(id = R.drawable.ic_home_widget_space)
|
||||
),
|
||||
contentDescription = "Emoji space icon",
|
||||
modifier = spaceImageModifier,
|
||||
contentScale = ContentScale.Crop
|
||||
)
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.size(96.dp)
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.noRippleClickable {
|
||||
onSpaceIconClick.invoke()
|
||||
}
|
||||
.background(color = colorResource(id = R.color.shape_primary))
|
||||
) {
|
||||
Image(
|
||||
painter = rememberAsyncImagePainter(
|
||||
model = Emojifier.uri(icon.unicode),
|
||||
error = painterResource(id = R.drawable.ic_home_widget_space)
|
||||
),
|
||||
contentDescription = "Emoji space icon",
|
||||
modifier = Modifier
|
||||
.align(Alignment.Center)
|
||||
.size(48.dp)
|
||||
.clip(RoundedCornerShape(16.dp)),
|
||||
contentScale = ContentScale.Crop
|
||||
)
|
||||
}
|
||||
}
|
||||
is SpaceIconView.Image -> {
|
||||
Image(
|
||||
|
@ -164,7 +171,12 @@ fun SpaceImageBlock(icon: SpaceIconView, onSpaceIconClick: () -> Unit) {
|
|||
),
|
||||
contentDescription = "Custom image space icon",
|
||||
contentScale = ContentScale.Crop,
|
||||
modifier = spaceImageModifier
|
||||
modifier = Modifier
|
||||
.size(96.dp)
|
||||
.clip(RoundedCornerShape(8.dp))
|
||||
.noRippleClickable {
|
||||
onSpaceIconClick.invoke()
|
||||
}
|
||||
)
|
||||
}
|
||||
else -> {
|
||||
|
@ -172,7 +184,12 @@ fun SpaceImageBlock(icon: SpaceIconView, onSpaceIconClick: () -> Unit) {
|
|||
painter = painterResource(id = R.drawable.ic_home_widget_space),
|
||||
contentDescription = "Placeholder space icon",
|
||||
contentScale = ContentScale.Crop,
|
||||
modifier = spaceImageModifier
|
||||
modifier = Modifier
|
||||
.size(96.dp)
|
||||
.clip(RoundedCornerShape(8.dp))
|
||||
.noRippleClickable {
|
||||
onSpaceIconClick.invoke()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue