Skip to content

Commit

Permalink
Merge pull request #1273 from Infomaniak/fix-fileprovider
Browse files Browse the repository at this point in the history
fix: FileProvider upload already existing files + Correctly report missing thumbnail
  • Loading branch information
adrien-coye committed Sep 4, 2024
2 parents d8ba6ea + 26ae023 commit 233caba
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
4 changes: 2 additions & 2 deletions kDriveFileProvider/FileProviderExtension+Thumbnail.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ extension FileProviderExtension {
continue
}

// If we do not have `supportedBy` info, we try to load avatars anyway
// If we do not have `supportedBy` return nil data nil error, per documentation
// Note: An freshly uploaded file will not have a .thumbnail before re-navigating to the parent folder
guard file.supportedBy.contains(.thumbnail) else {
perThumbnailCompletionHandler(identifier, nil, NSError.featureUnsupported)
perThumbnailCompletionHandler(identifier, nil, nil)
progress.completedUnitCount += 1
if progress.isFinished {
completionHandler(nil)
Expand Down
23 changes: 21 additions & 2 deletions kDriveFileProvider/FileProviderExtension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,27 @@ final class FileProviderExtension: NSFileProviderExtension {

override func itemChanged(at url: URL) {
Log.fileProvider("itemChanged at url:\(url)")
if let identifier = persistentIdentifierForItem(at: url),
let uploadItem = try? item(for: identifier) as? UploadFileProviderItem {
guard let identifier = persistentIdentifierForItem(at: url) else {
Log.fileProvider("itemChanged lookup failed for :\(url)", level: .error)
return
}

let fileProviderItem = try? item(for: identifier)

if let fileItem = fileProviderItem as? FileProviderItem,
let parentDirectoryId = fileItem.parentItemIdentifier.toFileId() {
let uploadItem = UploadFileProviderItem(
uploadFileUUID: UUID().uuidString,
parentDirectoryId: parentDirectoryId,
userId: driveFileManager.drive.userId,
driveId: driveFileManager.drive.id,
sourceUrl: url,
conflictOption: .version,
driveError: nil
)
backgroundUpload(uploadItem)
} else if let uploadItem = fileProviderItem as? UploadFileProviderItem {
Log.fileProvider("itemChanged called with an already uploading item :\(url)", level: .warning)
backgroundUpload(uploadItem)
} else {
Log.fileProvider("itemChanged lookup failed for :\(url)", level: .error)
Expand Down

0 comments on commit 233caba

Please sign in to comment.