NCCapabilitiesModel.swift 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //
  2. // NCCapabilitiesModel.swift
  3. // Nextcloud
  4. //
  5. // Created by Marino Faggiana on 02/06/24.
  6. // Copyright © 2024 Marino Faggiana. All rights reserved.
  7. //
  8. import Foundation
  9. class NCCapabilitiesModel: ObservableObject, ViewOnAppearHandling {
  10. struct Capability: Identifiable, Hashable {
  11. let id = UUID()
  12. let text: String
  13. let image: UIImage
  14. let resize: Bool
  15. let available: Bool
  16. }
  17. @Published var capabililies: [Capability] = []
  18. @Published var homeServer = ""
  19. let utilityFileSystem = NCUtilityFileSystem()
  20. let utility = NCUtility()
  21. init() {
  22. onViewAppear()
  23. }
  24. /// Triggered when the view appears.
  25. func onViewAppear() {
  26. guard let activeAccount = NCManageDatabase.shared.getActiveAccount() else { return }
  27. var textEditor = false
  28. var onlyofficeEditors = false
  29. capabililies.removeAll()
  30. var image = utility.loadImage(named: "person.fill.badge.plus")
  31. capabililies.append(Capability(text: "File sharing", image: image, resize: false, available: NCGlobal.shared.capabilityFileSharingApiEnabled))
  32. image = utility.loadImage(named: "network")
  33. capabililies.append(Capability(text: "External site", image: image, resize: false, available: NCGlobal.shared.capabilityExternalSites))
  34. image = utility.loadImage(named: "lock")
  35. capabililies.append(Capability(text: "End-to-End Encryption", image: image, resize: false, available: NCGlobal.shared.capabilityE2EEEnabled))
  36. image = utility.loadImage(named: "bolt")
  37. capabililies.append(Capability(text: "Activity", image: image, resize: false, available: !NCGlobal.shared.capabilityActivity.isEmpty))
  38. image = utility.loadImage(named: "bell")
  39. capabililies.append(Capability(text: "Notification", image: image, resize: false, available: !NCGlobal.shared.capabilityNotification.isEmpty))
  40. image = utility.loadImage(named: "trash")
  41. capabililies.append(Capability(text: "Deleted files", image: image, resize: false, available: NCGlobal.shared.capabilityFilesUndelete))
  42. if let editors = NCManageDatabase.shared.getDirectEditingEditors(account: activeAccount.account) {
  43. for editor in editors {
  44. if editor.editor == NCGlobal.shared.editorText {
  45. textEditor = true
  46. } else if editor.editor == NCGlobal.shared.editorOnlyoffice {
  47. onlyofficeEditors = true
  48. }
  49. }
  50. }
  51. capabililies.append(Capability(text: "Text", image: utility.loadImage(named: "doc.text"), resize: false, available: textEditor))
  52. capabililies.append(Capability(text: "ONLYOFFICE", image: utility.loadImage(named: "onlyoffice"), resize: true, available: onlyofficeEditors))
  53. capabililies.append(Capability(text: "Collabora", image: utility.loadImage(named: "collabora"), resize: true, available: NCGlobal.shared.capabilityRichDocumentsEnabled))
  54. capabililies.append(Capability(text: "User Status", image: utility.loadImage(named: "moon"), resize: false, available: NCGlobal.shared.capabilityUserStatusEnabled))
  55. capabililies.append(Capability(text: "Comments", image: utility.loadImage(named: "ellipsis.bubble"), resize: false, available: NCGlobal.shared.capabilityFilesComments))
  56. capabililies.append(Capability(text: "Lock file", image: utility.loadImage(named: "lock"), resize: false, available: !NCGlobal.shared.capabilityFilesLockVersion.isEmpty))
  57. capabililies.append(Capability(text: "Group folders", image: utility.loadImage(named: "person.2"), resize: false, available: NCGlobal.shared.capabilityGroupfoldersEnabled))
  58. if NCBrandOptions.shared.brand != "Nextcloud" {
  59. capabililies.append(Capability(text: "Security Guard Diagnostics", image: utility.loadImage(named: "shield"), resize: false, available: NCGlobal.shared.capabilitySecurityGuardDiagnostics))
  60. }
  61. capabililies.append(Capability(text: "Assistant", image: utility.loadImage(named: "sparkles"), resize: false, available: NCGlobal.shared.capabilityAssistantEnabled))
  62. homeServer = utilityFileSystem.getHomeServer(urlBase: activeAccount.urlBase, userId: activeAccount.userId) + "/"
  63. }
  64. }