Эх сурвалжийг харах

Merge pull request #2430 from nextcloud/capabilitiesview

Capabilitiesview
Marino Faggiana 1 жил өмнө
parent
commit
44bb2b3bef

+ 4 - 8
Nextcloud.xcodeproj/project.pbxproj

@@ -109,8 +109,6 @@
 		F707C26521A2DC5200F6181E /* NCStoreReview.swift in Sources */ = {isa = PBXBuildFile; fileRef = F707C26421A2DC5200F6181E /* NCStoreReview.swift */; };
 		F70821D829E59E6D001CA2D7 /* TagListView in Frameworks */ = {isa = PBXBuildFile; productRef = F70821D729E59E6D001CA2D7 /* TagListView */; };
 		F70968A424212C4E00ED60E5 /* NCLivePhoto.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70968A324212C4E00ED60E5 /* NCLivePhoto.swift */; };
-		F70A58BE24D0349500DED00D /* NCCapabilitiesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70A58BD24D0349500DED00D /* NCCapabilitiesViewController.swift */; };
-		F70A58C024D0545100DED00D /* NCCapabilitiesViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F70A58BF24D0545100DED00D /* NCCapabilitiesViewController.storyboard */; };
 		F70B86752642CE3B00ED5349 /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = F70B86742642CE3B00ED5349 /* FirebaseCrashlytics */; };
 		F70BFC7420E0FA7D00C67599 /* NCUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70BFC7320E0FA7C00C67599 /* NCUtility.swift */; };
 		F70BFC7520E0FA7D00C67599 /* NCUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70BFC7320E0FA7C00C67599 /* NCUtility.swift */; };
@@ -598,6 +596,7 @@
 		F7F878AF1FB9E3B900599E4F /* NCEndToEndMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F878AD1FB9E3B900599E4F /* NCEndToEndMetadata.swift */; };
 		F7F9D1BB25397CE000D9BFF5 /* NCViewer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7F9D1BA25397CE000D9BFF5 /* NCViewer.swift */; };
 		F7FAFD3A28BFA948000777FE /* NCNotification+Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FAFD3928BFA947000777FE /* NCNotification+Menu.swift */; };
+		F7FC5EE12A1768D700D921F5 /* NCCapabilitiesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FC5EE02A1768D700D921F5 /* NCCapabilitiesView.swift */; };
 		F7FF2CB12842159500EBB7A1 /* NCSectionHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7FF2CB02842159500EBB7A1 /* NCSectionHeader.xib */; };
 /* End PBXBuildFile section */
 
@@ -789,8 +788,6 @@
 		F707C26421A2DC5200F6181E /* NCStoreReview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCStoreReview.swift; sourceTree = "<group>"; };
 		F70968A324212C4E00ED60E5 /* NCLivePhoto.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCLivePhoto.swift; sourceTree = "<group>"; };
 		F70A07C8205285FB00DC1231 /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = "<group>"; };
-		F70A58BD24D0349500DED00D /* NCCapabilitiesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCCapabilitiesViewController.swift; sourceTree = "<group>"; };
-		F70A58BF24D0545100DED00D /* NCCapabilitiesViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCCapabilitiesViewController.storyboard; sourceTree = "<group>"; };
 		F70B866F2642CA9500ED5349 /* ChromaColorPicker.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = ChromaColorPicker.xcframework; path = Carthage/Build/ChromaColorPicker.xcframework; sourceTree = "<group>"; };
 		F70B86792642CF5300ED5349 /* KTVHTTPCache.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = KTVHTTPCache.xcframework; path = Carthage/Build/KTVHTTPCache.xcframework; sourceTree = "<group>"; };
 		F70B867A2642CF5300ED5349 /* TLPhotoPicker.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = TLPhotoPicker.xcframework; path = Carthage/Build/TLPhotoPicker.xcframework; sourceTree = "<group>"; };
@@ -1244,6 +1241,7 @@
 		F7F878AD1FB9E3B900599E4F /* NCEndToEndMetadata.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCEndToEndMetadata.swift; sourceTree = "<group>"; };
 		F7F9D1BA25397CE000D9BFF5 /* NCViewer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCViewer.swift; sourceTree = "<group>"; };
 		F7FAFD3928BFA947000777FE /* NCNotification+Menu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NCNotification+Menu.swift"; sourceTree = "<group>"; };
+		F7FC5EE02A1768D700D921F5 /* NCCapabilitiesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCCapabilitiesView.swift; sourceTree = "<group>"; };
 		F7FC7D551DC1F93800BB2C6A /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
 		F7FF2CB02842159500EBB7A1 /* NCSectionHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NCSectionHeader.xib; sourceTree = "<group>"; };
 /* End PBXFileReference section */
