diff --git a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/HomeWidgetsView.swift b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/HomeWidgetsView.swift index c5cca47b09..4e5c2292a0 100644 --- a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/HomeWidgetsView.swift +++ b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/HomeWidgetsView.swift @@ -56,7 +56,6 @@ private struct HomeWidgetsInternalView: View { private var widgets: some View { ScrollView { VStack(spacing: 0) { - topWidgets blockWidgets objectTypeWidgets AnytypeNavigationSpacer() @@ -66,13 +65,6 @@ private struct HomeWidgetsInternalView: View { } } - @ViewBuilder - private var topWidgets: some View { - if let data = model.chatWidgetData { - SpaceChatWidgetView(data: data) - } - } - @ViewBuilder private var blockWidgets: some View { if model.widgetBlocks.isNotEmpty { diff --git a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/HomeWidgetsViewModel.swift b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/HomeWidgetsViewModel.swift index 989637fdd3..7eb9befd1a 100644 --- a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/HomeWidgetsViewModel.swift +++ b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/HomeWidgetsViewModel.swift @@ -51,7 +51,6 @@ final class HomeWidgetsViewModel { var pinnedSectionIsExpanded: Bool = false var objectTypeSectionIsExpanded: Bool = false var canCreateObjectType: Bool = false - var chatWidgetData: SpaceChatWidgetData? var spaceId: String { info.accountSpaceId } @@ -70,9 +69,8 @@ final class HomeWidgetsViewModel { async let widgetObjectSub: () = startWidgetObjectTask() async let participantTask: () = startParticipantTask() async let objectTypesTask: () = startObjectTypesTask() - async let spaceViewTask: () = startSpaceViewTask() - - _ = await (widgetObjectSub, participantTask, objectTypesTask, spaceViewTask) + + _ = await (widgetObjectSub, participantTask, objectTypesTask) } func onAppear() { @@ -175,10 +173,4 @@ final class HomeWidgetsViewModel { objectTypeWidgets = objectTypes } } - - private func startSpaceViewTask() async { - for await showChat in workspaceStorage.spaceViewPublisher(spaceId: spaceId).map(\.canShowChatWidget).removeDuplicates().values { - chatWidgetData = showChat ? SpaceChatWidgetData(spaceId: spaceId, output: output) : nil - } - } } diff --git a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetData.swift b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetData.swift deleted file mode 100644 index 370361b8d4..0000000000 --- a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetData.swift +++ /dev/null @@ -1,8 +0,0 @@ -import Foundation -import SwiftUI -import Services - -struct SpaceChatWidgetData { - let spaceId: String - let output: (any CommonWidgetModuleOutput)? -} diff --git a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetView.swift b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetView.swift deleted file mode 100644 index f2f0f29f73..0000000000 --- a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetView.swift +++ /dev/null @@ -1,44 +0,0 @@ -import Foundation -import SwiftUI -import AnytypeCore - -struct SpaceChatWidgetView: View { - - @StateObject private var model: SpaceChatWidgetViewModel - - init(data: SpaceChatWidgetData) { - self._model = StateObject(wrappedValue: SpaceChatWidgetViewModel(data: data)) - } - - var body: some View { - LinkWidgetViewContainer( - isExpanded: .constant(false), - dragId: nil, - homeState: .constant(.readwrite), - allowContent: false, - header: { - LinkWidgetDefaultHeader( - title: Loc.chat, - icon: .asset(.X24.chat), - rightAccessory: { - HStack(spacing: 4) { - if model.hasMentions { - MentionBadge(style: model.muted ? .muted : .highlighted) - } - if model.messageCount > 0 { - CounterView(count: model.messageCount, style: model.muted ? .muted : .highlighted) - } - } - }, - onTap: { - model.onHeaderTap() - } - ) - }, - content: { EmptyView() } - ) - .task { - await model.startSubscriptions() - } - } -} diff --git a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetViewModel.swift b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetViewModel.swift deleted file mode 100644 index 6e5982c137..0000000000 --- a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Widgets/SpaceChat/SpaceChatWidgetViewModel.swift +++ /dev/null @@ -1,50 +0,0 @@ -import Foundation -import Combine -import Services -import AnytypeCore - -@MainActor -final class SpaceChatWidgetViewModel: ObservableObject { - - @Injected(\.spaceViewsStorage) - private var workspaceStorage: any SpaceViewsStorageProtocol - @Injected(\.chatMessagesPreviewsStorage) - private var chatMessagesPreviewsStorage: any ChatMessagesPreviewsStorageProtocol - @Injected(\.widgetActionsViewCommonMenuProvider) - private var widgetActionsViewCommonMenuProvider: any WidgetActionsViewCommonMenuProviderProtocol - - private let data: SpaceChatWidgetData - - @Published var hasMentions: Bool = false - @Published var messageCount: Int = 0 - @Published var muted = false - - private weak var output: (any CommonWidgetModuleOutput)? { data.output } - - init(data: SpaceChatWidgetData) { - self.data = data - } - - func onHeaderTap() { - guard let chatId = workspaceStorage.spaceView(spaceId: data.spaceId)?.chatId, chatId.isNotEmpty else { return } - AnytypeAnalytics.instance().logClickWidgetTitle(source: .chat, createType: .manual) - data.output?.onObjectSelected(screenData: .spaceChat(SpaceChatCoordinatorData(spaceId: data.spaceId))) - } - - func startSubscriptions() async { - let spaceId = data.spaceId - let spaceView = workspaceStorage.spaceView(spaceId: spaceId) - muted = FeatureFlags.muteSpacePossibility && !(spaceView?.pushNotificationMode.isUnmutedAll ?? true) - - let chatId = spaceView?.chatId - let sequence = (await chatMessagesPreviewsStorage.previewsSequence) - .compactMap { $0.first { $0.spaceId == spaceId && $0.chatId == chatId }} - .removeDuplicates() - .throttle(milliseconds: 300) - - for await counters in sequence { - messageCount = counters.unreadCounter - hasMentions = counters.mentionCounter > 0 - } - } -} diff --git a/Anytype/Sources/ServiceLayer/SpaceStorage/Models/SpaceView.swift b/Anytype/Sources/ServiceLayer/SpaceStorage/Models/SpaceView.swift index cbee684d9f..62a93d3250 100644 --- a/Anytype/Sources/ServiceLayer/SpaceStorage/Models/SpaceView.swift +++ b/Anytype/Sources/ServiceLayer/SpaceStorage/Models/SpaceView.swift @@ -103,11 +103,7 @@ extension SpaceView { var canAddChatWidget: Bool { !initialScreenIsChat && isShared && hasChat } - - var canShowChatWidget: Bool { - !initialScreenIsChat && hasChat - } - + var hasChat: Bool { chatId.isNotEmpty }