aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Library/URLAdditions.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Library/URLAdditions.swift')
-rw-r--r--Hotline/Library/URLAdditions.swift26
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
+ }
+}