Add convenience method to get thumbnailUrl in NextcloudItemMetadataTable
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Tue, 4 Apr 2023 13:12:57 +0000 (21:12 +0800)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 08:02:39 +0000 (16:02 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Database/NextcloudItemMetadataTable.swift
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudAccount.swift

index 3f76da4e0e1a18a32eec9db55798d256702d155d..44b1ddf95ce0bcf2dd91c0ef8852398c158e0224 100644 (file)
@@ -196,4 +196,18 @@ class NextcloudItemMetadataTable: Object {
     func canUnlock(as user: String) -> Bool {
         return !lock || (lockOwner == user && lockOwnerType == 0)
     }
+
+    func thumbnailUrl(size: CGSize) -> URL? {
+        guard hasPreview else {
+            return nil
+        }
+
+        let urlBase = urlBase.urlEncoded!
+        let webdavUrl = urlBase + NextcloudAccount.webDavFilesUrlSuffix + user // Leave the leading slash
+        let serverFileRelativeUrl = serverUrl.replacingOccurrences(of: webdavUrl, with: "") + "/" + fileName
+
+        let urlString = "\(urlBase)/index.php/core/preview.png?file=\(serverFileRelativeUrl)&x=\(size.width)&y=\(size.height)&a=1&mode=cover"
+
+        return URL(string: urlString)
+    }
 }
index a1b9963851e6354cad9ddee4290a70c767373fe9..0dc628d7d42c8aeeb310a398bd04f19d8be88dff 100644 (file)
@@ -16,7 +16,7 @@ import Foundation
 import FileProvider
 
 class NextcloudAccount: NSObject {
-    private let webDavFilesUrlSuffix: String = "/remote.php/dav/files/"
+    static let webDavFilesUrlSuffix: String = "/remote.php/dav/files/"
     let username, password, ncKitAccount, serverUrl, davFilesUrl: String
 
     init(user: String, serverUrl: String, password: String) {
@@ -24,7 +24,7 @@ class NextcloudAccount: NSObject {
         self.password = password
         self.ncKitAccount = user + " " + serverUrl
         self.serverUrl = serverUrl
-        self.davFilesUrl = serverUrl + webDavFilesUrlSuffix + user
+        self.davFilesUrl = serverUrl + NextcloudAccount.webDavFilesUrlSuffix + user
 
         super.init()
     }