// // NCCollectionViewUnifiedSearch.swift // Nextcloud // // Created by Marino Faggiana on 14/03/24. // Copyright © 2024 Marino Faggiana. All rights reserved. // // Author Marino Faggiana // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // import Foundation import UIKit import Queuer import NextcloudKit import RealmSwift class NCCollectionViewUnifiedSearch: ConcurrentOperation, @unchecked Sendable { var collectionViewCommon: NCCollectionViewCommon var metadatas: [tableMetadata] var searchResult: NKSearchResult init(collectionViewCommon: NCCollectionViewCommon, metadatas: [tableMetadata], searchResult: NKSearchResult) { self.collectionViewCommon = collectionViewCommon self.metadatas = metadatas self.searchResult = searchResult } func reloadDataThenPerform(_ closure: @escaping (() -> Void)) { DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { CATransaction.begin() CATransaction.setCompletionBlock(closure) self.collectionViewCommon.collectionView.reloadData() CATransaction.commit() } } override func start() { guard !isCancelled else { return self.finish() } self.collectionViewCommon.dataSource.addSection(metadatas: metadatas, searchResult: searchResult) self.collectionViewCommon.searchResults?.append(self.searchResult) reloadDataThenPerform { self.finish() } } }