diff options
Diffstat (limited to 'Sora/Data')
| -rw-r--r-- | Sora/Data/CollectionPickerOption.swift | 40 | ||||
| -rw-r--r-- | Sora/Data/Settings/SettingsFolder.swift | 8 |
2 files changed, 48 insertions, 0 deletions
diff --git a/Sora/Data/CollectionPickerOption.swift b/Sora/Data/CollectionPickerOption.swift new file mode 100644 index 0000000..442ebdc --- /dev/null +++ b/Sora/Data/CollectionPickerOption.swift @@ -0,0 +1,40 @@ +import Foundation + +enum CollectionPickerOption: Identifiable, Hashable { + case all + case folder(UUID) + case topLevel(String) + case uncategorized + + var id: String { + switch self { + case .all: + return "all" + + case .folder(let id): + return id.uuidString + + case .topLevel(let name): + return name + + case .uncategorized: + return "uncategorized" + } + } + + var name: (_ settings: SettingsManager) -> String { + switch self { + case .all: + return { _ in "All" } + + case .folder(let id): + return { settings in settings.folderName(forID: id) ?? "Unknown Folder" } + + case .topLevel(let name): + return { _ in name } + + case .uncategorized: + return { _ in "Uncategorised" } + } + } +} diff --git a/Sora/Data/Settings/SettingsFolder.swift b/Sora/Data/Settings/SettingsFolder.swift index 84543c1..2464770 100644 --- a/Sora/Data/Settings/SettingsFolder.swift +++ b/Sora/Data/Settings/SettingsFolder.swift @@ -5,6 +5,14 @@ struct SettingsFolder: Codable, Identifiable, Hashable { var name: String let createdAt: Date + var topLevelName: String? { + if name.contains("|") { + return String(name.split(separator: "|")[0]).trimmingCharacters(in: .whitespacesAndNewlines) + } + + return nil + } + init(name: String, id: UUID = UUID()) { createdAt = Date() self.id = id |