Skip to content

Commit 8264090

Browse files
github-actions[bot]claude
authored andcommitted
fix(file-provider): self-review fixes — DateFormatter locale/tz, guard refactor, docstring
- Add locale=en_US_POSIX and timeZone=UTC to DateFormatter in FileProviderItem.filename for saveStateFile to ensure deterministic filenames regardless of user locale/timezone - Refactor loadAllSaveStateEntries guard chain to single guard (eliminates intermediate URL? var) - Update FileProviderEnumerator class docstring to include Save States and Screenshots categories Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 202786e commit 8264090

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

Extensions/ROM File Provider/FileProviderEnumerator.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ import PVPrimitives
1414

1515
/// Enumerates items in the Provenance ROM library for the Files.app file provider.
1616
///
17-
/// Root lists category folders (**Systems**, **Publishers**, **Years**, **Regions**, **Ratings**).
17+
/// Root lists category folders (**Systems**, **Publishers**, **Years**, **Regions**, **Ratings**,
18+
/// **Save States**, **Screenshots**).
1819
/// Canonical ROM files (`game:<md5>`) live only under **Systems**; other axes use symlink rows.
20+
/// Save states (`ss-game:<md5>` / `ss:<id>`) and screenshots (`sc-game:<md5>` / `sc:<md5>:<index>`)
21+
/// are enumerated read-only from their respective virtual folders.
1922
///
2023
/// Realm access is centralized in ``RomFileProviderLibrary`` (CPDI snapshots, same App Group as Spotlight / Top Shelf).
2124
final class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {

Extensions/ROM File Provider/FileProviderItem.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ final class FileProviderItem: NSObject, NSFileProviderItem {
252252
if let name = fileURL?.lastPathComponent, !name.isEmpty { return sanitize(name) }
253253
let label = isAutosave ? "Auto" : (userDescription ?? "")
254254
let formatter = DateFormatter()
255+
formatter.locale = Locale(identifier: "en_US_POSIX")
256+
formatter.timeZone = TimeZone(secondsFromGMT: 0)
255257
formatter.dateFormat = "yyyy-MM-dd HH-mm-ss"
256258
let dateStr = formatter.string(from: date)
257259
let prefix = label.isEmpty ? dateStr : "\(label) \(dateStr)"

Extensions/ROM File Provider/RomFileProviderCPDI.swift

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,9 @@ enum RomFileProviderLibrary {
131131
static func loadAllSaveStateEntries() -> [SaveStateEntry] {
132132
realm.objects(PVSaveState.self).compactMap { pvSS -> SaveStateEntry? in
133133
guard !pvSS.isInvalidated,
134-
let pvGame = pvSS.game, !pvGame.isInvalidated else { return nil }
135-
let fileURL: URL?
136-
if let pvFile = pvSS.file, let url = pvFile.url,
137-
FileManager.default.fileExists(atPath: url.path) {
138-
fileURL = url
139-
} else {
140-
return nil
141-
}
134+
let pvGame = pvSS.game, !pvGame.isInvalidated,
135+
let pvFile = pvSS.file, let fileURL = pvFile.url,
136+
FileManager.default.fileExists(atPath: fileURL.path) else { return nil }
142137
return SaveStateEntry(
143138
id: pvSS.id,
144139
game: pvGame.asDomain(),

0 commit comments

Comments
 (0)