@@ -1634,8 +1632,7 @@
 		F73FAEE224D2CA830090692E /* Diagnostics */ = {
 			isa = PBXGroup;
 			children = (
-				F70A58BF24D0545100DED00D /* NCCapabilitiesViewController.storyboard */,
-				F70A58BD24D0349500DED00D /* NCCapabilitiesViewController.swift */,
+				F7FC5EE02A1768D700D921F5 /* NCCapabilitiesView.swift */,
 			);
 			path = Diagnostics;
 			sourceTree = "<group>";
@@ -2853,7 +2850,6 @@
 				F700510122DF63AC003A3356 /* NCShare.storyboard in Resources */,
 				F787704F22E7019900F287A9 /* NCShareLinkCell.xib in Resources */,
 				F70753F72542A9C000972D44 /* NCViewerMediaPage.storyboard in Resources */,
-				F70A58C024D0545100DED00D /* NCCapabilitiesViewController.storyboard in Resources */,
 				F7F4F10627ECDBDB008676F9 /* Inconsolata-Medium.ttf in Resources */,
 				F7AC934A296193050002BC0F /* Reasons to use Nextcloud.pdf in Resources */,
 				F7A60F87292D215000FCE1F2 /* NCShareAccounts.storyboard in Resources */,
@@ -3185,7 +3181,6 @@
 				F769CA172965AB7C00039397 /* NCUploadAssets.swift in Sources */,
 				F7AE00F8230E81CB007ACF8A /* NCBrowserWeb.swift in Sources */,
 				F702F30825EE5D47008F8E80 /* NCPopupViewController.swift in Sources */,
-				F70A58BE24D0349500DED00D /* NCCapabilitiesViewController.swift in Sources */,
 				F733598125C1C188002ABA72 /* NCAskAuthorization.swift in Sources */,
 				370D26AF248A3D7A00121797 /* NCCellProtocol.swift in Sources */,
 				F77B0DF51D118A16002130FE /* CCUtility.m in Sources */,
@@ -3318,6 +3313,7 @@
 				F726EEEC1FED1C820030B9C8 /* NCEndToEndInitialize.swift in Sources */,
 				F79A65C62191D95E00FF6DCC /* NCSelect.swift in Sources */,
 				F75D19E325EFE09000D74598 /* NCTrash+Menu.swift in Sources */,
+				F7FC5EE12A1768D700D921F5 /* NCCapabilitiesView.swift in Sources */,
 				F70CAE3A1F8CF31A008125FD /* NCEndToEndEncryption.m in Sources */,
 				AF93471B27E2361E002537EE /* NCShareAdvancePermission.swift in Sources */,
 				F77BC3ED293E528A005F2B08 /* NCConfigServer.swift in Sources */,

+ 1 - 1
iOSClient/Data/NCElementsJSON.swift

@@ -54,7 +54,7 @@ import UIKit
     @objc public let capabilitiesE2EEEnabled: Array = ["ocs", "data", "capabilities", "end-to-end-encryption", "enabled"]
     @objc public let capabilitiesE2EEApiVersion: Array = ["ocs", "data", "capabilities", "end-to-end-encryption", "api-version"]
 
-    @objc public let capabilitiesExternalSitesExists: Array = ["ocs", "data", "capabilities", "external"]
+    @objc public let capabilitiesExternalSites: Array = ["ocs", "data", "capabilities", "external"]
 
     @objc public let capabilitiesRichdocumentsMimetypes: Array = ["ocs", "data", "capabilities", "richdocuments", "mimetypes"]
 

+ 236 - 0
iOSClient/Diagnostics/NCCapabilitiesView.swift

@@ -0,0 +1,236 @@
+//
+//  NCCapabilitiesView.swift
+//  Nextcloud
+//
+//  Created by Marino Faggiana on 19/05/23.
+//  Copyright © 2023 Marino Faggiana. All rights reserved.
+//
+
+import SwiftUI
+import NextcloudKit
+
+@objc class NCHostingCapabilitiesView: NSObject {
+
+    @objc func makeShipDetailsUI() -> UIViewController {
+
+        let capabilitiesStatus = NCCapabilitiesViewOO()
+        let view = NCCapabilitiesView(capabilitiesStatus: capabilitiesStatus)
+        let vc = UIHostingController(rootView: view)
+        vc.title = NSLocalizedString("_capabilities_", comment: "")
+        return vc
+    }
+}
+
+class NCCapabilitiesViewOO: ObservableObject {
+
+    struct Capability: Identifiable, Hashable {
+        let id = UUID()
+        let text: String
+        let image: UIImage
+        let available: Bool
+    }
+
+    @Published var capabililies: [Capability] = []
+    @Published var json = "Lorem ipsum dolor sit amet.\nEa voluptas aperiam aut inventore saepe in tenetur modi.\nCum sint tempore sed maiores quos aut quaerat deleniti.\nQui beatae quia qui repellat sunt in Quis libero aut quidem porro non explicabo tenetur et natus doloribus non voluptatum consequatur.\n"
+    @Published var homeServer = ""
+
+    init() {
+
+        if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
+            capabililies = [Capability(text: "File sharing", image: UIImage(named: "share")!.resizeImage(size: CGSize(width: 25, height: 25))!, available: true),
+                            Capability(text: "Externa site", image: UIImage(systemName: "network")!, available: false)
+            ]
+            homeServer = "https://cloud.nextcloud.com/remote.php.dav/files/marino/"
+        } else {
+            guard let activeAccount = NCManageDatabase.shared.getActiveAccount() else { return }
+            homeServer = NCUtilityFileSystem.shared.getHomeServer(urlBase: activeAccount.urlBase, userId: activeAccount.userId) + "/"
+            getCapabilities(account: activeAccount.account)
+        }
+    }
+
+    func getCapabilities(account: String) {
+
+        NextcloudKit.shared.getCapabilities { account, data, error in
+            if error == .success, let data = data {
+                NCManageDatabase.shared.addCapabilitiesJSon(data, account: account)
+                let serverVersionMajor = NCManageDatabase.shared.getCapabilitiesServerInt(account: account, elements: NCElementsJSON.shared.capabilitiesVersionMajor)
+                if serverVersionMajor >= NCGlobal.shared.nextcloudVersion18 {
+                    NextcloudKit.shared.NCTextObtainEditorDetails { account, editors, creators, _, error in
+                        if error == .success {
+                            NCManageDatabase.shared.addDirectEditing(account: account, editors: editors, creators: creators)
+                            self.updateCapabilities(account: account)
+                        }
+                    }
+                } else {
+                    self.updateCapabilities(account: account)
+                }
+            } else {
+                self.updateCapabilities(account: account)
+            }
+        }
+
+        updateCapabilities(account: account)
+    }
+
+    func updateCapabilities(account: String) {
+
+        var available: Bool = false
+
+        capabililies.removeAll()
+        json = ""
+
+        // FILE SHARING
+        available = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFileSharingApiEnabled, exists: false)
+        capabililies.append(Capability(text: "File sharing", image: UIImage(named: "share")!.resizeImage(size: CGSize(width: 25, height: 25))!, available: available))
+
+        // EXTERNAL SITE
+        available = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesExternalSites, exists: true)
+        capabililies.append(Capability(text: "External site", image: UIImage(systemName: "network")!, available: available))
+
+        // E2EE
+        available = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesE2EEEnabled, exists: false)
+        capabililies.append(Capability(text: "End-to-End Encryption", image: UIImage(systemName: "lock")!, available: available))
+
+        // ACTIVITY
+        if NCManageDatabase.shared.getCapabilitiesServerArray(account: account, elements: NCElementsJSON.shared.capabilitiesActivity) == nil {
+            available = false
+        } else {
+            available = true
+        }
+        capabililies.append(Capability(text: "Activity", image: UIImage(systemName: "bolt")!, available: available))
+
+        // NOTIFICATION
+        if NCManageDatabase.shared.getCapabilitiesServerArray(account: account, elements: NCElementsJSON.shared.capabilitiesNotification) == nil {
+            available = false
+        } else {
+            available = true
+        }
+        capabililies.append(Capability(text: "Notification", image: UIImage(systemName: "bell")!, available: available))
+
+        // DELETE FILES
+        available = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFilesUndelete, exists: false)
+        capabililies.append(Capability(text: "Deleted files", image: UIImage(systemName: "trash")!, available: available))
+
+        // TEXT - ONLYOFFICE
+        var textEditor = false
+        var onlyofficeEditors = false
+        if let editors = NCManageDatabase.shared.getDirectEditingEditors(account: 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: UIImage(named: "text")!.resizeImage(size: CGSize(width: 25, height: 25))!, available: textEditor))
+        capabililies.append(Capability(text: "ONLYOFFICE", image: UIImage(named: "onlyoffice")!.resizeImage(size: CGSize(width: 25, height: 25))!, available: onlyofficeEditors))
+
+        // COLLABORA
+        if NCManageDatabase.shared.getCapabilitiesServerArray(account: account, elements: NCElementsJSON.shared.capabilitiesRichdocumentsMimetypes) == nil {
+            available = false
+        } else {
+            available = true
+        }
+        capabililies.append(Capability(text: "Collabora", image: UIImage(named: "collabora")!.resizeImage(size: CGSize(width: 25, height: 25))!, available: available))
+
+        // USER STATUS
+        available = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesUserStatusEnabled, exists: false)
+        capabililies.append(Capability(text: "User Status", image: UIImage(systemName: "moon")!, available: available))
+
+        // COMMENTS
+        available = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFilesComments, exists: false)
+        capabililies.append(Capability(text: "Comments", image: UIImage(systemName: "ellipsis.bubble")!, available: available))
+
+        // LOCK FILE
+        let hasLockCapability = NCManageDatabase.shared.getCapabilitiesServerInt(account: account, elements: NCElementsJSON.shared.capabilitiesFilesLockVersion) >= 1
+        if hasLockCapability {
+            available = false
+        } else {
+            available = true
+        }
+        capabililies.append(Capability(text: "Lock file", image: UIImage(systemName: "lock")!, available: available))
+
+        // GROUP FOLDERS
+        available = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesGroupfoldersEnabled, exists: false)
+        capabililies.append(Capability(text: "Group folders", image: UIImage(systemName: "person.2")!, available: available))
+
+        if let json = NCManageDatabase.shared.getCapabilities(account: account) {
+            self.json = json
+        }
+    }
+}
+
+struct NCCapabilitiesView: View {
+
+    @ObservedObject var capabilitiesViewOO: NCCapabilitiesViewOO
+
+    init(capabilitiesStatus: NCCapabilitiesViewOO) {
+        self.capabilitiesViewOO = capabilitiesStatus
+    }
+
+    var body: some View {
+        VStack {
+            List {
+                Section {
+                    ForEach(capabilitiesViewOO.capabililies, id: \.id) { capability in
+                        HStack {
+                            CapabilityName(text: capability.text, image: Image(uiImage: capability.image))
+                            CapabilityStatus(available: capability.available)
+                        }
+                    }
+                }
+                Section {
+                    CapabilityName(text: capabilitiesViewOO.homeServer, image: Image(uiImage: UIImage(systemName: "house")!))
+                }
+                Section {
+                    ScrollView(.horizontal) {
+                        Text(capabilitiesViewOO.json)
+                            .font(.system(size: 12))
+                    }
+                }
+            }
+        }
+        .frame(maxWidth: .infinity, alignment: .top)
+    }
+
+    struct CapabilityName: View {
+
+        @State var text: String = ""
+        @State var image: Image
+
+        var body: some View {
+            Label {
+                Text(text)
+                    .font(.system(size: 15))
+                    .foregroundColor(Color(UIColor.systemGray))
+            } icon: {
+                image
+                    .renderingMode(.template)
+                    .foregroundColor(Color(UIColor.systemGray))
+            }
+            .frame(maxWidth: .infinity, alignment: .leading)
+        }
+    }
+
+    struct CapabilityStatus: View {
+
+        @State var available: Bool
+
+        var body: some View {
+            if available {
+                Image(systemName: "checkmark.circle.fill")
+                    .foregroundColor(.green)
+            } else {
+                Image(systemName: "multiply.circle.fill")
+                    .foregroundColor(.red)
+            }
+        }
+    }
+}
+
+struct NCCapabilitiesView_Previews: PreviewProvider {
+    static var previews: some View {
+        NCCapabilitiesView(capabilitiesStatus: NCCapabilitiesViewOO())
+    }
+}

+ 0 - 690
iOSClient/Diagnostics/NCCapabilitiesViewController.storyboard

