1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- //
- // NCCapabilitiesModel.swift
- // Nextcloud
- //
- // Created by Marino Faggiana on 02/06/24.
- // Copyright © 2024 Marino Faggiana. All rights reserved.
- //
- import Foundation
- class NCCapabilitiesModel: ObservableObject, ViewOnAppearHandling {
- struct Capability: Identifiable, Hashable {
- let id = UUID()
- let text: String
- let image: UIImage
- let resize: Bool
- let available: Bool
- }
- @Published var capabililies: [Capability] = []
- @Published var homeServer = ""
- let utilityFileSystem = NCUtilityFileSystem()
- let utility = NCUtility()
- init() {
- onViewAppear()
- }
- /// Triggered when the view appears.
- func onViewAppear() {
- guard let activeAccount = NCManageDatabase.shared.getActiveAccount() else { return }
- var textEditor = false
- var onlyofficeEditors = false
- capabililies.removeAll()
- var image = utility.loadImage(named: "person.fill.badge.plus")
- capabililies.append(Capability(text: "File sharing", image: image, resize: false, available: NCGlobal.shared.capabilityFileSharingApiEnabled))
- image = utility.loadImage(named: "network")
- capabililies.append(Capability(text: "External site", image: image, resize: false, available: NCGlobal.shared.capabilityExternalSites))
- image = utility.loadImage(named: "lock")
- capabililies.append(Capability(text: "End-to-End Encryption", image: image, resize: false, available: NCGlobal.shared.capabilityE2EEEnabled))
- image = utility.loadImage(named: "bolt")
- capabililies.append(Capability(text: "Activity", image: image, resize: false, available: !NCGlobal.shared.capabilityActivity.isEmpty))
- image = utility.loadImage(named: "bell")
- capabililies.append(Capability(text: "Notification", image: image, resize: false, available: !NCGlobal.shared.capabilityNotification.isEmpty))
- image = utility.loadImage(named: "trash")
- capabililies.append(Capability(text: "Deleted files", image: image, resize: false, available: NCGlobal.shared.capabilityFilesUndelete))
- if let editors = NCManageDatabase.shared.getDirectEditingEditors(account: activeAccount.account) {
- for editor in editors {
- if editor.editor == NCGlobal.shared.editorText {
- textEditor = true
- } else if editor.editor == NCGlobal.shared.editorOnlyoffice {
- onlyofficeEditors = true
- }
- }
- }
- capabililies.append(Capability(text: "Text", image: utility.loadImage(named: "doc.text"), resize: false, available: textEditor))
- capabililies.append(Capability(text: "ONLYOFFICE", image: utility.loadImage(named: "onlyoffice"), resize: true, available: onlyofficeEditors))
- capabililies.append(Capability(text: "Collabora", image: utility.loadImage(named: "collabora"), resize: true, available: NCGlobal.shared.capabilityRichDocumentsEnabled))
- capabililies.append(Capability(text: "User Status", image: utility.loadImage(named: "moon"), resize: false, available: NCGlobal.shared.capabilityUserStatusEnabled))
- capabililies.append(Capability(text: "Comments", image: utility.loadImage(named: "ellipsis.bubble"), resize: false, available: NCGlobal.shared.capabilityFilesComments))
- capabililies.append(Capability(text: "Lock file", image: utility.loadImage(named: "lock"), resize: false, available: !NCGlobal.shared.capabilityFilesLockVersion.isEmpty))
- capabililies.append(Capability(text: "Group folders", image: utility.loadImage(named: "person.2"), resize: false, available: NCGlobal.shared.capabilityGroupfoldersEnabled))
- if NCBrandOptions.shared.brand != "Nextcloud" {
- capabililies.append(Capability(text: "Security Guard Diagnostics", image: utility.loadImage(named: "shield"), resize: false, available: NCGlobal.shared.capabilitySecurityGuardDiagnostics))
- }
- capabililies.append(Capability(text: "Assistant", image: utility.loadImage(named: "sparkles"), resize: false, available: NCGlobal.shared.capabilityAssistantEnabled))
- homeServer = utilityFileSystem.getHomeServer(urlBase: activeAccount.urlBase, userId: activeAccount.userId) + "/"
- }
- }
|