diff --git a/app/src/main/java/com/anytypeio/anytype/ui/home/WidgetSection.kt b/app/src/main/java/com/anytypeio/anytype/ui/home/WidgetSection.kt index 090a592299..7f5cb43421 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/home/WidgetSection.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/home/WidgetSection.kt @@ -67,6 +67,7 @@ fun LazyListScope.renderWidgetSection( onWidgetMenuAction: (WidgetId, DropDownMenuAction) -> Unit, onWidgetElementClicked: (WidgetId, ObjectWrapper.Basic) -> Unit, onWidgetSourceClicked: (WidgetId) -> Unit, + onSeeAllClicked: (WidgetId, ViewId?) -> Unit, onWidgetMenuTriggered: (WidgetId) -> Unit, onToggleExpandedWidgetState: (WidgetId) -> Unit, onChangeWidgetView: (WidgetId, ViewId) -> Unit, @@ -249,6 +250,7 @@ fun LazyListScope.renderWidgetSection( onWidgetElementClicked(item.id, obj) }, onWidgetSourceClicked = onWidgetSourceClicked, + onSeeAllClicked = onSeeAllClicked, onWidgetMenuTriggered = onWidgetMenuTriggered, onDropDownMenuAction = { action -> onWidgetMenuAction(item.id, action) @@ -311,6 +313,7 @@ fun LazyListScope.renderWidgetSection( onWidgetElementClicked(item.id, obj) }, onWidgetSourceClicked = onWidgetSourceClicked, + onSeeAllClicked = onSeeAllClicked, onWidgetMenuTriggered = onWidgetMenuTriggered, onDropDownMenuAction = { action -> onWidgetMenuAction(item.id, action) @@ -373,6 +376,7 @@ fun LazyListScope.renderWidgetSection( onWidgetElementClicked(item.id, obj) }, onWidgetSourceClicked = onWidgetSourceClicked, + onSeeAllClicked = onSeeAllClicked, onWidgetMenuTriggered = onWidgetMenuTriggered, onDropDownMenuAction = { action -> onWidgetMenuAction(item.id, action) diff --git a/app/src/main/java/com/anytypeio/anytype/ui/home/WidgetsScreen.kt b/app/src/main/java/com/anytypeio/anytype/ui/home/WidgetsScreen.kt index 897cfe694a..c6070e4ce1 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/home/WidgetsScreen.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/home/WidgetsScreen.kt @@ -179,6 +179,7 @@ fun WidgetsScreen( }, onWidgetElementClicked = viewModel::onWidgetElementClicked, onWidgetSourceClicked = viewModel::onWidgetSourceClicked, + onSeeAllClicked = viewModel::onSeeAllClicked, onWidgetMenuTriggered = viewModel::onWidgetMenuTriggered, onToggleExpandedWidgetState = viewModel::onToggleWidgetExpandedState, onChangeWidgetView = viewModel::onChangeCurrentWidgetView, @@ -215,6 +216,7 @@ fun WidgetsScreen( }, onWidgetElementClicked = viewModel::onWidgetElementClicked, onWidgetSourceClicked = viewModel::onWidgetSourceClicked, + onSeeAllClicked = viewModel::onSeeAllClicked, onWidgetMenuTriggered = viewModel::onWidgetMenuTriggered, onToggleExpandedWidgetState = viewModel::onToggleWidgetExpandedState, onChangeWidgetView = viewModel::onChangeCurrentWidgetView, diff --git a/app/src/main/java/com/anytypeio/anytype/ui/widgets/types/DataViewWidget.kt b/app/src/main/java/com/anytypeio/anytype/ui/widgets/types/DataViewWidget.kt index 832cc19a2c..b5d450ca18 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/widgets/types/DataViewWidget.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/widgets/types/DataViewWidget.kt @@ -80,6 +80,7 @@ fun DataViewListWidgetCard( mode: InteractionMode, onWidgetObjectClicked: (ObjectWrapper.Basic) -> Unit, onWidgetSourceClicked: (WidgetId) -> Unit, + onSeeAllClicked: (WidgetId, ViewId?) -> Unit, onWidgetMenuTriggered: (WidgetId) -> Unit, onDropDownMenuAction: (DropDownMenuAction) -> Unit, onChangeWidgetView: (WidgetId, ViewId) -> Unit, @@ -153,8 +154,9 @@ fun DataViewListWidgetCard( } } if (item.hasMore && item.isExpanded) { + val activeViewId = item.tabs.firstOrNull { it.isSelected }?.id SeeAllButton( - onClick = { onWidgetSourceClicked(item.id) } + onClick = { onSeeAllClicked(item.id, activeViewId) } ) } } else { @@ -179,6 +181,7 @@ fun ChatListWidgetCard( mode: InteractionMode, onWidgetObjectClicked: (ObjectWrapper.Basic) -> Unit, onWidgetSourceClicked: (WidgetId) -> Unit, + onSeeAllClicked: (WidgetId, ViewId?) -> Unit, onWidgetMenuTriggered: (WidgetId) -> Unit, onDropDownMenuAction: (DropDownMenuAction) -> Unit, onChangeWidgetView: (WidgetId, ViewId) -> Unit, @@ -285,8 +288,9 @@ fun ChatListWidgetCard( } } if (item.hasMore && item.isExpanded) { + val activeViewId = item.tabs.firstOrNull { it.isSelected }?.id SeeAllButton( - onClick = { onWidgetSourceClicked(item.id) } + onClick = { onSeeAllClicked(item.id, activeViewId) } ) } } else { @@ -311,6 +315,7 @@ fun GalleryWidgetCard( mode: InteractionMode, onWidgetObjectClicked: (ObjectWrapper.Basic) -> Unit, onWidgetSourceClicked: (WidgetId) -> Unit, + onSeeAllClicked: (WidgetId, ViewId?) -> Unit, onWidgetMenuTriggered: (WidgetId) -> Unit, onDropDownMenuAction: (DropDownMenuAction) -> Unit, onChangeWidgetView: (WidgetId, ViewId) -> Unit, @@ -391,7 +396,8 @@ fun GalleryWidgetCard( ) .clip(RoundedCornerShape(8.dp)) .clickable { - onWidgetSourceClicked(item.id) + val activeViewId = item.tabs.firstOrNull { it.isSelected }?.id + onSeeAllClicked(item.id, activeViewId) } ) { Text( @@ -1031,6 +1037,7 @@ fun DataViewListWidgetCard_Standard_Preview() { mode = InteractionMode.Default, onWidgetObjectClicked = {}, onWidgetSourceClicked = {}, + onSeeAllClicked = { _, _ -> }, onWidgetMenuTriggered = {}, onDropDownMenuAction = {}, onChangeWidgetView = { _, _ -> }, @@ -1081,6 +1088,7 @@ fun DataViewListWidgetCard_Compact_Preview() { mode = InteractionMode.Default, onWidgetObjectClicked = {}, onWidgetSourceClicked = {}, + onSeeAllClicked = { _, _ -> }, onWidgetMenuTriggered = {}, onDropDownMenuAction = {}, onChangeWidgetView = { _, _ -> }, @@ -1110,6 +1118,7 @@ fun DataViewListWidgetCard_Loading_Preview() { mode = InteractionMode.Default, onWidgetObjectClicked = {}, onWidgetSourceClicked = {}, + onSeeAllClicked = { _, _ -> }, onWidgetMenuTriggered = {}, onDropDownMenuAction = {}, onChangeWidgetView = { _, _ -> }, @@ -1139,6 +1148,7 @@ fun DataViewListWidgetCard_Empty_Preview() { mode = InteractionMode.Default, onWidgetObjectClicked = {}, onWidgetSourceClicked = {}, + onSeeAllClicked = { _, _ -> }, onWidgetMenuTriggered = {}, onDropDownMenuAction = {}, onChangeWidgetView = { _, _ -> }, @@ -1174,6 +1184,7 @@ fun DataViewListWidgetCard_Collapsed_Preview() { mode = InteractionMode.Default, onWidgetObjectClicked = {}, onWidgetSourceClicked = {}, + onSeeAllClicked = { _, _ -> }, onWidgetMenuTriggered = {}, onDropDownMenuAction = {}, onChangeWidgetView = { _, _ -> }, @@ -1236,6 +1247,7 @@ fun DataViewListWidgetCard_WithTabs_Preview() { mode = InteractionMode.Default, onWidgetObjectClicked = {}, onWidgetSourceClicked = {}, + onSeeAllClicked = { _, _ -> }, onWidgetMenuTriggered = {}, onDropDownMenuAction = {}, onChangeWidgetView = { _, _ -> }, @@ -1276,6 +1288,7 @@ fun DataViewListWidgetCard_EditMode_Preview() { mode = InteractionMode.Edit, onWidgetObjectClicked = {}, onWidgetSourceClicked = {}, + onSeeAllClicked = { _, _ -> }, onWidgetMenuTriggered = {}, onDropDownMenuAction = {}, onChangeWidgetView = { _, _ -> }, @@ -1319,6 +1332,7 @@ fun DataViewListWidgetCard_Favorites_Preview() { mode = InteractionMode.Default, onWidgetObjectClicked = {}, onWidgetSourceClicked = {}, + onSeeAllClicked = { _, _ -> }, onWidgetMenuTriggered = {}, onDropDownMenuAction = {}, onChangeWidgetView = { _, _ -> }, diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/home/HomeScreenViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/home/HomeScreenViewModel.kt index f72a80dc9b..31f64d2449 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/home/HomeScreenViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/home/HomeScreenViewModel.kt @@ -1283,6 +1283,42 @@ class HomeScreenViewModel( } } + fun onSeeAllClicked(widgetId: Id, viewId: ViewId?) { + Timber.d("onSeeAllClicked: widgetId=$widgetId, viewId=$viewId") + val widget = currentWidgets?.find { it.id == widgetId } ?: return + val source = widget.source + + if (source is Widget.Source.Default) { + if (source.obj.isArchived != true) { + dispatchSelectHomeTabCustomSourceEvent( + widget = widgetId, + source = source + ) + // Check if it's a Set or Collection layout and we have a viewId + val layout = source.obj.layout + if ((layout == ObjectType.Layout.SET || layout == ObjectType.Layout.COLLECTION) && viewId != null) { + viewModelScope.launch { + navigate( + Navigation.OpenSet( + ctx = source.obj.id, + space = vmParams.spaceId.id, + view = viewId + ) + ) + } + } else { + // Fall back to standard navigation without view + proceedWithOpeningObject(source.obj) + } + } else { + sendToast("Open bin to restore your archived object") + } + } else { + // For non-default sources, delegate to standard handler + onWidgetSourceClicked(widgetId) + } + } + fun onBinWidgetClicked() { viewModelScope.launch { navigation(