@@ -1,690 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="vTK-Er-kbZ">
-    <device id="retina6_1" orientation="portrait" appearance="light"/>
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
-        <capability name="System colors in document resources" minToolsVersion="11.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <scenes>
-        <!--Capabilities View Controller-->
-        <scene sceneID="UF0-FW-gHK">
-            <objects>
-                <viewController id="7oH-vf-YqN" customClass="NCCapabilitiesViewController" customModule="Nextcloud" customModuleProvider="target" sceneMemberID="viewController">
-                    <view key="view" contentMode="scaleToFill" id="Aja-Mn-6Wc">
-                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hTE-ys-qsF">
-                                <rect key="frame" x="0.0" y="88" width="414" height="774"/>
-                                <subviews>
-                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Sms-Ez-fLO" userLabel="View Capabilities">
-                                        <rect key="frame" x="5" y="5" width="404" height="600"/>
-                                        <subviews>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jdW-oZ-cH8" userLabel="FileSharing">
-                                                <rect key="frame" x="0.0" y="0.0" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="share" translatesAutoresizingMaskIntoConstraints="NO" id="G9c-Nd-Ikl">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="30" id="2jt-3Q-W9U"/>
-                                                            <constraint firstAttribute="height" constant="30" id="qw0-LB-a0S"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="File sharing" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Olg-V3-URE">
-                                                        <rect key="frame" x="40" y="16" width="234" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SbT-rU-lJ8">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="25" id="Yf6-Er-ibu"/>
-                                                            <constraint firstAttribute="width" constant="120" id="bqY-hB-VuU"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="height" constant="50" id="486-j7-SKp"/>
-                                                    <constraint firstItem="SbT-rU-lJ8" firstAttribute="centerY" secondItem="jdW-oZ-cH8" secondAttribute="centerY" id="4Ao-MF-e1N"/>
-                                                    <constraint firstItem="G9c-Nd-Ikl" firstAttribute="leading" secondItem="jdW-oZ-cH8" secondAttribute="leading" id="Bnm-Im-c7M"/>
-                                                    <constraint firstItem="G9c-Nd-Ikl" firstAttribute="centerY" secondItem="jdW-oZ-cH8" secondAttribute="centerY" id="Jxk-cZ-ezx"/>
-                                                    <constraint firstItem="Olg-V3-URE" firstAttribute="centerY" secondItem="jdW-oZ-cH8" secondAttribute="centerY" id="RXs-zW-MT4"/>
-                                                    <constraint firstItem="Olg-V3-URE" firstAttribute="leading" secondItem="G9c-Nd-Ikl" secondAttribute="trailing" constant="10" id="XZo-QH-gpr"/>
-                                                    <constraint firstItem="SbT-rU-lJ8" firstAttribute="leading" secondItem="Olg-V3-URE" secondAttribute="trailing" constant="5" id="wW2-QT-gGz"/>
-                                                    <constraint firstAttribute="trailing" secondItem="SbT-rU-lJ8" secondAttribute="trailing" constant="5" id="z63-kb-OIf"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mSC-JU-xuk" userLabel="external Site">
-                                                <rect key="frame" x="0.0" y="50" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="externalsites" translatesAutoresizingMaskIntoConstraints="NO" id="JWO-C0-32L">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="30" id="cuQ-hf-WGC"/>
-                                                            <constraint firstAttribute="width" constant="30" id="hun-lk-Hyf"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="External site" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="g2c-tp-kiW">
-                                                        <rect key="frame" x="40" y="16" width="234" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ivv-te-kaP">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="120" id="KRE-Ez-UvG"/>
-                                                            <constraint firstAttribute="height" constant="25" id="xhy-Qg-h6R"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="trailing" secondItem="ivv-te-kaP" secondAttribute="trailing" constant="5" id="4K1-tJ-Cun"/>
-                                                    <constraint firstItem="JWO-C0-32L" firstAttribute="centerY" secondItem="mSC-JU-xuk" secondAttribute="centerY" id="FLD-bX-ETy"/>
-                                                    <constraint firstItem="ivv-te-kaP" firstAttribute="leading" secondItem="g2c-tp-kiW" secondAttribute="trailing" constant="5" id="VuF-Q1-hEp"/>
-                                                    <constraint firstItem="g2c-tp-kiW" firstAttribute="leading" secondItem="JWO-C0-32L" secondAttribute="trailing" constant="10" id="fWw-rx-nFV"/>
-                                                    <constraint firstAttribute="height" constant="50" id="pLI-AP-DaV"/>
-                                                    <constraint firstItem="JWO-C0-32L" firstAttribute="leading" secondItem="mSC-JU-xuk" secondAttribute="leading" id="pyK-ZG-7fZ"/>
-                                                    <constraint firstItem="g2c-tp-kiW" firstAttribute="centerY" secondItem="mSC-JU-xuk" secondAttribute="centerY" id="rtm-fS-6ec"/>
-                                                    <constraint firstItem="ivv-te-kaP" firstAttribute="centerY" secondItem="mSC-JU-xuk" secondAttribute="centerY" id="wCm-7E-nJ3"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nVq-4i-FNy" userLabel="end to end encryption">
-                                                <rect key="frame" x="0.0" y="100" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="lock" translatesAutoresizingMaskIntoConstraints="NO" id="S7m-5Z-ktw">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="30" id="edD-t9-G1B"/>
-                                                            <constraint firstAttribute="width" constant="30" id="nPu-CX-Ilf"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="End-to-End Encryption" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5cZ-yL-XdC">
-                                                        <rect key="frame" x="40" y="16" width="234" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M82-8U-M4Q">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="25" id="L0G-30-siH"/>
-                                                            <constraint firstAttribute="width" constant="120" id="z0Z-Hz-edq"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstItem="5cZ-yL-XdC" firstAttribute="leading" secondItem="S7m-5Z-ktw" secondAttribute="trailing" constant="10" id="HOl-vJ-SDL"/>
-                                                    <constraint firstAttribute="height" constant="50" id="X1d-TH-FfQ"/>
-                                                    <constraint firstItem="S7m-5Z-ktw" firstAttribute="centerY" secondItem="nVq-4i-FNy" secondAttribute="centerY" id="cUj-Mb-Gza"/>
-                                                    <constraint firstItem="5cZ-yL-XdC" firstAttribute="centerY" secondItem="nVq-4i-FNy" secondAttribute="centerY" id="fKw-6d-s4Z"/>
-                                                    <constraint firstItem="M82-8U-M4Q" firstAttribute="centerY" secondItem="nVq-4i-FNy" secondAttribute="centerY" id="nnA-zZ-9te"/>
-                                                    <constraint firstItem="S7m-5Z-ktw" firstAttribute="leading" secondItem="nVq-4i-FNy" secondAttribute="leading" id="sX7-dg-Goj"/>
-                                                    <constraint firstItem="M82-8U-M4Q" firstAttribute="leading" secondItem="5cZ-yL-XdC" secondAttribute="trailing" constant="5" id="vjo-Od-7Gr"/>
-                                                    <constraint firstAttribute="trailing" secondItem="M82-8U-M4Q" secondAttribute="trailing" constant="5" id="zg8-Za-Rla"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lGp-bh-Ysz" userLabel="Activity">
-                                                <rect key="frame" x="0.0" y="150" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="activity" translatesAutoresizingMaskIntoConstraints="NO" id="tl5-S1-p9X">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="30" id="Hb3-9B-Zsk"/>
-                                                            <constraint firstAttribute="width" constant="30" id="Zmw-Ck-dGs"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Activity" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SIY-IW-w6O">
-                                                        <rect key="frame" x="40" y="16" width="51" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dyb-1O-dIA">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="25" id="C3a-Ec-xJv"/>
-                                                            <constraint firstAttribute="width" constant="120" id="IB5-Hq-R4j"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="trailing" secondItem="dyb-1O-dIA" secondAttribute="trailing" constant="5" id="0fh-7J-NUN"/>
-                                                    <constraint firstAttribute="height" constant="50" id="OMI-4q-89Q"/>
-                                                    <constraint firstItem="dyb-1O-dIA" firstAttribute="centerY" secondItem="lGp-bh-Ysz" secondAttribute="centerY" id="OPb-RB-lic"/>
-                                                    <constraint firstItem="SIY-IW-w6O" firstAttribute="leading" secondItem="tl5-S1-p9X" secondAttribute="trailing" constant="10" id="Q9g-cC-zme"/>
-                                                    <constraint firstItem="tl5-S1-p9X" firstAttribute="leading" secondItem="lGp-bh-Ysz" secondAttribute="leading" id="cFK-we-PT6"/>
-                                                    <constraint firstItem="tl5-S1-p9X" firstAttribute="centerY" secondItem="lGp-bh-Ysz" secondAttribute="centerY" id="fyW-bz-dN0"/>
-                                                    <constraint firstItem="SIY-IW-w6O" firstAttribute="centerY" secondItem="lGp-bh-Ysz" secondAttribute="centerY" id="xCh-5R-1WK"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UPC-L1-VKj" userLabel="Notification">
-                                                <rect key="frame" x="0.0" y="200" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="notification" translatesAutoresizingMaskIntoConstraints="NO" id="cgb-3g-trc">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="30" id="3RZ-6t-QNW"/>
-                                                            <constraint firstAttribute="width" constant="30" id="Rpr-ox-Bhc"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Notification" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="W6x-fO-A6L">
-                                                        <rect key="frame" x="40" y="16" width="79" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WAg-Hw-sQS">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="25" id="NEz-tu-8Rk"/>
-                                                            <constraint firstAttribute="width" constant="120" id="zjs-JE-2aB"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstItem="cgb-3g-trc" firstAttribute="centerY" secondItem="UPC-L1-VKj" secondAttribute="centerY" id="28g-Vd-Pdh"/>
-                                                    <constraint firstItem="W6x-fO-A6L" firstAttribute="centerY" secondItem="UPC-L1-VKj" secondAttribute="centerY" id="Ah1-f7-KrB"/>
-                                                    <constraint firstAttribute="trailing" secondItem="WAg-Hw-sQS" secondAttribute="trailing" constant="5" id="BpJ-RQ-B1k"/>
-                                                    <constraint firstItem="WAg-Hw-sQS" firstAttribute="centerY" secondItem="UPC-L1-VKj" secondAttribute="centerY" id="OGo-Ns-IU0"/>
-                                                    <constraint firstAttribute="height" constant="50" id="VOs-so-anE"/>
-                                                    <constraint firstItem="cgb-3g-trc" firstAttribute="leading" secondItem="UPC-L1-VKj" secondAttribute="leading" id="e2z-tZ-5bX"/>
-                                                    <constraint firstItem="W6x-fO-A6L" firstAttribute="leading" secondItem="cgb-3g-trc" secondAttribute="trailing" constant="10" id="zGE-fg-e3h"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8nf-zJ-Qas" userLabel="Notification">
-                                                <rect key="frame" x="0.0" y="250" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="delete" translatesAutoresizingMaskIntoConstraints="NO" id="8Zc-9W-n27">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="30" id="GE1-Yd-rOr"/>
-                                                            <constraint firstAttribute="height" constant="30" id="aQW-Uy-znK"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Deleted files" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EVN-t6-jzB">
-                                                        <rect key="frame" x="40" y="16" width="85.5" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8hg-qK-qvz">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="120" id="Ns2-PG-H7R"/>
-                                                            <constraint firstAttribute="height" constant="25" id="b2x-qE-hf6"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstItem="8Zc-9W-n27" firstAttribute="leading" secondItem="8nf-zJ-Qas" secondAttribute="leading" id="0gl-yZ-NHn"/>
-                                                    <constraint firstItem="EVN-t6-jzB" firstAttribute="centerY" secondItem="8nf-zJ-Qas" secondAttribute="centerY" id="5dv-S0-9bY"/>
-                                                    <constraint firstItem="8Zc-9W-n27" firstAttribute="centerY" secondItem="8nf-zJ-Qas" secondAttribute="centerY" id="9H1-hH-E2o"/>
-                                                    <constraint firstAttribute="height" constant="50" id="NJt-Ob-qAJ"/>
-                                                    <constraint firstAttribute="trailing" secondItem="8hg-qK-qvz" secondAttribute="trailing" constant="5" id="VS2-55-BeI"/>
-                                                    <constraint firstItem="8hg-qK-qvz" firstAttribute="centerY" secondItem="8nf-zJ-Qas" secondAttribute="centerY" id="ceB-3o-Qpt"/>
-                                                    <constraint firstItem="EVN-t6-jzB" firstAttribute="leading" secondItem="8Zc-9W-n27" secondAttribute="trailing" constant="10" id="rDk-Z6-y2x"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZNB-jF-9zg" userLabel="direct editing">
-                                                <rect key="frame" x="0.0" y="300" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="text" translatesAutoresizingMaskIntoConstraints="NO" id="iCB-2A-phO">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="30" id="Ww6-2V-i4r"/>
-                                                            <constraint firstAttribute="height" constant="30" id="kdP-OK-U2a"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Text" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FOv-Ld-QFB">
-                                                        <rect key="frame" x="40" y="16" width="29" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uiz-H8-p3D">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="25" id="Eqf-R1-eKB"/>
-                                                            <constraint firstAttribute="width" constant="120" id="i0a-tu-JgU"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstItem="uiz-H8-p3D" firstAttribute="centerY" secondItem="ZNB-jF-9zg" secondAttribute="centerY" id="0dR-3w-1sQ"/>
-                                                    <constraint firstAttribute="height" constant="50" id="4UX-0n-U4U"/>
-                                                    <constraint firstAttribute="trailing" secondItem="uiz-H8-p3D" secondAttribute="trailing" constant="5" id="Rma-z3-oCf"/>
-                                                    <constraint firstItem="iCB-2A-phO" firstAttribute="leading" secondItem="ZNB-jF-9zg" secondAttribute="leading" id="cF1-co-eQB"/>
-                                                    <constraint firstItem="iCB-2A-phO" firstAttribute="centerY" secondItem="ZNB-jF-9zg" secondAttribute="centerY" id="gSQ-hN-iBx"/>
-                                                    <constraint firstItem="FOv-Ld-QFB" firstAttribute="leading" secondItem="iCB-2A-phO" secondAttribute="trailing" constant="10" id="kiE-oZ-ky6"/>
-                                                    <constraint firstItem="FOv-Ld-QFB" firstAttribute="centerY" secondItem="ZNB-jF-9zg" secondAttribute="centerY" id="vHG-Fk-kEj"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dhs-06-3RT" userLabel="Collabora">
-                                                <rect key="frame" x="0.0" y="350" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="collabora" translatesAutoresizingMaskIntoConstraints="NO" id="GXZ-Rj-WCE">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="30" id="kcH-Br-yZB"/>
-                                                            <constraint firstAttribute="width" constant="30" id="ros-hl-Jec"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Collabora" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IJ7-i8-AvX">
-                                                        <rect key="frame" x="40" y="16" width="65.5" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="30w-oC-gZl">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="25" id="E6x-vP-Fs9"/>
-                                                            <constraint firstAttribute="width" constant="120" id="nGc-gZ-jaG"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstItem="30w-oC-gZl" firstAttribute="centerY" secondItem="dhs-06-3RT" secondAttribute="centerY" id="0G9-Hl-zZn"/>
-                                                    <constraint firstItem="IJ7-i8-AvX" firstAttribute="centerY" secondItem="dhs-06-3RT" secondAttribute="centerY" id="8Rv-kP-XDs"/>
-                                                    <constraint firstItem="GXZ-Rj-WCE" firstAttribute="centerY" secondItem="dhs-06-3RT" secondAttribute="centerY" id="DiJ-1E-bIC"/>
-                                                    <constraint firstItem="IJ7-i8-AvX" firstAttribute="leading" secondItem="GXZ-Rj-WCE" secondAttribute="trailing" constant="10" id="M7l-uB-RhH"/>
-                                                    <constraint firstAttribute="trailing" secondItem="30w-oC-gZl" secondAttribute="trailing" constant="5" id="XrQ-4B-UnP"/>
-                                                    <constraint firstItem="GXZ-Rj-WCE" firstAttribute="leading" secondItem="dhs-06-3RT" secondAttribute="leading" id="lCd-tJ-nvi"/>
-                                                    <constraint firstAttribute="height" constant="50" id="xgw-IO-enA"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LTt-2C-rPb" userLabel="OnlyOffice">
-                                                <rect key="frame" x="0.0" y="400" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="onlyoffice" translatesAutoresizingMaskIntoConstraints="NO" id="xvv-h0-9bM">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="30" id="bUx-KW-ZGu"/>
-                                                            <constraint firstAttribute="height" constant="30" id="wKp-TM-dCw"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ONLYOFFICE" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tq3-cS-wup">
-                                                        <rect key="frame" x="40" y="16" width="89.5" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ucV-YG-5ht">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="25" id="8Xe-4g-RxY"/>
-                                                            <constraint firstAttribute="width" constant="120" id="m3G-CE-aso"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstItem="Tq3-cS-wup" firstAttribute="leading" secondItem="xvv-h0-9bM" secondAttribute="trailing" constant="10" id="G34-W8-fhW"/>
-                                                    <constraint firstAttribute="height" constant="50" id="Glo-gX-j6q"/>
-                                                    <constraint firstItem="xvv-h0-9bM" firstAttribute="centerY" secondItem="LTt-2C-rPb" secondAttribute="centerY" id="mYd-TV-lVh"/>
-                                                    <constraint firstItem="ucV-YG-5ht" firstAttribute="centerY" secondItem="LTt-2C-rPb" secondAttribute="centerY" id="qmu-3J-9Xj"/>
-                                                    <constraint firstAttribute="trailing" secondItem="ucV-YG-5ht" secondAttribute="trailing" constant="5" id="tva-Qw-rYM"/>
-                                                    <constraint firstItem="xvv-h0-9bM" firstAttribute="leading" secondItem="LTt-2C-rPb" secondAttribute="leading" id="vkH-IQ-IUb"/>
-                                                    <constraint firstItem="Tq3-cS-wup" firstAttribute="centerY" secondItem="LTt-2C-rPb" secondAttribute="centerY" id="xlI-tP-AMe"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2Pp-Kb-YMc" userLabel="User Status">
-                                                <rect key="frame" x="0.0" y="450" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="userStatusAway" translatesAutoresizingMaskIntoConstraints="NO" id="Nxp-H1-Pob">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="30" id="qzU-OP-bvd"/>
-                                                            <constraint firstAttribute="width" constant="30" id="t5O-mN-Xyd"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="User Status" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LID-IE-L9Z">
-                                                        <rect key="frame" x="40" y="16" width="80.5" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Sj-5h-jgb">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="120" id="IJ3-gv-UjC"/>
-                                                            <constraint firstAttribute="height" constant="25" id="wiA-JQ-GDr"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstItem="LID-IE-L9Z" firstAttribute="leading" secondItem="Nxp-H1-Pob" secondAttribute="trailing" constant="10" id="4Pl-0O-5J4"/>
-                                                    <constraint firstItem="Nxp-H1-Pob" firstAttribute="leading" secondItem="2Pp-Kb-YMc" secondAttribute="leading" id="9yK-6i-taC"/>
-                                                    <constraint firstAttribute="height" constant="50" id="UUO-ej-PcK"/>
-                                                    <constraint firstAttribute="trailing" secondItem="5Sj-5h-jgb" secondAttribute="trailing" constant="5" id="iu9-2g-hKA"/>
-                                                    <constraint firstItem="LID-IE-L9Z" firstAttribute="centerY" secondItem="2Pp-Kb-YMc" secondAttribute="centerY" id="lFh-r6-Yvh"/>
-                                                    <constraint firstItem="Nxp-H1-Pob" firstAttribute="centerY" secondItem="2Pp-Kb-YMc" secondAttribute="centerY" id="ocY-iN-t73"/>
-                                                    <constraint firstItem="5Sj-5h-jgb" firstAttribute="centerY" secondItem="2Pp-Kb-YMc" secondAttribute="centerY" id="peY-Iv-kLA"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="S24-Wc-fps" userLabel="Comments">
-                                                <rect key="frame" x="0.0" y="498" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="comments" translatesAutoresizingMaskIntoConstraints="NO" id="cYf-px-izj">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="30" id="gdA-CQ-Wu0"/>
-                                                            <constraint firstAttribute="height" constant="30" id="xGI-Zv-SQC"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Comments" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AEw-vE-bsf">
-                                                        <rect key="frame" x="40" y="16" width="74.5" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lVT-MG-7kN">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="120" id="TPY-VV-LmQ"/>
-                                                            <constraint firstAttribute="height" constant="25" id="WwT-hU-yOT"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="height" constant="50" id="3iW-tC-sQm"/>
-                                                    <constraint firstItem="AEw-vE-bsf" firstAttribute="leading" secondItem="cYf-px-izj" secondAttribute="trailing" constant="10" id="6bS-1j-tEi"/>
-                                                    <constraint firstItem="lVT-MG-7kN" firstAttribute="centerY" secondItem="S24-Wc-fps" secondAttribute="centerY" id="6zR-QZ-UEn"/>
-                                                    <constraint firstItem="cYf-px-izj" firstAttribute="leading" secondItem="S24-Wc-fps" secondAttribute="leading" id="Ahj-Nc-bRa"/>
-                                                    <constraint firstItem="cYf-px-izj" firstAttribute="centerY" secondItem="S24-Wc-fps" secondAttribute="centerY" id="BO8-tt-rX5"/>
-                                                    <constraint firstItem="AEw-vE-bsf" firstAttribute="centerY" secondItem="S24-Wc-fps" secondAttribute="centerY" id="ete-pJ-l2X"/>
-                                                    <constraint firstAttribute="trailing" secondItem="lVT-MG-7kN" secondAttribute="trailing" constant="5" id="zCZ-du-XT5"/>
-                                                </constraints>
-                                            </view>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="npG-0C-m3A" userLabel="Lock">
-                                                <rect key="frame" x="0.0" y="550" width="404" height="50"/>
-                                                <subviews>
-                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="lock" translatesAutoresizingMaskIntoConstraints="NO" id="eAC-Li-gKO">
-                                                        <rect key="frame" x="0.0" y="10" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="30" id="JsP-Q6-6yG"/>
-                                                            <constraint firstAttribute="width" constant="30" id="WUk-lh-3Vb"/>
-                                                        </constraints>
-                                                    </imageView>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Lock file" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SCj-6t-sXN">
-                                                        <rect key="frame" x="40" y="16" width="57.5" height="18"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="db5-st-O6M">
-                                                        <rect key="frame" x="279" y="12.5" width="120" height="25"/>
-                                                        <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="120" id="Vfm-Rm-l7N"/>
-                                                            <constraint firstAttribute="height" constant="25" id="oam-XV-KqH"/>
-                                                        </constraints>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                        <nil key="textColor"/>
-                                                        <nil key="highlightedColor"/>
-                                                    </label>
-                                                </subviews>
-                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                                <constraints>
-                                                    <constraint firstItem="db5-st-O6M" firstAttribute="centerY" secondItem="npG-0C-m3A" secondAttribute="centerY" id="0X7-Jw-OjP"/>
-                                                    <constraint firstItem="eAC-Li-gKO" firstAttribute="leading" secondItem="npG-0C-m3A" secondAttribute="leading" id="1yz-QU-lXY"/>
-                                                    <constraint firstAttribute="height" constant="50" id="6GQ-cE-Nz3"/>
-                                                    <constraint firstItem="SCj-6t-sXN" firstAttribute="centerY" secondItem="npG-0C-m3A" secondAttribute="centerY" id="Ocs-LT-OYb"/>
-                                                    <constraint firstItem="eAC-Li-gKO" firstAttribute="centerY" secondItem="npG-0C-m3A" secondAttribute="centerY" id="SlK-BL-Nba"/>
-                                                    <constraint firstAttribute="trailing" secondItem="db5-st-O6M" secondAttribute="trailing" constant="5" id="Upi-tI-m1R"/>
-                                                    <constraint firstItem="SCj-6t-sXN" firstAttribute="leading" secondItem="eAC-Li-gKO" secondAttribute="trailing" constant="10" id="dgu-xW-E8T"/>
-                                                </constraints>
-                                            </view>
-                                        </subviews>
-                                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                        <constraints>
-                                            <constraint firstItem="lGp-bh-Ysz" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="0qE-PV-O2f"/>
-                                            <constraint firstAttribute="trailing" secondItem="8nf-zJ-Qas" secondAttribute="trailing" id="0vv-HQ-Qqx"/>
-                                            <constraint firstAttribute="height" constant="600" id="6nU-Cb-MzH"/>
-                                            <constraint firstItem="mSC-JU-xuk" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="9Nq-du-3ah"/>
-                                            <constraint firstItem="S24-Wc-fps" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="Aad-cm-E1T"/>
-                                            <constraint firstAttribute="trailing" secondItem="S24-Wc-fps" secondAttribute="trailing" id="Ajf-er-GBr"/>
-                                            <constraint firstItem="ZNB-jF-9zg" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="GdE-lt-vZC"/>
-                                            <constraint firstAttribute="trailing" secondItem="nVq-4i-FNy" secondAttribute="trailing" id="HSG-Ia-fYc"/>
-                                            <constraint firstItem="npG-0C-m3A" firstAttribute="top" secondItem="S24-Wc-fps" secondAttribute="bottom" constant="2" id="IQe-Xv-U7D"/>
-                                            <constraint firstItem="S24-Wc-fps" firstAttribute="top" secondItem="2Pp-Kb-YMc" secondAttribute="bottom" constant="-2" id="ML8-GT-9hb"/>
-                                            <constraint firstAttribute="trailing" secondItem="2Pp-Kb-YMc" secondAttribute="trailing" id="NG8-Nu-ic6"/>
-                                            <constraint firstItem="LTt-2C-rPb" firstAttribute="top" secondItem="dhs-06-3RT" secondAttribute="bottom" id="Nm6-NH-AC9"/>
-                                            <constraint firstItem="npG-0C-m3A" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="QH1-s3-UQ7"/>
-                                            <constraint firstItem="UPC-L1-VKj" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="QcN-sd-pHM"/>
-                                            <constraint firstItem="LTt-2C-rPb" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="SUy-Mo-oAO"/>
-                                            <constraint firstItem="jdW-oZ-cH8" firstAttribute="top" secondItem="Sms-Ez-fLO" secondAttribute="top" id="UBW-Mx-NTs"/>
-                                            <constraint firstItem="8nf-zJ-Qas" firstAttribute="top" secondItem="UPC-L1-VKj" secondAttribute="bottom" id="UqS-Lx-6mL"/>
-                                            <constraint firstItem="dhs-06-3RT" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="UwG-6b-pEk"/>
-                                            <constraint firstItem="nVq-4i-FNy" firstAttribute="top" secondItem="mSC-JU-xuk" secondAttribute="bottom" id="VfU-sj-S9y"/>
-                                            <constraint firstAttribute="trailing" secondItem="npG-0C-m3A" secondAttribute="trailing" id="bLv-wr-d5v"/>
-                                            <constraint firstAttribute="trailing" secondItem="lGp-bh-Ysz" secondAttribute="trailing" id="bUd-8w-D8k"/>
-                                            <constraint firstItem="UPC-L1-VKj" firstAttribute="top" secondItem="lGp-bh-Ysz" secondAttribute="bottom" id="br5-nz-w7h"/>
-                                            <constraint firstItem="8nf-zJ-Qas" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="dsm-XA-dZD"/>
-                                            <constraint firstItem="jdW-oZ-cH8" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="eNi-cO-UFd"/>
-                                            <constraint firstItem="nVq-4i-FNy" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="efi-mm-hvP"/>
-                                            <constraint firstAttribute="trailing" secondItem="LTt-2C-rPb" secondAttribute="trailing" id="erZ-V1-p76"/>
-                                            <constraint firstAttribute="trailing" secondItem="UPC-L1-VKj" secondAttribute="trailing" id="f2Y-D9-fMV"/>
-                                            <constraint firstItem="2Pp-Kb-YMc" firstAttribute="leading" secondItem="Sms-Ez-fLO" secondAttribute="leading" id="fQm-C9-02f"/>
-                                            <constraint firstAttribute="trailing" secondItem="dhs-06-3RT" secondAttribute="trailing" id="ijj-gU-Gdk"/>
-                                            <constraint firstItem="2Pp-Kb-YMc" firstAttribute="top" secondItem="LTt-2C-rPb" secondAttribute="bottom" id="jbS-we-vDH"/>
-                                            <constraint firstAttribute="trailing" secondItem="jdW-oZ-cH8" secondAttribute="trailing" id="k81-ap-Nwy"/>
-                                            <constraint firstItem="lGp-bh-Ysz" firstAttribute="top" secondItem="nVq-4i-FNy" secondAttribute="bottom" id="l7m-bA-t7c"/>
-                                            <constraint firstItem="dhs-06-3RT" firstAttribute="top" secondItem="ZNB-jF-9zg" secondAttribute="bottom" id="mJv-Ta-ZbY"/>
-                                            <constraint firstAttribute="trailing" secondItem="mSC-JU-xuk" secondAttribute="trailing" id="pBU-xQ-0qV"/>
-                                            <constraint firstAttribute="trailing" secondItem="ZNB-jF-9zg" secondAttribute="trailing" id="v5H-SV-MvM"/>
-                                            <constraint firstItem="ZNB-jF-9zg" firstAttribute="top" secondItem="8nf-zJ-Qas" secondAttribute="bottom" id="w6t-hz-cPZ"/>
-                                            <constraint firstItem="mSC-JU-xuk" firstAttribute="top" secondItem="jdW-oZ-cH8" secondAttribute="bottom" id="y2u-2j-cif"/>
-                                        </constraints>
-                                    </view>
-                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ogC-ph-Xdr" userLabel="View Link">
-                                        <rect key="frame" x="5" y="620" width="404" height="40"/>
-                                        <subviews>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Home server" textAlignment="natural" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PD5-8h-ZLm">
-                                                <rect key="frame" x="40" y="0.0" width="359" height="40"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="height" constant="40" id="hBZ-cQ-ZHg"/>
-                                                </constraints>
-                                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                                <nil key="textColor"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home" translatesAutoresizingMaskIntoConstraints="NO" id="pyf-iS-YYP">
-                                                <rect key="frame" x="0.0" y="5" width="30" height="30"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="height" constant="30" id="LkI-Fd-YBH"/>
-                                                    <constraint firstAttribute="width" constant="30" id="SVh-sE-fdn"/>
-                                                </constraints>
-                                            </imageView>
-                                        </subviews>
-                                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                        <constraints>
-                                            <constraint firstAttribute="trailing" secondItem="PD5-8h-ZLm" secondAttribute="trailing" constant="5" id="71i-FN-PmV"/>
-                                            <constraint firstItem="pyf-iS-YYP" firstAttribute="leading" secondItem="ogC-ph-Xdr" secondAttribute="leading" id="D7Q-nx-Lcr"/>
-                                            <constraint firstAttribute="height" constant="40" id="HZv-dy-zeu"/>
-                                            <constraint firstItem="PD5-8h-ZLm" firstAttribute="top" secondItem="ogC-ph-Xdr" secondAttribute="top" id="m3v-SO-f43"/>
-                                            <constraint firstItem="PD5-8h-ZLm" firstAttribute="leading" secondItem="pyf-iS-YYP" secondAttribute="trailing" constant="10" id="pD9-5x-n4a"/>
-                                            <constraint firstItem="pyf-iS-YYP" firstAttribute="top" secondItem="ogC-ph-Xdr" secondAttribute="top" constant="5" id="uht-S6-R6J"/>
-                                        </constraints>
-                                    </view>
-                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OO4-N7-9vp" userLabel="View JSON">
-                                        <rect key="frame" x="0.0" y="670" width="414" height="40.5"/>
-                                        <subviews>
-                                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" editable="NO" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="RIO-6X-GG1">
-                                                <rect key="frame" x="5" y="5" width="404" height="30.5"/>
-                                                <color key="backgroundColor" systemColor="systemGray4Color"/>
-                                                <color key="textColor" systemColor="labelColor"/>
-                                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
-                                            </textView>
-                                        </subviews>
-                                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                        <constraints>
-                                            <constraint firstItem="RIO-6X-GG1" firstAttribute="leading" secondItem="OO4-N7-9vp" secondAttribute="leading" constant="5" id="63w-yC-mGi"/>
-                                            <constraint firstAttribute="trailing" secondItem="RIO-6X-GG1" secondAttribute="trailing" constant="5" id="9cj-M6-K3f"/>
-                                            <constraint firstItem="RIO-6X-GG1" firstAttribute="top" secondItem="OO4-N7-9vp" secondAttribute="top" constant="5" id="ODH-TK-qMG"/>
-                                            <constraint firstAttribute="bottom" secondItem="RIO-6X-GG1" secondAttribute="bottom" constant="5" id="ajP-yK-idK"/>
-                                        </constraints>
-                                    </view>
-                                </subviews>
-                                <constraints>
-                                    <constraint firstItem="ogC-ph-Xdr" firstAttribute="top" secondItem="hTE-ys-qsF" secondAttribute="top" constant="620" id="9yP-Qs-EjJ"/>
-                                    <constraint firstItem="OO4-N7-9vp" firstAttribute="top" secondItem="hTE-ys-qsF" secondAttribute="top" constant="670" id="A9O-TK-Vz6" userLabel="View JSON.top = top + 550"/>
-                                    <constraint firstAttribute="trailing" secondItem="ogC-ph-Xdr" secondAttribute="trailing" constant="5" id="JLe-vC-Oyq"/>
-                                    <constraint firstAttribute="bottom" secondItem="OO4-N7-9vp" secondAttribute="bottom" id="MpX-OZ-MDh"/>
-                                    <constraint firstItem="OO4-N7-9vp" firstAttribute="width" secondItem="hTE-ys-qsF" secondAttribute="width" id="PWW-C3-Qcw"/>
-                                    <constraint firstItem="OO4-N7-9vp" firstAttribute="leading" secondItem="hTE-ys-qsF" secondAttribute="leading" id="Q4I-CY-qdY"/>
-                                    <constraint firstAttribute="trailing" secondItem="OO4-N7-9vp" secondAttribute="trailing" id="cmw-yc-oJP"/>
-                                    <constraint firstAttribute="trailing" secondItem="Sms-Ez-fLO" secondAttribute="trailing" constant="5" id="coa-ak-YgW"/>
-                                    <constraint firstItem="ogC-ph-Xdr" firstAttribute="leading" secondItem="hTE-ys-qsF" secondAttribute="leading" constant="5" id="dBH-cz-20F"/>
-                                    <constraint firstItem="Sms-Ez-fLO" firstAttribute="leading" secondItem="hTE-ys-qsF" secondAttribute="leading" constant="5" id="rIR-0f-qtc"/>
-                                    <constraint firstItem="Sms-Ez-fLO" firstAttribute="top" secondItem="hTE-ys-qsF" secondAttribute="top" constant="5" id="tsB-Td-qaK"/>
-                                </constraints>
-                            </scrollView>
-                        </subviews>
-                        <viewLayoutGuide key="safeArea" id="uBS-U0-Obf"/>
-                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                        <constraints>
-                            <constraint firstItem="uBS-U0-Obf" firstAttribute="trailing" secondItem="hTE-ys-qsF" secondAttribute="trailing" id="CvM-Hx-Hy6"/>
-                            <constraint firstItem="hTE-ys-qsF" firstAttribute="top" secondItem="uBS-U0-Obf" secondAttribute="top" id="Lar-wg-a7V"/>
-                            <constraint firstItem="hTE-ys-qsF" firstAttribute="leading" secondItem="uBS-U0-Obf" secondAttribute="leading" id="Mye-Fv-DDH"/>
-                            <constraint firstItem="uBS-U0-Obf" firstAttribute="bottom" secondItem="hTE-ys-qsF" secondAttribute="bottom" id="aJj-P3-LeK"/>
-                        </constraints>
-                    </view>
-                    <navigationItem key="navigationItem" id="fnR-ht-Muv"/>
-                    <connections>
-                        <outlet property="homeImage" destination="pyf-iS-YYP" id="gAh-bM-f5J"/>
-                        <outlet property="homeServer" destination="PD5-8h-ZLm" id="Hge-8o-YY1"/>
-                        <outlet property="imageActivity" destination="tl5-S1-p9X" id="pT5-X7-R2q"/>
-                        <outlet property="imageCollabora" destination="GXZ-Rj-WCE" id="cOv-xH-ZKC"/>
-                        <outlet property="imageComments" destination="cYf-px-izj" id="lU6-Vu-AKk"/>
-                        <outlet property="imageDeletedFiles" destination="8Zc-9W-n27" id="XYP-JN-JFc"/>
-                        <outlet property="imageEndToEndEncryption" destination="S7m-5Z-ktw" id="0Pv-Yt-YJB"/>
-                        <outlet property="imageExternalSite" destination="JWO-C0-32L" id="JKi-n1-5IQ"/>
-                        <outlet property="imageFileSharing" destination="G9c-Nd-Ikl" id="Wha-2g-8o0"/>
-                        <outlet property="imageLockFile" destination="eAC-Li-gKO" id="hHH-Pl-uOW"/>
-                        <outlet property="imageNotification" destination="cgb-3g-trc" id="fa5-99-76C"/>
-                        <outlet property="imageOnlyOffice" destination="xvv-h0-9bM" id="tw2-is-KHy"/>
-                        <outlet property="imageText" destination="iCB-2A-phO" id="uit-Ku-oOF"/>
-                        <outlet property="imageUserStatus" destination="Nxp-H1-Pob" id="LQg-7M-CNd"/>
-                        <outlet property="statusActivity" destination="dyb-1O-dIA" id="BfC-ZI-Wcr"/>
-                        <outlet property="statusCollabora" destination="30w-oC-gZl" id="wnj-OE-UQZ"/>
-                        <outlet property="statusComments" destination="lVT-MG-7kN" id="7tn-cz-EhW"/>
-                        <outlet property="statusDeletedFiles" destination="8hg-qK-qvz" id="xtt-gI-H0a"/>
-                        <outlet property="statusEndToEndEncryption" destination="M82-8U-M4Q" id="S9e-h3-GpF"/>
-                        <outlet property="statusExternalSite" destination="ivv-te-kaP" id="qzS-eo-Dq3"/>
-                        <outlet property="statusFileSharing" destination="SbT-rU-lJ8" id="zqA-0V-TLr"/>
-                        <outlet property="statusLockFile" destination="db5-st-O6M" id="dRt-zm-Qd7"/>
-                        <outlet property="statusNotification" destination="WAg-Hw-sQS" id="T5C-Ch-11o"/>
-                        <outlet property="statusOnlyOffice" destination="ucV-YG-5ht" id="11e-La-p9K"/>
-                        <outlet property="statusText" destination="uiz-H8-p3D" id="wLb-D2-MNS"/>
-                        <outlet property="statusUserStatus" destination="5Sj-5h-jgb" id="EXQ-7b-UCf"/>
-                        <outlet property="textView" destination="RIO-6X-GG1" id="lPs-Ev-hQf"/>
-                    </connections>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="0OV-l8-tBJ" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="910.14492753623199" y="133.25892857142856"/>
-        </scene>
-        <!--Navigation Controller-->
-        <scene sceneID="YbF-Ed-KAp">
-            <objects>
-                <navigationController automaticallyAdjustsScrollViewInsets="NO" id="vTK-Er-kbZ" sceneMemberID="viewController">
-                    <toolbarItems/>
-                    <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="f2L-7c-zw8">
-                        <rect key="frame" x="0.0" y="44" width="414" height="44"/>
-                        <autoresizingMask key="autoresizingMask"/>
-                    </navigationBar>
-                    <nil name="viewControllers"/>
-                    <connections>
-                        <segue destination="7oH-vf-YqN" kind="relationship" relationship="rootViewController" id="ZBj-sH-5gE"/>
-                    </connections>
-                </navigationController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="RAt-Xm-BSR" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="0.0" y="133.25892857142856"/>
-        </scene>
-    </scenes>
-    <resources>
-        <image name="activity" width="512" height="512"/>
-        <image name="collabora" width="425" height="425"/>
-        <image name="comments" width="425" height="425"/>
-        <image name="delete" width="425" height="425"/>
-        <image name="externalsites" width="425" height="425"/>
-        <image name="home" width="120" height="120"/>
-        <image name="lock" width="24" height="24"/>
-        <image name="notification" width="512" height="512"/>
-        <image name="onlyoffice" width="425" height="425"/>
-        <image name="share" width="512" height="512"/>
-        <image name="text" width="425" height="425"/>
-        <image name="userStatusAway" width="425" height="425"/>
-        <systemColor name="labelColor">
-            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-        </systemColor>
-        <systemColor name="systemBackgroundColor">
-            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-        </systemColor>
-        <systemColor name="systemGray4Color">
-            <color red="0.81960784313725488" green="0.81960784313725488" blue="0.83921568627450982" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-        </systemColor>
-    </resources>
-</document>

