mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-25 22:05:53 +03:00
Add NKFile to NextcloudItemMetadataTable converter methods to NextcloudFilesDatabaseManager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
parent
55f533dc3d
commit
06a5e4df85
1 changed files with 97 additions and 0 deletions
|
@ -15,6 +15,7 @@
|
|||
import Foundation
|
||||
import RealmSwift
|
||||
import FileProvider
|
||||
import NextcloudKit
|
||||
|
||||
class NextcloudFilesDatabaseManager : NSObject {
|
||||
static let shared = {
|
||||
|
@ -97,4 +98,100 @@ class NextcloudFilesDatabaseManager : NSObject {
|
|||
func localFileMetadataFromOcId(_ ocId: String) -> NextcloudLocalFileMetadataTable? {
|
||||
return ncDatabase().objects(NextcloudLocalFileMetadataTable.self).filter("ocId == %@", ocId).first
|
||||
}
|
||||
|
||||
@objc func convertNKFileToItemMetadata(_ file: NKFile, account: String) -> NextcloudItemMetadataTable {
|
||||
|
||||
let metadata = NextcloudItemMetadataTable()
|
||||
|
||||
metadata.account = account
|
||||
metadata.checksums = file.checksums
|
||||
metadata.commentsUnread = file.commentsUnread
|
||||
metadata.contentType = file.contentType
|
||||
if let date = file.creationDate {
|
||||
metadata.creationDate = date
|
||||
} else {
|
||||
metadata.creationDate = file.date
|
||||
}
|
||||
metadata.dataFingerprint = file.dataFingerprint
|
||||
metadata.date = file.date
|
||||
metadata.directory = file.directory
|
||||
metadata.downloadURL = file.downloadURL
|
||||
metadata.e2eEncrypted = file.e2eEncrypted
|
||||
metadata.etag = file.etag
|
||||
metadata.favorite = file.favorite
|
||||
metadata.fileId = file.fileId
|
||||
metadata.fileName = file.fileName
|
||||
metadata.fileNameView = file.fileName
|
||||
metadata.hasPreview = file.hasPreview
|
||||
metadata.iconName = file.iconName
|
||||
metadata.mountType = file.mountType
|
||||
metadata.name = file.name
|
||||
metadata.note = file.note
|
||||
metadata.ocId = file.ocId
|
||||
metadata.ownerId = file.ownerId
|
||||
metadata.ownerDisplayName = file.ownerDisplayName
|
||||
metadata.lock = file.lock
|
||||
metadata.lockOwner = file.lockOwner
|
||||
metadata.lockOwnerEditor = file.lockOwnerEditor
|
||||
metadata.lockOwnerType = file.lockOwnerType
|
||||
metadata.lockOwnerDisplayName = file.lockOwnerDisplayName
|
||||
metadata.lockTime = file.lockTime
|
||||
metadata.lockTimeOut = file.lockTimeOut
|
||||
metadata.path = file.path
|
||||
metadata.permissions = file.permissions
|
||||
metadata.quotaUsedBytes = file.quotaUsedBytes
|
||||
metadata.quotaAvailableBytes = file.quotaAvailableBytes
|
||||
metadata.richWorkspace = file.richWorkspace
|
||||
metadata.resourceType = file.resourceType
|
||||
metadata.serverUrl = file.serverUrl
|
||||
metadata.sharePermissionsCollaborationServices = file.sharePermissionsCollaborationServices
|
||||
for element in file.sharePermissionsCloudMesh {
|
||||
metadata.sharePermissionsCloudMesh.append(element)
|
||||
}
|
||||
for element in file.shareType {
|
||||
metadata.shareType.append(element)
|
||||
}
|
||||
metadata.size = file.size
|
||||
metadata.classFile = file.classFile
|
||||
//FIXME: iOS 12.0,* don't detect UTI text/markdown, text/x-markdown
|
||||
if (metadata.contentType == "text/markdown" || metadata.contentType == "text/x-markdown") && metadata.classFile == NKCommon.typeClassFile.unknow.rawValue {
|
||||
metadata.classFile = NKCommon.typeClassFile.document.rawValue
|
||||
}
|
||||
if let date = file.uploadDate {
|
||||
metadata.uploadDate = date
|
||||
} else {
|
||||
metadata.uploadDate = file.date
|
||||
}
|
||||
metadata.urlBase = file.urlBase
|
||||
metadata.user = file.user
|
||||
metadata.userId = file.userId
|
||||
|
||||
// Support for finding the correct filename for e2ee files should go here
|
||||
|
||||
return metadata
|
||||
}
|
||||
|
||||
func convertNKFilesToItemMetadatas(_ files: [NKFile], account: String, completionHandler: @escaping (_ directoryMetadata: NextcloudItemMetadataTable, _ childDirectoriesMetadatas: [NextcloudItemMetadataTable], _ metadatas: [NextcloudItemMetadataTable]) -> Void) {
|
||||
|
||||
var directoryMetadataSet = false
|
||||
var directoryMetadata = NextcloudItemMetadataTable()
|
||||
var childDirectoriesMetadatas: [NextcloudItemMetadataTable] = []
|
||||
var metadatas: [NextcloudItemMetadataTable] = []
|
||||
|
||||
for file in files {
|
||||
let metadata = convertNKFileToItemMetadata(file, account: account)
|
||||
|
||||
if metadatas.isEmpty && !directoryMetadataSet {
|
||||
directoryMetadata = metadata;
|
||||
directoryMetadataSet = true;
|
||||
} else {
|
||||
metadatas.append(metadata)
|
||||
if metadata.directory {
|
||||
childDirectoriesMetadatas.append(metadata)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
completionHandler(directoryMetadata, childDirectoriesMetadatas, metadatas)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue