Skip to content

Commit 8679165

Browse files
committed
fix: Bolster JSON Decoding (relates to #1)
1 parent 06e9468 commit 8679165

File tree

1 file changed

+36
-8
lines changed

1 file changed

+36
-8
lines changed

jockey/SMBShareManager.swift

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,19 @@ final class SMBShareManager: ObservableObject {
7373
}
7474

7575
private func loadShares() {
76-
if let data = UserDefaults.standard.data(forKey: saveKey),
77-
let savedShares = try? JSONDecoder().decode([SMBShare].self, from: data) {
78-
shares = savedShares
76+
if let data = UserDefaults.standard.data(forKey: saveKey) {
77+
do {
78+
let savedShares = try JSONDecoder().decode([SMBShare].self, from: data)
79+
shares = savedShares
80+
logInfo("Successfully loaded \(savedShares.count) shares from UserDefaults")
81+
} catch {
82+
logError("Failed to decode shares from UserDefaults: \(error)")
83+
// Continue with empty shares array rather than crashing
84+
shares = []
85+
}
86+
} else {
87+
logInfo("No saved shares found in UserDefaults")
88+
shares = []
7989
}
8090
checkConnectionStatus()
8191
}
@@ -89,9 +99,19 @@ final class SMBShareManager: ObservableObject {
8999
}
90100

91101
private func loadReconnectionLogs() {
92-
if let data = UserDefaults.standard.data(forKey: reconnectionLogsKey),
93-
let savedLogs = try? JSONDecoder().decode([ReconnectionLog].self, from: data) {
94-
reconnectionLogs = savedLogs
102+
if let data = UserDefaults.standard.data(forKey: reconnectionLogsKey) {
103+
do {
104+
let savedLogs = try JSONDecoder().decode([ReconnectionLog].self, from: data)
105+
reconnectionLogs = savedLogs
106+
logInfo("Successfully loaded \(savedLogs.count) reconnection logs from UserDefaults")
107+
} catch {
108+
logError("Failed to decode reconnection logs from UserDefaults: \(error)")
109+
// Continue with empty logs array rather than crashing
110+
reconnectionLogs = []
111+
}
112+
} else {
113+
logInfo("No saved reconnection logs found in UserDefaults")
114+
reconnectionLogs = []
95115
}
96116
}
97117

@@ -100,17 +120,25 @@ final class SMBShareManager: ObservableObject {
100120
}
101121

102122
private func saveShares() {
103-
if let encoded = try? JSONEncoder().encode(shares) {
123+
do {
124+
let encoded = try JSONEncoder().encode(shares)
104125
UserDefaults.standard.set(encoded, forKey: saveKey)
126+
logInfo("Successfully saved \(shares.count) shares to UserDefaults")
127+
} catch {
128+
logError("Failed to encode shares for UserDefaults: \(error)")
105129
}
106130
}
107131

108132
private func saveReconnectionLogs() {
109133
// Only keep the last 100 logs to prevent excessive storage use
110134
let logsToSave = reconnectionLogs.count > 100 ? Array(reconnectionLogs.suffix(100)) : reconnectionLogs
111135

112-
if let encoded = try? JSONEncoder().encode(logsToSave) {
136+
do {
137+
let encoded = try JSONEncoder().encode(logsToSave)
113138
UserDefaults.standard.set(encoded, forKey: reconnectionLogsKey)
139+
logInfo("Successfully saved \(logsToSave.count) reconnection logs to UserDefaults")
140+
} catch {
141+
logError("Failed to encode reconnection logs for UserDefaults: \(error)")
114142
}
115143
}
116144

0 commit comments

Comments
 (0)