+ 0 - 350
iOSClient/Diagnostics/NCCapabilitiesViewController.swift

@@ -1,350 +0,0 @@
-//
-//  NCCapabilitiesViewController.swift
-//  Nextcloud
-//
-//  Created by Marino Faggiana on 28/07/2020.
-//  Copyright © 2020 Marino Faggiana. All rights reserved.
-//
-//  Author Marino Faggiana <marino.faggiana@nextcloud.com>
-//
-//  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 <http://www.gnu.org/licenses/>.
-//
-
-import UIKit
-import NextcloudKit
-
-class NCCapabilitiesViewController: UIViewController, UIDocumentInteractionControllerDelegate {
-
-    @IBOutlet weak var textView: UITextView!
-
-    @IBOutlet weak var imageFileSharing: UIImageView!
-    @IBOutlet weak var statusFileSharing: UILabel!
-
-    @IBOutlet weak var imageExternalSite: UIImageView!
-    @IBOutlet weak var statusExternalSite: UILabel!
-
-    @IBOutlet weak var imageEndToEndEncryption: UIImageView!
-    @IBOutlet weak var statusEndToEndEncryption: UILabel!
-
-    @IBOutlet weak var imageActivity: UIImageView!
-    @IBOutlet weak var statusActivity: UILabel!
-
-    @IBOutlet weak var imageNotification: UIImageView!
-    @IBOutlet weak var statusNotification: UILabel!
-
-    @IBOutlet weak var imageDeletedFiles: UIImageView!
-    @IBOutlet weak var statusDeletedFiles: UILabel!
-
-    @IBOutlet weak var imageUserStatus: UIImageView!
-    @IBOutlet weak var statusUserStatus: UILabel!
-
-    @IBOutlet weak var imageComments: UIImageView!
-    @IBOutlet weak var statusComments: UILabel!
-
-    @IBOutlet weak var imageText: UIImageView!
-    @IBOutlet weak var statusText: UILabel!
-
-    @IBOutlet weak var imageCollabora: UIImageView!
-    @IBOutlet weak var statusCollabora: UILabel!
-
-    @IBOutlet weak var imageOnlyOffice: UIImageView!
-    @IBOutlet weak var statusOnlyOffice: UILabel!
-
-    @IBOutlet weak var homeImage: UIImageView!
-    @IBOutlet weak var homeServer: UILabel!
-
-    @IBOutlet weak var imageLockFile: UIImageView!
-    @IBOutlet weak var statusLockFile: UILabel!
-
-    private let appDelegate = UIApplication.shared.delegate as! AppDelegate
-    private var documentController: UIDocumentInteractionController?
-    private var account: String = ""
-    private var capabilitiesText = ""
-    // private var timer: Timer?
-
-    // MARK: - View Life Cycle
-
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        self.title = NSLocalizedString("_capabilities_", comment: "")
-
-        let shareImage = UIImage(named: "shareFill")!.image(color: .gray, size: 25)
-        self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: shareImage, style: UIBarButtonItem.Style.plain, target: self, action: #selector(share))
-        self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("_done_", comment: ""), style: UIBarButtonItem.Style.plain, target: self, action: #selector(close))
-
-        textView.layer.cornerRadius = 15
-        textView.layer.masksToBounds = true
-        textView.backgroundColor = .secondarySystemBackground
-
-        statusFileSharing.layer.cornerRadius = 12.5
-        statusFileSharing.layer.borderWidth = 0.5
-        statusFileSharing.layer.borderColor = UIColor.systemGray.cgColor
-        statusFileSharing.layer.masksToBounds = true
-        statusFileSharing.backgroundColor = .secondarySystemBackground
-
-        statusExternalSite.layer.cornerRadius = 12.5
-        statusExternalSite.layer.borderWidth = 0.5
-        statusExternalSite.layer.borderColor = UIColor.systemGray.cgColor
-        statusExternalSite.layer.masksToBounds = true
-        statusExternalSite.backgroundColor = .secondarySystemBackground
-
-        statusEndToEndEncryption.layer.cornerRadius = 12.5
-        statusEndToEndEncryption.layer.borderWidth = 0.5
-        statusEndToEndEncryption.layer.borderColor = UIColor.systemGray.cgColor
-        statusEndToEndEncryption.layer.masksToBounds = true
-        statusEndToEndEncryption.backgroundColor = .secondarySystemBackground
-
-        statusActivity.layer.cornerRadius = 12.5
-        statusActivity.layer.borderWidth = 0.5
-        statusActivity.layer.borderColor = UIColor.systemGray.cgColor
-        statusActivity.layer.masksToBounds = true
-        statusActivity.backgroundColor = .secondarySystemBackground
-
-        statusNotification.layer.cornerRadius = 12.5
-        statusNotification.layer.borderWidth = 0.5
-        statusNotification.layer.borderColor = UIColor.systemGray.cgColor
-        statusNotification.layer.masksToBounds = true
-        statusNotification.backgroundColor = .secondarySystemBackground
-
-        statusDeletedFiles.layer.cornerRadius = 12.5
-        statusDeletedFiles.layer.borderWidth = 0.5
-        statusDeletedFiles.layer.borderColor = UIColor.systemGray.cgColor
-        statusDeletedFiles.layer.masksToBounds = true
-        statusDeletedFiles.backgroundColor = .secondarySystemBackground
-
-        statusText.layer.cornerRadius = 12.5
-        statusText.layer.borderWidth = 0.5
-        statusText.layer.borderColor = UIColor.systemGray.cgColor
-        statusText.layer.masksToBounds = true
-        statusText.backgroundColor = .secondarySystemBackground
-
-        statusCollabora.layer.cornerRadius = 12.5
-        statusCollabora.layer.borderWidth = 0.5
-        statusCollabora.layer.borderColor = UIColor.systemGray.cgColor
-        statusCollabora.layer.masksToBounds = true
-        statusCollabora.backgroundColor = .secondarySystemBackground
-
-        statusOnlyOffice.layer.cornerRadius = 12.5
-        statusOnlyOffice.layer.borderWidth = 0.5
-        statusOnlyOffice.layer.borderColor = UIColor.systemGray.cgColor
-        statusOnlyOffice.layer.masksToBounds = true
-        statusOnlyOffice.backgroundColor = .secondarySystemBackground
-
-        statusUserStatus.layer.cornerRadius = 12.5
-        statusUserStatus.layer.borderWidth = 0.5
-        statusUserStatus.layer.borderColor = UIColor.systemGray.cgColor
-        statusUserStatus.layer.masksToBounds = true
-        statusUserStatus.backgroundColor = .secondarySystemBackground
-
-        statusComments.layer.cornerRadius = 12.5
-        statusComments.layer.borderWidth = 0.5
-        statusComments.layer.borderColor = UIColor.systemGray.cgColor
-        statusComments.layer.masksToBounds = true
-        statusComments.backgroundColor = .secondarySystemBackground
-
-        statusLockFile.layer.cornerRadius = 12.5
-        statusLockFile.layer.borderWidth = 0.5
-        statusLockFile.layer.borderColor = UIColor.systemGray.cgColor
-        statusLockFile.layer.masksToBounds = true
-        statusLockFile.backgroundColor = .secondarySystemBackground
-
-        imageFileSharing.image = UIImage(named: "share")!.image(color: UIColor.systemGray, size: 50)
-        imageExternalSite.image = NCUtility.shared.loadImage(named: "network", color: UIColor.systemGray)
-        imageEndToEndEncryption.image = NCUtility.shared.loadImage(named: "lock", color: UIColor.systemGray)
-        imageActivity.image = NCUtility.shared.loadImage(named: "bolt", color: UIColor.systemGray)
-        imageNotification.image = NCUtility.shared.loadImage(named: "bell", color: UIColor.systemGray)
-        imageDeletedFiles.image = NCUtility.shared.loadImage(named: "trash", color: UIColor.systemGray)
-        imageText.image = UIImage(named: "text")!.image(color: UIColor.systemGray, size: 50)
-        imageCollabora.image = UIImage(named: "collabora")!.image(color: UIColor.systemGray, size: 50)
-        imageOnlyOffice.image = UIImage(named: "onlyoffice")!.image(color: UIColor.systemGray, size: 50)
-        imageUserStatus.image = UIImage(named: "userStatusAway")!.image(color: UIColor.systemGray, size: 50)
-        imageComments.image = UIImage(named: "comments")!.image(color: UIColor.systemGray, size: 50)
-        imageLockFile.image = UIImage(named: "lock")!.image(color: UIColor.systemGray, size: 50)
-
-        guard let activeAccount = NCManageDatabase.shared.getActiveAccount() else { return }
-        self.account = activeAccount.account
-
-        if let text = NCManageDatabase.shared.getCapabilities(account: activeAccount.account) {
-            capabilitiesText = text
-            updateCapabilities()
-        } else {
-            let error = NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_no_capabilities_found_")
-            NCContentPresenter.shared.showError(error: error, priority: .max)
-
-            DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
-                self.dismiss(animated: true, completion: nil)
-            }
-        }
-
-        homeImage.image = UIImage(named: "home")!.image(color: UIColor.systemGray, size: 50)
-        homeServer.text = NCUtilityFileSystem.shared.getHomeServer(urlBase: appDelegate.urlBase, userId: appDelegate.userId) + "/"
-    }
-
-    @objc func updateCapabilities() {
-
-        NextcloudKit.shared.getCapabilities { account, data, error in
-            if error == .success && data != nil {
-                NCManageDatabase.shared.addCapabilitiesJSon(data!, account: account)
-
-                // EDITORS
-                let serverVersionMajor = NCManageDatabase.shared.getCapabilitiesServerInt(account: account, elements: NCElementsJSON.shared.capabilitiesVersionMajor)
-                if serverVersionMajor >= NCGlobal.shared.nextcloudVersion18 {
-                    NextcloudKit.shared.NCTextObtainEditorDetails { account, editors, creators, data, error in
-                        if error == .success && account == self.appDelegate.account {
-                            NCManageDatabase.shared.addDirectEditing(account: account, editors: editors, creators: creators)
-                            self.readCapabilities()
-                        }
-                        if self.view.window != nil {
-                            // self.timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.updateCapabilities), userInfo: nil, repeats: false)
-                        }
-                    }
-                } else {
-                    if self.view.window != nil {
-                        // self.timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.updateCapabilities), userInfo: nil, repeats: false)
-                    }
-                }
-
-                if let text = NCManageDatabase.shared.getCapabilities(account: account) {
-                    self.capabilitiesText = text
-                }
-                self.readCapabilities()
-            }
-        }
-
-        readCapabilities()
-    }
-
-    @objc func share() {
-        // timer?.invalidate()
-        self.dismiss(animated: true) {
-            let fileURL = NSURL.fileURL(withPath: NSTemporaryDirectory(), isDirectory: true).appendingPathComponent("capabilities.txt")
-            do {
-                try self.capabilitiesText.write(to: fileURL, atomically: true, encoding: .utf8)
-
-                if let view = self.appDelegate.window?.rootViewController?.view {
-                    self.documentController = UIDocumentInteractionController(url: fileURL)
-                    self.documentController?.delegate = self
-                    self.documentController?.presentOptionsMenu(from: CGRect.zero, in: view, animated: true)
-                }
-            } catch { }
-        }
-    }
-
-    @objc func close() {
-        // timer?.invalidate()
-        self.dismiss(animated: true, completion: nil)
-    }
-
-    func readCapabilities() {
-
-        textView.text = capabilitiesText
-
-        if NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFileSharingApiEnabled, exists: false) {
-            statusFileSharing.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusFileSharing.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        if NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesExternalSitesExists, exists: true) {
-            statusExternalSite.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusExternalSite.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        let isE2EEEnabled = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesE2EEEnabled, exists: false)
-        // let versionE2EE = NCManageDatabase.shared.getCapabilitiesServerString(account: account, elements: NCElementsJSON.shared.capabilitiesE2EEApiVersion)
-
-        if isE2EEEnabled {
-            statusEndToEndEncryption.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusEndToEndEncryption.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        let activity = NCManageDatabase.shared.getCapabilitiesServerArray(account: account, elements: NCElementsJSON.shared.capabilitiesActivity)
-        if activity != nil {
-            statusActivity.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusActivity.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        let notification = NCManageDatabase.shared.getCapabilitiesServerArray(account: account, elements: NCElementsJSON.shared.capabilitiesNotification)
-        if notification != nil {
-            statusNotification.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusNotification.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        let deleteFiles = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFilesUndelete, exists: false)
-        if deleteFiles {
-            statusDeletedFiles.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusDeletedFiles.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        var textEditor = false
-        var onlyofficeEditors = false
-        if let editors = NCManageDatabase.shared.getDirectEditingEditors(account: account) {
-            for editor in editors {
-                if editor.editor == NCGlobal.shared.editorText {
-                    textEditor = true
-                } else if editor.editor == NCGlobal.shared.editorOnlyoffice {
-                    onlyofficeEditors = true
-                }
-            }
-        }
-
-        if textEditor {
-            statusText.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusText.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        let richdocumentsMimetypes = NCManageDatabase.shared.getCapabilitiesServerArray(account: account, elements: NCElementsJSON.shared.capabilitiesRichdocumentsMimetypes)
-        if richdocumentsMimetypes != nil {
-            statusCollabora.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusCollabora.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        if onlyofficeEditors {
-            statusOnlyOffice.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusOnlyOffice.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        let userStatus = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesUserStatusEnabled, exists: false)
-        if userStatus {
-            statusUserStatus.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusUserStatus.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        let comments = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFilesComments, exists: false)
-        if comments {
-            statusComments.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusComments.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        let hasLockCapability = NCManageDatabase.shared.getCapabilitiesServerInt(account: appDelegate.account, elements: NCElementsJSON.shared.capabilitiesFilesLockVersion) >= 1
-        if hasLockCapability {
-            statusLockFile.text = "✓ " + NSLocalizedString("_available_", comment: "")
-        } else {
-            statusLockFile.text = NSLocalizedString("_not_available_", comment: "")
-        }
-
-        print("end.")
-    }
-}

+ 1 - 1
iOSClient/Networking/NCService.swift

@@ -214,7 +214,7 @@ class NCService: NSObject {
             }
 
             // External file Server
-            let isExternalSitesServerEnabled = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesExternalSitesExists, exists: true)
+            let isExternalSitesServerEnabled = NCManageDatabase.shared.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesExternalSites, exists: true)
             if isExternalSitesServerEnabled {
                 NextcloudKit.shared.getExternalSite(options: options) { account, externalSites, data, error in
                     if error == .success && account == self.appDelegate.account {

+ 3 - 3
iOSClient/Settings/CCAdvanced.m

@@ -203,9 +203,9 @@
     row.action.formBlock = ^(XLFormRowDescriptor * sender) {
                 
         [self deselectFormRow:sender];
-        
-        NCCapabilitiesViewController *capabilities = [[UIStoryboard storyboardWithName:@"NCCapabilitiesViewController" bundle:nil] instantiateInitialViewController];        
-        [self presentViewController:capabilities animated:YES completion:nil];
+
+        UIViewController *vc = [[NCHostingCapabilitiesView alloc] makeShipDetailsUI];
+        [self.navigationController pushViewController:vc animated:YES];
     };
     [section addFormRow:row];