Automatically open folder if file transfer finished

This commit is contained in:
Leon Böttger committed 2025-05-17 15:01:22 +02:00
1 parent 9a3d31ce3b
commit 62d285364f
3 files changed
+96 -50

No files matched your search

+1 -5
View File
@@ -229,10 +229,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele
}
}
func transmissionCount() -> Int {
return UserDefaults.standard.integer(forKey: UserDefaultsKeys.transmissionCount.rawValue)
}
// Action for "Recommended Apps" menu item
@objc func openRecommendedApps() {
if let url = URL(string: "https://apps.apple.com/de/developer/leon-boettger/id1537384790") {
@@ -346,7 +342,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele
}
private func pressAcceptButton(transferID: String) {
if (!isPlusVersion() && transmissionCount() > 1) {
if isFileTransferRestricted() {
continueTransmission(accept: true, transferID: transferID, storeInTemp: true)
log("Showing plus screen...")
+8
View File
@@ -11,6 +11,14 @@ public func isPlusVersion() -> Bool {
return UserDefaults.standard.bool(forKey: UserDefaultsKeys.plusVersion.rawValue)
}
public func isFileTransferRestricted() -> Bool {
(!isPlusVersion() && transmissionCount() > 1)
}
public func transmissionCount() -> Int {
return UserDefaults.standard.integer(forKey: UserDefaultsKeys.transmissionCount.rawValue)
}
public enum UserDefaultsKeys: String, CaseIterable {
case isEligibleForIap = "isEligibleForIap"
case appLaunchedBefore = "ShowedWelcomeScreen"
+87 -45
View File
@@ -479,7 +479,30 @@ protocol InboundNearbyConnectionDelegate {
}
public class SaveFilesManager {
private init() {}
private init() {
// remove old temp directory
let tempPath = FileManager.default.temporaryDirectory
let fileManager = FileManager.default
do {
let contents = try fileManager.contentsOfDirectory(at: tempPath, includingPropertiesForKeys: nil)
var didSomething = false
for item in contents {
didSomething = true
try fileManager.removeItem(at: item)
}
if didSomething {
log("Temporary directory cleared.")
}
} catch {
log("Failed to list contents of temp directory: \(error)")
}
}
public static let shared = SaveFilesManager()
@@ -487,58 +510,77 @@ public class SaveFilesManager {
private var securityScopeUrl: URL?
private var filesFinishedDownloading = [URL]()
private var filesFinishedDownloadingSinceLastRun = [URL]()
public func registerFileFinishedDownloading(_ fileURL: URL) {
filesFinishedDownloading.append(fileURL)
filesFinishedDownloadingSinceLastRun.append(fileURL)
}
public func movePendingFilesToTarget() {
if !isPlusVersion() {
return
}
log("Moving pending files to target directory")
do {
let fileManager = FileManager.default
let files = try fileManager.contentsOfDirectory(at: tempDirectory, includingPropertiesForKeys: nil)
let target = getSaveDirectory()
for file in files {
let fileName = file.lastPathComponent
let destinationURL = target.appendingPathComponent(fileName)
if !filesFinishedDownloading.contains(destinationURL) {
log("File \(file) not finished downloading, skipping")
continue
if isPlusVersion() {
do {
let fileManager = FileManager.default
let files = try fileManager.contentsOfDirectory(at: tempDirectory, includingPropertiesForKeys: nil)
let target = getSaveDirectory()
var loggedExecution = false
for file in files {
if !loggedExecution {
log("Moving pending files to target directory")
loggedExecution = true
}
let fileName = file.lastPathComponent
let destinationURL = target.appendingPathComponent(fileName)
if !filesFinishedDownloading.contains(destinationURL) {
log("File \(file) not finished downloading, skipping")
continue
}
log("Moving file: \(file.lastPathComponent) to \(destinationURL.lastPathComponent)")
do {
try fileManager.copyItem(at: file, to: destinationURL)
let progress = Progress()
progress.fileURL = destinationURL
progress.totalUnitCount = 10
progress.kind = .file
progress.isPausable = false
progress.publish()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
progress.completedUnitCount = 10
progress.unpublish()
}
try fileManager.removeItem(at: file)
}
catch {
log("Error moving file: \(error)")
}
}
log("Moving file: \(file.lastPathComponent) to \(destinationURL.lastPathComponent)")
try fileManager.copyItem(at: file, to: destinationURL)
let progress = Progress()
progress.fileURL = destinationURL
progress.totalUnitCount = 10
progress.kind = .file
progress.isPausable = false
progress.publish()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
progress.completedUnitCount = 10
progress.unpublish()
}
try fileManager.removeItem(at: file)
log("Moved all pending files to target directory")
}
catch {
// Pending directory doesn't exist or is empty
}
stopAccessingSecurityScopedResource()
log("Moved all pending files to target directory")
} catch {
log("Error moving pending files: \(error)")
}
if !filesFinishedDownloadingSinceLastRun.isEmpty && !isFileTransferRestricted() {
log("Opening \(filesFinishedDownloadingSinceLastRun.count) file(s) in Finder.")
NSWorkspace.shared.activateFileViewerSelecting(filesFinishedDownloadingSinceLastRun)
// Clear the list of finished files
filesFinishedDownloadingSinceLastRun.removeAll()
}
stopAccessingSecurityScopedResource()
}
public func stopAccessingSecurityScopedResource() {