IntentHandler.swift 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //
  2. // IntentHandler.swift
  3. // WidgetDashboardIntentHandler
  4. //
  5. // Created by Marino Faggiana on 08/10/22.
  6. // Copyright © 2022 Marino Faggiana. All rights reserved.
  7. //
  8. import Intents
  9. import RealmSwift
  10. class IntentHandler: INExtension, DashboardIntentHandling {
  11. // Application
  12. func provideApplicationsOptionsCollection(for intent: DashboardIntent, with completion: @escaping (INObjectCollection<Applications>?, Error?) -> Void) {
  13. var applications: [Applications] = []
  14. guard let account = NCManageDatabase.shared.getActiveAccount() else {
  15. completion(nil, nil)
  16. return
  17. }
  18. let results = NCManageDatabase.shared.getDashboardWidgetApplications(account: account.account)
  19. for result in results {
  20. let application = Applications(identifier: result.id, display: result.title)
  21. applications.append(application)
  22. }
  23. completion(INObjectCollection(items: applications), nil)
  24. }
  25. func defaultApplications(for intent: DashboardIntent) -> Applications? {
  26. guard let account = NCManageDatabase.shared.getActiveAccount() else {
  27. return nil
  28. }
  29. if let result = NCManageDatabase.shared.getDashboardWidgetApplications(account: account.account).first {
  30. return Applications(identifier: result.id, display: result.title)
  31. }
  32. return nil
  33. }
  34. // Account
  35. func provideAccountsOptionsCollection(for intent: DashboardIntent, with completion: @escaping (INObjectCollection<Accounts>?, Error?) -> Void) {
  36. var accounts: [Accounts] = []
  37. accounts.append(Accounts(identifier: "active", display: NSLocalizedString("_account_active_", comment: "")))
  38. let results = NCManageDatabase.shared.getAllAccount()
  39. for result in results {
  40. let display = (result.alias.isEmpty) ? result.account : result.alias
  41. let account = Accounts(identifier: result.account, display: display)
  42. accounts.append(account)
  43. }
  44. completion(INObjectCollection(items: accounts), nil)
  45. }
  46. func defaultAccounts(for intent: DashboardIntent) -> Accounts? {
  47. if NCManageDatabase.shared.getActiveAccount() == nil {
  48. return nil
  49. } else {
  50. return Accounts(identifier: "active", display: NSLocalizedString("_account_active_", comment: ""))
  51. }
  52. }
  53. }