diff options
Diffstat (limited to 'Hotline/Library/URLAdditions.swift')
| -rw-r--r-- | Hotline/Library/URLAdditions.swift | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Hotline/Library/URLAdditions.swift b/Hotline/Library/URLAdditions.swift new file mode 100644 index 0000000..1f25541 --- /dev/null +++ b/Hotline/Library/URLAdditions.swift @@ -0,0 +1,26 @@ +import Foundation + +extension URL { + func generateUniqueFilePath(filename base: String) -> String { + let fileManager = FileManager.default + var finalName = base + var counter = 2 + + // Helper function to generate a new filename with a counter + func makeFileName() -> String { + let baseName = (base as NSString).deletingPathExtension + let extensionName = (base as NSString).pathExtension + return extensionName.isEmpty ? "\(baseName) \(counter)" : "\(baseName) \(counter).\(extensionName)" + } + + // Check if file exists and append counter until a unique name is found + var filePath = self.appending(component: finalName).path(percentEncoded: false) + while fileManager.fileExists(atPath: filePath) { + finalName = makeFileName() + filePath = self.appending(component: finalName).path(percentEncoded: false) + counter += 1 + } + + return filePath + } +} |