--- /dev/null
+/*
+ * Copyright (C) 2023 by Claudio Cambra <claudio.cambra@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 2 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.
+ */
+
+import Foundation
+import RealmSwift
+
+class NextcloudDirectoryMetadataTable: Object {
+ func isInSameRemoteState(_ comparingMetadata: NextcloudDirectoryMetadataTable) -> Bool {
+ return comparingMetadata.etag == self.etag &&
+ comparingMetadata.e2eEncrypted == self.e2eEncrypted &&
+ comparingMetadata.favorite == self.favorite &&
+ comparingMetadata.permissions == self.permissions
+ }
+
+ @Persisted(primaryKey: true) var ocId: String
+ @Persisted var account = ""
+ @Persisted var colorFolder: String?
+ @Persisted var e2eEncrypted: Bool = false
+ @Persisted var etag = ""
+ @Persisted var favorite: Bool = false
+ @Persisted var fileId = ""
+ @Persisted var offline: Bool = false
+ @Persisted var permissions = ""
+ @Persisted var richWorkspace: String?
+ @Persisted var serverUrl = ""
+ @Persisted var parentDirectoryServerUrl = ""
+}
+++ /dev/null
-/*
- * Copyright (C) 2022 by Claudio Cambra <claudio.cambra@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 2 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.
- */
-
-import Foundation
-import RealmSwift
-import FileProvider
-import NextcloudKit
-
-class NextcloudItemMetadataTable: Object {
- enum Status: Int {
- case downloadError = -4
- case downloading = -3
- case inDownload = -2
- case waitDownload = -1
-
- case normal = 0
-
- case waitUpload = 1
- case inUpload = 2
- case uploading = 3
- case uploadError = 4
- }
-
- enum SharePermissions: Int {
- case readShare = 1
- case updateShare = 2
- case createShare = 4
- case deleteShare = 8
- case shareShare = 16
-
- case maxFileShare = 19
- case maxFolderShare = 31
- }
-
- override func isEqual(_ object: Any?) -> Bool {
- if let object = object as? NextcloudItemMetadataTable {
- return self.fileId == object.fileId &&
- self.account == object.account &&
- self.path == object.path &&
- self.fileName == object.fileName
- }
-
- return false
- }
-
- func isInSameDatabaseStoreableRemoteState(_ comparingMetadata: NextcloudItemMetadataTable) -> Bool {
- return comparingMetadata.etag == self.etag &&
- comparingMetadata.fileNameView == self.fileNameView &&
- comparingMetadata.date == self.date &&
- comparingMetadata.permissions == self.permissions &&
- comparingMetadata.hasPreview == self.hasPreview &&
- comparingMetadata.note == self.note &&
- comparingMetadata.lock == self.lock &&
- comparingMetadata.sharePermissionsCollaborationServices == self.sharePermissionsCollaborationServices &&
- comparingMetadata.favorite == self.favorite
- }
-
- @Persisted(primaryKey: true) var ocId: String
- @Persisted var account = ""
- @Persisted var assetLocalIdentifier = ""
- @Persisted var checksums = ""
- @Persisted var chunk: Bool = false
- @Persisted var classFile = ""
- @Persisted var commentsUnread: Bool = false
- @Persisted var contentType = ""
- @Persisted var creationDate = Date()
- @Persisted var dataFingerprint = ""
- @Persisted var date = Date()
- @Persisted var directory: Bool = false
- @Persisted var deleteAssetLocalIdentifier: Bool = false
- @Persisted var downloadURL = ""
- @Persisted var e2eEncrypted: Bool = false
- @Persisted var edited: Bool = false
- @Persisted var etag = ""
- @Persisted var etagResource = ""
- @Persisted var favorite: Bool = false
- @Persisted var fileId = ""
- @Persisted var fileName = ""
- @Persisted var fileNameView = ""
- @Persisted var hasPreview: Bool = false
- @Persisted var iconName = ""
- @Persisted var iconUrl = ""
- @Persisted var isExtractFile: Bool = false
- @Persisted var livePhoto: Bool = false
- @Persisted var mountType = ""
- @Persisted var name = "" // for unifiedSearch is the provider.id
- @Persisted var note = ""
- @Persisted var ownerId = ""
- @Persisted var ownerDisplayName = ""
- @Persisted var lock = false
- @Persisted var lockOwner = ""
- @Persisted var lockOwnerEditor = ""
- @Persisted var lockOwnerType = 0
- @Persisted var lockOwnerDisplayName = ""
- @Persisted var lockTime: Date?
- @Persisted var lockTimeOut: Date?
- @Persisted var path = ""
- @Persisted var permissions = ""
- @Persisted var quotaUsedBytes: Int64 = 0
- @Persisted var quotaAvailableBytes: Int64 = 0
- @Persisted var resourceType = ""
- @Persisted var richWorkspace: String?
- @Persisted var serverUrl = "" // For parent directory!!
- @Persisted var session = ""
- @Persisted var sessionError = ""
- @Persisted var sessionSelector = ""
- @Persisted var sessionTaskIdentifier: Int = 0
- @Persisted var sharePermissionsCollaborationServices: Int = 0
- let sharePermissionsCloudMesh = List<String>() // TODO: Find a way to compare these in remote state check
- let shareType = List<Int>()
- @Persisted var size: Int64 = 0
- @Persisted var status: Int = 0
- @Persisted var subline: String?
- @Persisted var trashbinFileName = ""
- @Persisted var trashbinOriginalLocation = ""
- @Persisted var trashbinDeletionTime = Date()
- @Persisted var uploadDate = Date()
- @Persisted var url = ""
- @Persisted var urlBase = ""
- @Persisted var user = ""
- @Persisted var userId = ""
-
- var fileExtension: String {
- (fileNameView as NSString).pathExtension
- }
-
- var fileNoExtension: String {
- (fileNameView as NSString).deletingPathExtension
- }
-
- var isRenameable: Bool {
- return lock
- }
-
- var isPrintable: Bool {
- if isDocumentViewableOnly {
- return false
- }
- if ["application/pdf", "com.adobe.pdf"].contains(contentType) || contentType.hasPrefix("text/") || classFile == NKCommon.TypeClassFile.image.rawValue {
- return true
- }
- return false
- }
-
- var isDocumentViewableOnly: Bool {
- return sharePermissionsCollaborationServices == SharePermissions.readShare.rawValue &&
- classFile == NKCommon.TypeClassFile.document.rawValue
- }
-
- var isCopyableInPasteboard: Bool {
- !isDocumentViewableOnly && !directory
- }
-
- var isModifiableWithQuickLook: Bool {
- if directory || isDocumentViewableOnly {
- return false
- }
- return contentType == "com.adobe.pdf" || contentType == "application/pdf" || classFile == NKCommon.TypeClassFile.image.rawValue
- }
-
- var isSettableOnOffline: Bool {
- return session.isEmpty && !isDocumentViewableOnly
- }
-
- var canOpenIn: Bool {
- return session.isEmpty && !isDocumentViewableOnly && !directory
- }
-
- var isDownloadUpload: Bool {
- return status == Status.inDownload.rawValue ||
- status == Status.downloading.rawValue ||
- status == Status.inUpload.rawValue ||
- status == Status.uploading.rawValue
- }
-
- var isDownload: Bool {
- status == Status.inDownload.rawValue || status == Status.downloading.rawValue
- }
-
- var isUpload: Bool {
- status == Status.inUpload.rawValue || status == Status.uploading.rawValue
- }
-
- /// Returns false if the user is lokced out of the file. I.e. The file is locked but by somone else
- func canUnlock(as user: String) -> Bool {
- return !lock || (lockOwner == user && lockOwnerType == 0)
- }
-}
-
-class NextcloudDirectoryMetadataTable: Object {
- func isInSameRemoteState(_ comparingMetadata: NextcloudDirectoryMetadataTable) -> Bool {
- return comparingMetadata.etag == self.etag &&
- comparingMetadata.e2eEncrypted == self.e2eEncrypted &&
- comparingMetadata.favorite == self.favorite &&
- comparingMetadata.permissions == self.permissions
- }
-
- @Persisted(primaryKey: true) var ocId: String
- @Persisted var account = ""
- @Persisted var colorFolder: String?
- @Persisted var e2eEncrypted: Bool = false
- @Persisted var etag = ""
- @Persisted var favorite: Bool = false
- @Persisted var fileId = ""
- @Persisted var offline: Bool = false
- @Persisted var permissions = ""
- @Persisted var richWorkspace: String?
- @Persisted var serverUrl = ""
- @Persisted var parentDirectoryServerUrl = ""
-}
-
-class NextcloudLocalFileMetadataTable: Object {
- @Persisted(primaryKey: true) var ocId: String
- @Persisted var account = ""
- @Persisted var etag = ""
- @Persisted var exifDate: Date?
- @Persisted var exifLatitude = ""
- @Persisted var exifLongitude = ""
- @Persisted var exifLensModel: String?
- @Persisted var favorite: Bool = false
- @Persisted var fileName = ""
- @Persisted var offline: Bool = false
-}
--- /dev/null
+/*
+ * Copyright (C) 2023 by Claudio Cambra <claudio.cambra@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 2 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.
+ */
+
+import Foundation
+import RealmSwift
+import FileProvider
+import NextcloudKit
+
+class NextcloudItemMetadataTable: Object {
+ enum Status: Int {
+ case downloadError = -4
+ case downloading = -3
+ case inDownload = -2
+ case waitDownload = -1
+
+ case normal = 0
+
+ case waitUpload = 1
+ case inUpload = 2
+ case uploading = 3
+ case uploadError = 4
+ }
+
+ enum SharePermissions: Int {
+ case readShare = 1
+ case updateShare = 2
+ case createShare = 4
+ case deleteShare = 8
+ case shareShare = 16
+
+ case maxFileShare = 19
+ case maxFolderShare = 31
+ }
+
+ override func isEqual(_ object: Any?) -> Bool {
+ if let object = object as? NextcloudItemMetadataTable {
+ return self.fileId == object.fileId &&
+ self.account == object.account &&
+ self.path == object.path &&
+ self.fileName == object.fileName
+ }
+
+ return false
+ }
+
+ func isInSameDatabaseStoreableRemoteState(_ comparingMetadata: NextcloudItemMetadataTable) -> Bool {
+ return comparingMetadata.etag == self.etag &&
+ comparingMetadata.fileNameView == self.fileNameView &&
+ comparingMetadata.date == self.date &&
+ comparingMetadata.permissions == self.permissions &&
+ comparingMetadata.hasPreview == self.hasPreview &&
+ comparingMetadata.note == self.note &&
+ comparingMetadata.lock == self.lock &&
+ comparingMetadata.sharePermissionsCollaborationServices == self.sharePermissionsCollaborationServices &&
+ comparingMetadata.favorite == self.favorite
+ }
+
+ @Persisted(primaryKey: true) var ocId: String
+ @Persisted var account = ""
+ @Persisted var assetLocalIdentifier = ""
+ @Persisted var checksums = ""
+ @Persisted var chunk: Bool = false
+ @Persisted var classFile = ""
+ @Persisted var commentsUnread: Bool = false
+ @Persisted var contentType = ""
+ @Persisted var creationDate = Date()
+ @Persisted var dataFingerprint = ""
+ @Persisted var date = Date()
+ @Persisted var directory: Bool = false
+ @Persisted var deleteAssetLocalIdentifier: Bool = false
+ @Persisted var downloadURL = ""
+ @Persisted var e2eEncrypted: Bool = false
+ @Persisted var edited: Bool = false
+ @Persisted var etag = ""
+ @Persisted var etagResource = ""
+ @Persisted var favorite: Bool = false
+ @Persisted var fileId = ""
+ @Persisted var fileName = ""
+ @Persisted var fileNameView = ""
+ @Persisted var hasPreview: Bool = false
+ @Persisted var iconName = ""
+ @Persisted var iconUrl = ""
+ @Persisted var isExtractFile: Bool = false
+ @Persisted var livePhoto: Bool = false
+ @Persisted var mountType = ""
+ @Persisted var name = "" // for unifiedSearch is the provider.id
+ @Persisted var note = ""
+ @Persisted var ownerId = ""
+ @Persisted var ownerDisplayName = ""
+ @Persisted var lock = false
+ @Persisted var lockOwner = ""
+ @Persisted var lockOwnerEditor = ""
+ @Persisted var lockOwnerType = 0
+ @Persisted var lockOwnerDisplayName = ""
+ @Persisted var lockTime: Date?
+ @Persisted var lockTimeOut: Date?
+ @Persisted var path = ""
+ @Persisted var permissions = ""
+ @Persisted var quotaUsedBytes: Int64 = 0
+ @Persisted var quotaAvailableBytes: Int64 = 0
+ @Persisted var resourceType = ""
+ @Persisted var richWorkspace: String?
+ @Persisted var serverUrl = "" // For parent directory!!
+ @Persisted var session = ""
+ @Persisted var sessionError = ""
+ @Persisted var sessionSelector = ""
+ @Persisted var sessionTaskIdentifier: Int = 0
+ @Persisted var sharePermissionsCollaborationServices: Int = 0
+ let sharePermissionsCloudMesh = List<String>() // TODO: Find a way to compare these in remote state check
+ let shareType = List<Int>()
+ @Persisted var size: Int64 = 0
+ @Persisted var status: Int = 0
+ @Persisted var subline: String?
+ @Persisted var trashbinFileName = ""
+ @Persisted var trashbinOriginalLocation = ""
+ @Persisted var trashbinDeletionTime = Date()
+ @Persisted var uploadDate = Date()
+ @Persisted var url = ""
+ @Persisted var urlBase = ""
+ @Persisted var user = ""
+ @Persisted var userId = ""
+
+ var fileExtension: String {
+ (fileNameView as NSString).pathExtension
+ }
+
+ var fileNoExtension: String {
+ (fileNameView as NSString).deletingPathExtension
+ }
+
+ var isRenameable: Bool {
+ return lock
+ }
+
+ var isPrintable: Bool {
+ if isDocumentViewableOnly {
+ return false
+ }
+ if ["application/pdf", "com.adobe.pdf"].contains(contentType) || contentType.hasPrefix("text/") || classFile == NKCommon.TypeClassFile.image.rawValue {
+ return true
+ }
+ return false
+ }
+
+ var isDocumentViewableOnly: Bool {
+ return sharePermissionsCollaborationServices == SharePermissions.readShare.rawValue &&
+ classFile == NKCommon.TypeClassFile.document.rawValue
+ }
+
+ var isCopyableInPasteboard: Bool {
+ !isDocumentViewableOnly && !directory
+ }
+
+ var isModifiableWithQuickLook: Bool {
+ if directory || isDocumentViewableOnly {
+ return false
+ }
+ return contentType == "com.adobe.pdf" || contentType == "application/pdf" || classFile == NKCommon.TypeClassFile.image.rawValue
+ }
+
+ var isSettableOnOffline: Bool {
+ return session.isEmpty && !isDocumentViewableOnly
+ }
+
+ var canOpenIn: Bool {
+ return session.isEmpty && !isDocumentViewableOnly && !directory
+ }
+
+ var isDownloadUpload: Bool {
+ return status == Status.inDownload.rawValue ||
+ status == Status.downloading.rawValue ||
+ status == Status.inUpload.rawValue ||
+ status == Status.uploading.rawValue
+ }
+
+ var isDownload: Bool {
+ status == Status.inDownload.rawValue || status == Status.downloading.rawValue
+ }
+
+ var isUpload: Bool {
+ status == Status.inUpload.rawValue || status == Status.uploading.rawValue
+ }
+
+ /// Returns false if the user is lokced out of the file. I.e. The file is locked but by somone else
+ func canUnlock(as user: String) -> Bool {
+ return !lock || (lockOwner == user && lockOwnerType == 0)
+ }
+}
--- /dev/null
+/*
+ * Copyright (C) 2023 by Claudio Cambra <claudio.cambra@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 2 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.
+ */
+
+import Foundation
+import RealmSwift
+
+class NextcloudLocalFileMetadataTable: Object {
+ @Persisted(primaryKey: true) var ocId: String
+ @Persisted var account = ""
+ @Persisted var etag = ""
+ @Persisted var exifDate: Date?
+ @Persisted var exifLatitude = ""
+ @Persisted var exifLongitude = ""
+ @Persisted var exifLensModel: String?
+ @Persisted var favorite: Bool = false
+ @Persisted var fileName = ""
+ @Persisted var offline: Bool = false
+}
5307A6E62965C6FA001E0C6A /* NextcloudKit in Frameworks */ = {isa = PBXBuildFile; productRef = 5307A6E52965C6FA001E0C6A /* NextcloudKit */; };
5307A6E82965DAD8001E0C6A /* NextcloudKit in Frameworks */ = {isa = PBXBuildFile; productRef = 5307A6E72965DAD8001E0C6A /* NextcloudKit */; };
5307A6EB2965DB8D001E0C6A /* RealmSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 5307A6EA2965DB8D001E0C6A /* RealmSwift */; };
- 5307A6F029674953001E0C6A /* NextcloudFilesDatabaseTables.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5307A6EF29674953001E0C6A /* NextcloudFilesDatabaseTables.swift */; };
5307A6F229675346001E0C6A /* NextcloudFilesDatabaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5307A6F129675346001E0C6A /* NextcloudFilesDatabaseManager.swift */; };
+ 5318AD9129BF42FB00CBB71C /* NextcloudItemMetadataTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5318AD9029BF42FB00CBB71C /* NextcloudItemMetadataTable.swift */; };
+ 5318AD9329BF432B00CBB71C /* NextcloudDirectoryMetadataTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5318AD9229BF432B00CBB71C /* NextcloudDirectoryMetadataTable.swift */; };
+ 5318AD9529BF438F00CBB71C /* NextcloudLocalFileMetadataTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5318AD9429BF438F00CBB71C /* NextcloudLocalFileMetadataTable.swift */; };
5352E85B29B7BFE6002CE85C /* Progress+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5352E85A29B7BFE6002CE85C /* Progress+Extensions.swift */; };
536EFBF7295CF58100F4CB13 /* FileProviderSocketLineProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 536EFBF6295CF58100F4CB13 /* FileProviderSocketLineProcessor.swift */; };
536EFC36295E3C1100F4CB13 /* NextcloudAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 536EFC35295E3C1100F4CB13 /* NextcloudAccount.swift */; };
53903D352956184400D0B308 /* LocalSocketClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 539158B127BE891500816F56 /* LocalSocketClient.h */; settings = {ATTRIBUTES = (Public, ); }; };
53903D37295618A400D0B308 /* LineProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 53903D36295618A400D0B308 /* LineProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; };
539158AC27BE71A900816F56 /* FinderSyncSocketLineProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 539158AB27BE71A900816F56 /* FinderSyncSocketLineProcessor.m */; };
- 53D056312970594F00988392 /* NextcloudFileProviderFilesUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53D056302970594F00988392 /* NextcloudFileProviderFilesUtils.swift */; };
+ 53D056312970594F00988392 /* LocalFilesUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53D056302970594F00988392 /* LocalFilesUtils.swift */; };
C2B573BA1B1CD91E00303B36 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B573B91B1CD91E00303B36 /* main.m */; };
C2B573D21B1CD94B00303B36 /* main.m in Resources */ = {isa = PBXBuildFile; fileRef = C2B573B91B1CD91E00303B36 /* main.m */; };
C2B573DE1B1CD9CE00303B36 /* FinderSync.m in Sources */ = {isa = PBXBuildFile; fileRef = C2B573DD1B1CD9CE00303B36 /* FinderSync.m */; };
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
- 5307A6EF29674953001E0C6A /* NextcloudFilesDatabaseTables.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextcloudFilesDatabaseTables.swift; sourceTree = "<group>"; };
5307A6F129675346001E0C6A /* NextcloudFilesDatabaseManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextcloudFilesDatabaseManager.swift; sourceTree = "<group>"; };
+ 5318AD9029BF42FB00CBB71C /* NextcloudItemMetadataTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextcloudItemMetadataTable.swift; sourceTree = "<group>"; };
+ 5318AD9229BF432B00CBB71C /* NextcloudDirectoryMetadataTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextcloudDirectoryMetadataTable.swift; sourceTree = "<group>"; };
+ 5318AD9429BF438F00CBB71C /* NextcloudLocalFileMetadataTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextcloudLocalFileMetadataTable.swift; sourceTree = "<group>"; };
5352E85A29B7BFE6002CE85C /* Progress+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Progress+Extensions.swift"; sourceTree = "<group>"; };
536EFBF6295CF58100F4CB13 /* FileProviderSocketLineProcessor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileProviderSocketLineProcessor.swift; sourceTree = "<group>"; };
536EFC35295E3C1100F4CB13 /* NextcloudAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextcloudAccount.swift; sourceTree = "<group>"; };
539158AB27BE71A900816F56 /* FinderSyncSocketLineProcessor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FinderSyncSocketLineProcessor.m; sourceTree = "<group>"; };
539158B127BE891500816F56 /* LocalSocketClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LocalSocketClient.h; sourceTree = "<group>"; };
539158B227BEC98A00816F56 /* LocalSocketClient.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LocalSocketClient.m; sourceTree = "<group>"; };
- 53D056302970594F00988392 /* NextcloudFileProviderFilesUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextcloudFileProviderFilesUtils.swift; sourceTree = "<group>"; };
+ 53D056302970594F00988392 /* LocalFilesUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalFilesUtils.swift; sourceTree = "<group>"; };
C2B573B11B1CD91E00303B36 /* desktopclient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = desktopclient.app; sourceTree = BUILT_PRODUCTS_DIR; };
C2B573B51B1CD91E00303B36 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C2B573B91B1CD91E00303B36 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 5318AD8F29BF406500CBB71C /* Database */ = {
+ isa = PBXGroup;
+ children = (
+ 5307A6F129675346001E0C6A /* NextcloudFilesDatabaseManager.swift */,
+ 5318AD9029BF42FB00CBB71C /* NextcloudItemMetadataTable.swift */,
+ 5318AD9229BF432B00CBB71C /* NextcloudDirectoryMetadataTable.swift */,
+ 5318AD9429BF438F00CBB71C /* NextcloudLocalFileMetadataTable.swift */,
+ );
+ path = Database;
+ sourceTree = "<group>";
+ };
5352E85929B7BFB4002CE85C /* Extensions */ = {
isa = PBXGroup;
children = (
538E396B27F4765000FA63D5 /* FileProviderExt */ = {
isa = PBXGroup;
children = (
+ 5318AD8F29BF406500CBB71C /* Database */,
5352E85929B7BFB4002CE85C /* Extensions */,
538E397027F4765000FA63D5 /* FileProviderEnumerator.swift */,
538E396C27F4765000FA63D5 /* FileProviderExtension.swift */,
538E396E27F4765000FA63D5 /* FileProviderItem.swift */,
536EFBF6295CF58100F4CB13 /* FileProviderSocketLineProcessor.swift */,
536EFC35295E3C1100F4CB13 /* NextcloudAccount.swift */,
- 53D056302970594F00988392 /* NextcloudFileProviderFilesUtils.swift */,
- 5307A6F129675346001E0C6A /* NextcloudFilesDatabaseManager.swift */,
- 5307A6EF29674953001E0C6A /* NextcloudFilesDatabaseTables.swift */,
+ 53D056302970594F00988392 /* LocalFilesUtils.swift */,
538E397327F4765000FA63D5 /* FileProviderExt.entitlements */,
538E397227F4765000FA63D5 /* Info.plist */,
);
buildActionMask = 2147483647;
files = (
5352E85B29B7BFE6002CE85C /* Progress+Extensions.swift in Sources */,
- 5307A6F029674953001E0C6A /* NextcloudFilesDatabaseTables.swift in Sources */,
536EFC36295E3C1100F4CB13 /* NextcloudAccount.swift in Sources */,
538E396D27F4765000FA63D5 /* FileProviderExtension.swift in Sources */,
+ 5318AD9329BF432B00CBB71C /* NextcloudDirectoryMetadataTable.swift in Sources */,
536EFBF7295CF58100F4CB13 /* FileProviderSocketLineProcessor.swift in Sources */,
+ 5318AD9529BF438F00CBB71C /* NextcloudLocalFileMetadataTable.swift in Sources */,
5307A6F229675346001E0C6A /* NextcloudFilesDatabaseManager.swift in Sources */,
- 53D056312970594F00988392 /* NextcloudFileProviderFilesUtils.swift in Sources */,
+ 53D056312970594F00988392 /* LocalFilesUtils.swift in Sources */,
538E396F27F4765000FA63D5 /* FileProviderItem.swift in Sources */,
+ 5318AD9129BF42FB00CBB71C /* NextcloudItemMetadataTable.swift in Sources */,
538E397127F4765000FA63D5 /* FileProviderEnumerator.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/nextcloud/NextcloudKit";
requirement = {
- branch = "develop";
+ branch = develop;
kind = branch;
};
};