1
0
Fork 0
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:
Allan Quatermain 2023-03-28 18:47:43 +03:00 committed by GitHub
parent ebdbf1b0b6
commit f8b964e795
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 67 additions and 34 deletions

View file

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

View file

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

View file

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

View file

@ -75,7 +75,6 @@ interface StorelessSubscriptionContainer {
ids = targets,
keys = keys
).results.map {
println()
SubscriptionObject(it.id, it)
}.toMutableList()
emitAll(

View file

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

View file

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