123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- import FileProvider
- class FileProviderItem: NSObject, NSFileProviderItem {
-
-
-
- var itemIdentifier: NSFileProviderItemIdentifier
- var filename: String = ""
- var typeIdentifier: String = ""
- var capabilities: NSFileProviderItemCapabilities {
-
- if (self.isDirectory) {
- return [ .allowsAddingSubItems, .allowsContentEnumerating, .allowsReading, .allowsDeleting ]
- } else {
- return [ .allowsReading, .allowsDeleting ]
- }
- }
-
-
- var childItemCount: NSNumber?
- var documentSize: NSNumber?
-
- var parentItemIdentifier: NSFileProviderItemIdentifier
- var isTrashed: Bool = false
-
-
- var contentModificationDate: Date?
- var creationDate: Date?
-
-
- var versionIdentifier: Data?
- var isMostRecentVersionDownloaded: Bool = false
-
- var isUploading: Bool = false
- var isUploaded: Bool = true
- var uploadingError: Error?
-
- var isDownloading: Bool = false
- var isDownloaded: Bool = true
- var downloadingError: Error?
- var isDirectory = false;
-
- init(metadata: tableMetadata, serverUrl: String) {
-
- self.contentModificationDate = metadata.date as Date
- self.creationDate = metadata.date as Date
- self.documentSize = NSNumber(value: metadata.size)
- self.filename = metadata.fileNameView
- self.itemIdentifier = NSFileProviderItemIdentifier("\(metadata.fileID)")
- self.isDirectory = metadata.directory
-
- if #available(iOSApplicationExtension 11.0, *) {
-
- self.parentItemIdentifier = NSFileProviderItemIdentifier.rootContainer
-
-
- if (serverUrl != homeServerUrl) {
- if let directoryParent = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account = %@ AND directoryID = %@", metadata.account, metadata.directoryID)) {
- if let metadataParent = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", metadata.account, directoryParent.fileID)) {
- self.parentItemIdentifier = NSFileProviderItemIdentifier(metadataParent.fileID)
- }
- }
- }
-
- } else {
-
- self.parentItemIdentifier = NSFileProviderItemIdentifier("")
- }
-
-
- if let fileType = CCUtility.insertTypeFileIconName(metadata.fileNameView, metadata: metadata) {
- self.typeIdentifier = fileType
- }
- self.versionIdentifier = metadata.etag.data(using: .utf8)
-
-
- if (!metadata.directory) {
-
- let identifierPathUrl = groupURL!.appendingPathComponent("File Provider Storage").appendingPathComponent(metadata.fileID)
- let filePath = "\(identifierPathUrl.path)/\(metadata.fileNameView)"
- var fileSize = 0 as Double
-
- do {
- let attributes = try FileManager.default.attributesOfItem(atPath: filePath)
- fileSize = attributes[FileAttributeKey.size] as! Double
- } catch let error {
- print("error: \(error)")
- }
-
- if fileSize == 0 {
- self.isDownloaded = false
- self.isMostRecentVersionDownloaded = false
- } else {
- self.isDownloaded = true
- self.isMostRecentVersionDownloaded = true
- }
- }
- }
- }
|