mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-3362 Widgets | Fix | Add "Plus" button to widgets with "View" layout (#2429)
This commit is contained in:
parent
fdad393eac
commit
fd5fcb50e8
5 changed files with 80 additions and 7 deletions
|
@ -406,7 +406,8 @@ private fun WidgetList(
|
|||
onToggleExpandedWidgetState = onToggleExpandedWidgetState,
|
||||
onObjectCheckboxClicked = onObjectCheckboxClicked,
|
||||
onSeeAllObjectsClicked = onSeeAllObjectsClicked,
|
||||
onWidgetMenuTriggered = onWidgetMenuTriggered
|
||||
onWidgetMenuTriggered = onWidgetMenuTriggered,
|
||||
onCreateElement = onCreateElement
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -691,7 +692,8 @@ private fun GalleryWidgetItem(
|
|||
onChangeWidgetView: (WidgetId, ViewId) -> Unit,
|
||||
onToggleExpandedWidgetState: (WidgetId) -> Unit,
|
||||
onObjectCheckboxClicked: (Id, Boolean) -> Unit,
|
||||
onSeeAllObjectsClicked: (WidgetView.Gallery) -> Unit
|
||||
onSeeAllObjectsClicked: (WidgetView.Gallery) -> Unit,
|
||||
onCreateElement: (WidgetView) -> Unit = {}
|
||||
) {
|
||||
Box(
|
||||
modifier = modifier
|
||||
|
@ -712,7 +714,8 @@ private fun GalleryWidgetItem(
|
|||
mode = mode,
|
||||
onObjectCheckboxClicked = onObjectCheckboxClicked,
|
||||
onSeeAllObjectsClicked = onSeeAllObjectsClicked,
|
||||
onWidgetMenuTriggered = onWidgetMenuTriggered
|
||||
onWidgetMenuTriggered = onWidgetMenuTriggered,
|
||||
onCreateElement = onCreateElement
|
||||
)
|
||||
AnimatedVisibility(
|
||||
visible = mode is InteractionMode.Edit,
|
||||
|
|
|
@ -101,7 +101,6 @@ class HomeScreenFragment : BaseComposeFragment(),
|
|||
): View = ComposeView(requireContext()).apply {
|
||||
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||
setContent {
|
||||
|
||||
MaterialTheme(
|
||||
typography = typography,
|
||||
shapes = MaterialTheme.shapes.copy(medium = RoundedCornerShape(16.dp)),
|
||||
|
|
|
@ -214,7 +214,8 @@ fun GalleryWidgetCard(
|
|||
onChangeWidgetView: (WidgetId, ViewId) -> Unit,
|
||||
onToggleExpandedWidgetState: (WidgetId) -> Unit,
|
||||
onObjectCheckboxClicked: (Id, Boolean) -> Unit,
|
||||
onSeeAllObjectsClicked: (WidgetView.Gallery) -> Unit
|
||||
onSeeAllObjectsClicked: (WidgetView.Gallery) -> Unit,
|
||||
onCreateElement: (WidgetView) -> Unit
|
||||
) {
|
||||
val isCardMenuExpanded = remember {
|
||||
mutableStateOf(false)
|
||||
|
@ -259,7 +260,9 @@ fun GalleryWidgetCard(
|
|||
isInEditMode = mode is InteractionMode.Edit,
|
||||
hasReadOnlyAccess = mode is InteractionMode.ReadOnly,
|
||||
onDropDownMenuAction = onDropDownMenuAction,
|
||||
onWidgetMenuTriggered = { onWidgetMenuTriggered(item.id) }
|
||||
onWidgetMenuTriggered = { onWidgetMenuTriggered(item.id) },
|
||||
canCreate = mode is InteractionMode.Default && item.canCreateObjectOfType,
|
||||
onCreateElement = { onCreateElement(item) },
|
||||
)
|
||||
if (item.tabs.size > 1 && item.isExpanded) {
|
||||
DataViewTabs(
|
||||
|
|
|
@ -2554,6 +2554,55 @@ class HomeScreenViewModel(
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
is WidgetView.Gallery -> {
|
||||
viewModelScope.launch {
|
||||
val source = view.source
|
||||
if (source is Widget.Source.Default) {
|
||||
when (source.obj.layout) {
|
||||
ObjectType.Layout.OBJECT_TYPE -> {
|
||||
val wrapper = ObjectWrapper.Type(source.obj.map)
|
||||
val space = SpaceId(spaceManager.get())
|
||||
val startTime = System.currentTimeMillis()
|
||||
createObject.async(
|
||||
params = CreateObject.Param(
|
||||
space = space,
|
||||
type = TypeKey(wrapper.uniqueKey),
|
||||
prefilled = mapOf(Relations.IS_FAVORITE to true)
|
||||
)
|
||||
).onSuccess { result ->
|
||||
sendAnalyticsObjectCreateEvent(
|
||||
objType = wrapper.uniqueKey,
|
||||
analytics = analytics,
|
||||
route = EventsDictionary.Routes.widget,
|
||||
startTime = startTime,
|
||||
view = null,
|
||||
spaceParams = provideParams(space.id)
|
||||
)
|
||||
proceedWithNavigation(result.obj.navigation())
|
||||
}
|
||||
}
|
||||
ObjectType.Layout.COLLECTION -> {
|
||||
onCreateDataViewObject(
|
||||
widget = view.id,
|
||||
view = null,
|
||||
navigate = true
|
||||
)
|
||||
}
|
||||
ObjectType.Layout.SET -> {
|
||||
onCreateDataViewObject(
|
||||
widget = view.id,
|
||||
view = null,
|
||||
navigate = true
|
||||
)
|
||||
}
|
||||
else -> {
|
||||
Timber.w("Unexpected source layout: ${source.obj.layout}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else -> {
|
||||
Timber.w("Unexpected widget type: ${view::class.java.simpleName}")
|
||||
|
|
|
@ -119,7 +119,26 @@ sealed class WidgetView {
|
|||
val isExpanded: Boolean,
|
||||
val showIcon: Boolean = false,
|
||||
val showCover: Boolean = false
|
||||
) : WidgetView(), Draggable
|
||||
) : WidgetView(), Draggable {
|
||||
val canCreateObjectOfType : Boolean get() {
|
||||
return when(source) {
|
||||
Widget.Source.Bundled.AllObjects -> false
|
||||
Widget.Source.Bundled.Chat -> false
|
||||
Widget.Source.Bundled.Bin -> false
|
||||
Widget.Source.Bundled.Favorites -> true
|
||||
Widget.Source.Bundled.Recent -> false
|
||||
Widget.Source.Bundled.RecentLocal -> false
|
||||
is Widget.Source.Default -> {
|
||||
if (source.obj.layout == ObjectType.Layout.OBJECT_TYPE) {
|
||||
val wrapper = ObjectWrapper.Type(source.obj.map)
|
||||
SupportedLayouts.createObjectLayouts.contains(wrapper.recommendedLayout)
|
||||
} else {
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class ListOfObjects(
|
||||
override val id: Id,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue