Skip to content

Commit

Permalink
fix: Prevent selecting "Drive root" and select "My personal files"
Browse files Browse the repository at this point in the history
Signed-off-by: Philippe Weidmann <[email protected]>
  • Loading branch information
PhilippeWeidmann committed Sep 20, 2024
1 parent f2a2c51 commit 0198430
Showing 1 changed file with 26 additions and 4 deletions.
30 changes: 26 additions & 4 deletions kDrive/UI/Controller/Files/Save File/SaveFileViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,7 @@ class SaveFileViewController: UIViewController {
) {
selectedDriveFileManager = driveFileManager
}
selectedDirectory = lastSelectedDirectory?.driveId == selectedDriveFileManager?.drive.id
? lastSelectedDirectory
: selectedDriveFileManager?.getCachedRootFile()
selectedDirectory = getBestDirectory()
}

closeBarButtonItem.accessibilityLabel = KDriveResourcesStrings.Localizable.buttonClose
Expand Down Expand Up @@ -161,6 +159,30 @@ class SaveFileViewController: UIViewController {
)
}

func getBestDirectory() -> File? {
if lastSelectedDirectory?.driveId == selectedDriveFileManager?.drive.id {
return lastSelectedDirectory
}

guard let selectedDriveFileManager else { return nil }

let myFilesDirectory = selectedDriveFileManager.database.fetchResults(ofType: File.self) { files in
files.filter(NSPredicate(format: "rawVisibility = %@", FileVisibility.isPrivateSpace.rawValue))
}.first

if let myFilesDirectory {
return myFilesDirectory.freezeIfNeeded()
}

// If we are in a shared with me, we only have access to some folders that are shared with the user
guard selectedDriveFileManager.drive.sharedWithMe else { return nil }

let firstAvailableSharedDriveDirectory = selectedDriveFileManager.database.fetchResults(ofType: File.self) { files in
files.filter(NSPredicate(format: "rawVisibility = %@ AND driveId == %d", FileVisibility.isInSharedSpace.rawValue, selectedDriveFileManager.drive.id))
}.first
return firstAvailableSharedDriveDirectory?.freezeIfNeeded()
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
MatomoUtils.track(view: [MatomoUtils.Views.save.displayName, "SaveFile"])
Expand Down Expand Up @@ -476,7 +498,7 @@ extension SaveFileViewController: SelectDriveDelegate {
func didSelectDrive(_ drive: Drive) {
if let selectedDriveFileManager = accountManager.getDriveFileManager(for: drive.id, userId: drive.userId) {
self.selectedDriveFileManager = selectedDriveFileManager
selectedDirectory = selectedDriveFileManager.getCachedRootFile()
selectedDirectory = getBestDirectory()
sections = [.fileName, .driveSelection, .directorySelection]
if itemProvidersContainHeicPhotos {
sections.append(.photoFormatOption)
Expand Down

0 comments on commit 0198430

Please sign in to comment.