From 3c43e1decc7daae22f0982c235a1ef1ad4998c0e Mon Sep 17 00:00:00 2001 From: Mikhail Golovko Date: Tue, 16 Jul 2024 12:39:26 +0300 Subject: [PATCH] IOS-3153 Fixes --- .../Documents/Document/BaseDocument.swift | 17 +++++++++-------- .../MiddlewareEventConverter.swift | 2 +- .../Documents/Events/Model/DocumentUpdate.swift | 5 ++--- .../Models/BaseDocumentProtocol+Home.swift | 10 +--------- 4 files changed, 13 insertions(+), 21 deletions(-) diff --git a/Anytype/Sources/Models/Documents/Document/BaseDocument.swift b/Anytype/Sources/Models/Documents/Document/BaseDocument.swift index a62dc2a044..584e75be92 100644 --- a/Anytype/Sources/Models/Documents/Document/BaseDocument.swift +++ b/Anytype/Sources/Models/Documents/Document/BaseDocument.swift @@ -168,12 +168,11 @@ final class BaseDocument: BaseDocumentProtocol { } } - private func reorderChilder() { + private func makeChildren() -> [BlockInformation] { guard let model = infoContainer.get(id: objectId) else { - return + return children } - let flatten = model.flatChildrenTree(container: infoContainer) - children = flatten + return model.flatChildrenTree(container: infoContainer) } private func triggerSync(updates: [DocumentUpdate]) { @@ -184,8 +183,6 @@ final class BaseDocument: BaseDocumentProtocol { return [.general] case .block(let blockId): return [.block(blockId: blockId)] - case .children(let blockId): - return [.block(blockId: blockId), .children] case .details(let id): return [.details(id: id)] case .unhandled(let blockId): @@ -201,8 +198,12 @@ final class BaseDocument: BaseDocumentProtocol { let relationUpdates = triggerUpdateRelations(updates: updates, permissionsChanged: permissioUpdates.isNotEmpty) docUpdates.append(contentsOf: relationUpdates) - if updates.contains(where: { $0 == .general || $0.isChildren }) { - reorderChilder() + if updates.contains(where: { $0 == .general || $0.isBlock }) { + let newChildren = makeChildren() + if newChildren != children { + children = newChildren + docUpdates.append(.children) + } } if updates.contains(.close) { diff --git a/Anytype/Sources/Models/Documents/Events/EventConverters/MiddlewareEventConverter.swift b/Anytype/Sources/Models/Documents/Events/EventConverters/MiddlewareEventConverter.swift index 710bcaa62b..6272c2849f 100644 --- a/Anytype/Sources/Models/Documents/Events/EventConverters/MiddlewareEventConverter.swift +++ b/Anytype/Sources/Models/Documents/Events/EventConverters/MiddlewareEventConverter.swift @@ -45,7 +45,7 @@ final class MiddlewareEventConverter { case let .blockSetChildrenIds(data): infoContainer .setChildren(ids: data.childrenIds, parentId: data.id) - return .children(blockId: data.id) + return .block(blockId: data.id) case let .blockSetText(newData): return blockSetTextUpdate(newData) case let .blockSetBackgroundColor(data): diff --git a/Anytype/Sources/Models/Documents/Events/Model/DocumentUpdate.swift b/Anytype/Sources/Models/Documents/Events/Model/DocumentUpdate.swift index ba87b7f6a0..81cdb3e92a 100644 --- a/Anytype/Sources/Models/Documents/Events/Model/DocumentUpdate.swift +++ b/Anytype/Sources/Models/Documents/Events/Model/DocumentUpdate.swift @@ -4,7 +4,6 @@ import AnytypeCore enum DocumentUpdate: Hashable { case general case block(blockId: String) - case children(blockId: String) case details(id: String) case unhandled(blockId: String) case relationLinks @@ -13,9 +12,9 @@ enum DocumentUpdate: Hashable { } extension DocumentUpdate { - var isChildren: Bool { + var isBlock: Bool { switch self { - case .children(blockId: _): + case .block(blockId: _): return true default: return false diff --git a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/Models/BaseDocumentProtocol+Home.swift b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/Models/BaseDocumentProtocol+Home.swift index 71cb7c42c3..263def4500 100644 --- a/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/Models/BaseDocumentProtocol+Home.swift +++ b/Anytype/Sources/PresentationLayer/Modules/HomeWidgets/Container/Models/BaseDocumentProtocol+Home.swift @@ -3,15 +3,7 @@ import Services import Combine extension BaseDocumentProtocol { - - var widgetsPublisher: AnyPublisher<[BlockInformation], Never> { - childrenPublisher.map { - $0.filter(\.isWidget) - } - .receiveOnMain() - .eraseToAnyPublisher() - } - + func targetObjectIdByLinkFor(widgetBlockId: String) -> String? { guard let block = infoContainer.get(id: widgetBlockId), let contentId = block.childrenIds.first,