Throw from session directories and only fatal error when making sense.

This commit is contained in:
Stefan Ceriu
2026-09-30 11:36:06 +03:00
parent a8bc26dc93
commit 7973da8251
5 changed files with 21 additions and 12 deletions
@@ -280,7 +280,7 @@ class AuthenticationService: AuthenticationServiceProtocol {
}
private func rotateSessionDirectory() {
sessionDirectories.delete()
try? sessionDirectories.delete()
sessionDirectories = .init()
}
@@ -23,37 +23,42 @@ nonisolated struct SessionDirectories: Hashable, Codable {
// MARK: Data Management
/// Removes the directories from disk if they have been created.
func delete() {
func delete() throws {
do {
if FileManager.default.directoryExists(at: dataDirectory) {
try FileManager.default.removeItem(at: dataDirectory)
}
} catch {
MXLog.failure("Failed deleting the session data: \(error)")
MXLog.error("Failed deleting the session data: \(error)")
throw error
}
do {
if FileManager.default.directoryExists(at: cacheDirectory) {
try FileManager.default.removeItem(at: cacheDirectory)
}
} catch {
MXLog.failure("Failed deleting the session caches: \(error)")
MXLog.error("Failed deleting the session caches: \(error)")
throw error
}
}
/// Deletes the Rust state store and event cache data, leaving the crypto store and both
/// session directories in place along with any other data that may have been written in them.
func deleteTransientUserData() {
func deleteTransientUserData() throws {
do {
let prefix = "matrix-sdk-state"
try deleteFiles(at: dataDirectory, with: prefix)
} catch {
MXLog.failure("Failed clearing state store: \(error)")
throw error
}
do {
let prefix = "matrix-sdk-event-cache"
try deleteFiles(at: cacheDirectory, with: prefix)
} catch {
MXLog.failure("Failed clearing event cache store: \(error)")
throw error
}
}
@@ -69,7 +69,11 @@ class UserSessionStore: UserSessionStoreProtocol {
// On any restoration failure reset the token and restart
keychainController.removeRestorationTokenForUsername(credentials.userID)
credentials.restorationToken.sessionDirectories.delete()
do {
try credentials.restorationToken.sessionDirectories.delete()
} catch {
fatalError("Failed deleting session directories with error \(error)")
}
return .failure(error)
}
@@ -103,7 +107,7 @@ class UserSessionStore: UserSessionStoreProtocol {
keychainController.removeRestorationTokenForUsername(userID)
if let credentials {
credentials.restorationToken.sessionDirectories.delete()
try? credentials.restorationToken.sessionDirectories.delete()
}
}