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 e18b323e77..74fba744b0 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 @@ -34,7 +34,6 @@ import com.anytypeio.anytype.presentation.widgets.Widget.Source.Companion.WIDGET import com.anytypeio.anytype.presentation.widgets.WidgetView import com.anytypeio.anytype.ui.widgets.types.AddWidgetButton import com.anytypeio.anytype.ui.widgets.types.BinWidgetCard -import com.anytypeio.anytype.ui.widgets.types.SpaceChatWidgetCard import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyListState @@ -50,7 +49,6 @@ fun WidgetsScreen( val hapticFeedback = rememberReorderHapticFeedback() val mode = viewModel.mode.collectAsState().value - val chatWidget = viewModel.chatView.collectAsState().value val pinnedWidgets = viewModel.pinnedViews.collectAsState().value val typeWidgets = viewModel.typeViews.collectAsState().value val binWidget = viewModel.binView.collectAsState().value @@ -151,31 +149,6 @@ fun WidgetsScreen( modifier = Modifier.fillMaxSize() ) { - // Chat widget - chatWidget?.let { chat -> - if (chat is WidgetView.SpaceChat) { - item { - ReorderableItem( - enabled = false, - state = reorderableState, - key = chat.id, - ) { - SpaceChatWidgetCard( - item = chat, - mode = mode, - unReadMentionCount = chat.unreadMentionCount, - unReadMessageCount = chat.unreadMessageCount, - isMuted = chat.isMuted, - onWidgetClicked = viewModel::onWidgetChatClicked, - onDropDownMenuAction = { action -> - viewModel.onDropDownMenuAction(chat.id, action) - } - ) - } - } - } - } - // Only show pinned section header if there are items or section is collapsed if (shouldShowPinnedHeader) { item { 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 0269d1436c..a2d7191e25 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 @@ -268,7 +268,6 @@ class HomeScreenViewModel( private val treeWidgetBranchStateHolder = TreeWidgetBranchStateHolder() // Separate StateFlows for different widget sections - private val chatWidget = MutableStateFlow(null) private val pinnedWidgets = MutableStateFlow>(emptyList()) private val typeWidgets = MutableStateFlow>(emptyList()) private val binWidget = MutableStateFlow(null) @@ -325,23 +324,6 @@ class HomeScreenViewModel( initialValue = emptyList() ) - // Exposed flow for space chat widget - @OptIn(ExperimentalCoroutinesApi::class) - val chatView: StateFlow = chatWidget - .flatMapLatest { widget -> - if (widget == null) { - flowOf(null) - } else { - // Create container for chat widget - widgetContainerDelegate.createContainer(widget, emptyList())?.view ?: flowOf(null) - } - } - .stateIn( - scope = viewModelScope, - started = SharingStarted.Eagerly, - initialValue = null - ) - // Exposed flow for bin widget @OptIn(ExperimentalCoroutinesApi::class) val binView: StateFlow = binWidget @@ -786,10 +768,9 @@ class HomeScreenViewModel( } }.collect { sections -> if (sections != null) { - val totalWidgets = (if (sections.chatWidget != null) 1 else 0) + sections.pinnedWidgets.size + sections.typeWidgets.size + (if (sections.binWidget != null) 1 else 0) - Timber.d("Emitting widget sections: chat=${sections.chatWidget != null}, pinned=${sections.pinnedWidgets.size}, types=${sections.typeWidgets.size}, bin=${sections.binWidget != null}, total=$totalWidgets") + val totalWidgets = sections.pinnedWidgets.size + sections.typeWidgets.size + (if (sections.binWidget != null) 1 else 0) + Timber.d("Emitting widget sections: pinned=${sections.pinnedWidgets.size}, types=${sections.typeWidgets.size}, bin=${sections.binWidget != null}, total=$totalWidgets") - chatWidget.value = sections.chatWidget pinnedWidgets.value = sections.pinnedWidgets // Check event lock before updating type widgets to prevent race conditions during DnD @@ -801,7 +782,6 @@ class HomeScreenViewModel( binWidget.value = sections.binWidget } else { - chatWidget.value = null pinnedWidgets.value = emptyList() // Check event lock before clearing type widgets diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/Widget.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/Widget.kt index 8120a1b4c3..4679275373 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/Widget.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/widgets/Widget.kt @@ -391,13 +391,11 @@ data class WidgetUiParams( /** * Result of building widgets, separated into sections. * - * @property chatWidget The space chat widget, displayed separately at the top (for shared spaces) * @property pinnedWidgets Widgets from the pinned section (user-arranged widgets) * @property typeWidgets Widgets from the object type section * @property binWidget The bin widget, displayed separately at the bottom */ data class WidgetSections( - val chatWidget: Widget.Chat? = null, val pinnedWidgets: List, val typeWidgets: List, val binWidget: Widget.Bin? = null @@ -412,12 +410,6 @@ suspend fun buildWidgetSections( ): WidgetSections { val currentCollapsedSections = params.collapsedSections - // Build space chat widget (displayed separately at top for shared spaces) - val chatWidget = buildChatWidget( - spaceView = spaceView, - state = state - ) - // Build pinned section val pinnedWidgets = buildPinnedSection( state = state, @@ -442,7 +434,6 @@ suspend fun buildWidgetSections( ) return WidgetSections( - chatWidget = chatWidget, pinnedWidgets = pinnedWidgets, typeWidgets = typeWidgets, binWidget = binWidget