// // FileProviderItem.swift // Files // // Created by Marino Faggiana on 26/03/18. // Copyright © 2018 Marino Faggiana. All rights reserved. // // Author Marino Faggiana // // 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 . // import FileProvider import NCCommunication class FileProviderItem: NSObject, NSFileProviderItem { var metadata: tableMetadata var parentItemIdentifier: NSFileProviderItemIdentifier var itemIdentifier: NSFileProviderItemIdentifier { return fileProviderUtility.sharedInstance.getItemIdentifier(metadata: metadata) } var filename: String { return metadata.fileNameView } var documentSize: NSNumber? { return NSNumber(value: metadata.size) } var typeIdentifier: String { let results = NCCommunicationCommon.shared.getInternalContenType(fileName: metadata.fileNameView, contentType: "", directory: metadata.directory) return results.typeIdentifier } var contentModificationDate: Date? { return metadata.date as Date } var creationDate: Date? { return metadata.date as Date } var lastUsedDate: Date? { return metadata.date as Date } var capabilities: NSFileProviderItemCapabilities { if (metadata.directory) { return [ .allowsAddingSubItems, .allowsContentEnumerating, .allowsReading, .allowsDeleting, .allowsRenaming ] } else { return [ .allowsWriting, .allowsReading, .allowsDeleting, .allowsRenaming, .allowsReparenting ] } } var isTrashed: Bool { return false } var childItemCount: NSNumber? { return nil } var versionIdentifier: Data? { return metadata.etag.data(using: .utf8) } var tagData: Data? { if let tableTag = NCManageDatabase.sharedInstance.getTag(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) { return tableTag.tagIOS } else { return nil } } var favoriteRank: NSNumber? { if let rank = fileProviderData.sharedInstance.listFavoriteIdentifierRank[metadata.ocId] { return rank } else { return nil } } var isMostRecentVersionDownloaded: Bool { return true } var isDownloaded: Bool { if NCManageDatabase.sharedInstance.getTableLocalFile(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) != nil { return true } else { return false } } var isDownloading: Bool { if metadata.status == Int(k_metadataStatusInDownload) { return true } else { return false } } var downloadingError: Error? { if metadata.status == Int(k_metadataStatusDownloadError) { return fileProviderData.FileProviderError.downloadError } else { return nil } } var isUploaded: Bool { if metadata.status == Int(k_metadataStatusInUpload) { return false } else { return true } } var isUploading: Bool { if metadata.status == Int(k_metadataStatusInUpload) { return true } else { return false } } var uploadingError: Error? { if metadata.status == Int(k_metadataStatusUploadError) { return fileProviderData.FileProviderError.uploadError } else { return nil } } init(metadata: tableMetadata, parentItemIdentifier: NSFileProviderItemIdentifier) { self.metadata = metadata self.parentItemIdentifier = parentItemIdentifier } }