NCUnifiedSearchController.swift 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. //
  2. // SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
  3. // SPDX-License-Identifier: GPL-3.0-or-later
  4. //
  5. import UIKit
  6. import NextcloudKit
  7. @objcMembers class NCUnifiedSearchController: NSObject {
  8. var account: TalkAccount
  9. var searchTerm: String
  10. var cursor: Int = 0
  11. let limit: Int = 10
  12. var showMore: Bool = false
  13. var entries: [NKSearchEntry] = []
  14. init(account: TalkAccount, searchTerm: String) {
  15. self.account = account
  16. self.searchTerm = searchTerm
  17. }
  18. func searchMessages(completionHandler: @escaping ([NKSearchEntry]?) -> Void) {
  19. NCAPIController.sharedInstance().setupNCCommunication(for: account)
  20. NextcloudKit.shared.searchProvider("talk-message",
  21. account: account.accountId,
  22. term: searchTerm,
  23. limit: limit,
  24. cursor: cursor,
  25. options: NKRequestOptions(),
  26. timeout: 30) { _, searchResult, _, _ in
  27. guard let searchResult = searchResult else {
  28. completionHandler(nil)
  29. return
  30. }
  31. self.entries.append(contentsOf: searchResult.entries)
  32. self.cursor = searchResult.cursor ?? 0
  33. self.showMore = searchResult.entries.count == self.limit
  34. completionHandler(self.entries)
  35. }
  36. }
  37. }