Compare commits

...

2 Commits

Author SHA1 Message Date
spaced4ndy 8c690a4f5a log errors 2024-03-14 20:39:17 +04:00
spaced4ndy 6d897b7814 ios: delete temp files 2024-03-14 20:20:48 +04:00
2 changed files with 38 additions and 3 deletions
@@ -19,6 +19,7 @@ enum DatabaseAlert: Identifiable {
case chatDeleted
case deleteLegacyDatabase
case deleteFilesAndMedia
case deleteTempFiles
case setChatItemTTL(ttl: ChatItemTTL)
case error(title: LocalizedStringKey, error: String = "")
@@ -33,6 +34,7 @@ enum DatabaseAlert: Identifiable {
case .chatDeleted: return "chatDeleted"
case .deleteLegacyDatabase: return "deleteLegacyDatabase"
case .deleteFilesAndMedia: return "deleteFilesAndMedia"
case .deleteTempFiles: return "deleteTempFiles"
case .setChatItemTTL: return "setChatItemTTL"
case let .error(title, _): return "error \(title)"
}
@@ -49,6 +51,7 @@ struct DatabaseView: View {
@State private var progressIndicator = false
@AppStorage(DEFAULT_CHAT_ARCHIVE_NAME) private var chatArchiveName: String?
@AppStorage(DEFAULT_CHAT_ARCHIVE_TIME) private var chatArchiveTime: Double = 0
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
@State private var dbContainer = dbContainerGroupDefault.get()
@State private var legacyDatabase = hasLegacyDatabase()
@State private var useKeychain = storeDBPassphraseGroupDefault.get()
@@ -191,6 +194,16 @@ struct DatabaseView: View {
}
}
}
if developerTools {
Section {
Button("Delete temporary files", role: .destructive) {
alert = .deleteTempFiles
}
} header: {
Text("Temp files")
}
}
}
.onAppear {
runChat = m.chatRunning ?? true
@@ -290,6 +303,15 @@ struct DatabaseView: View {
},
secondaryButton: .cancel()
)
case .deleteTempFiles:
return Alert(
title: Text("Delete temporary files?"),
message: Text("This action cannot be undone - all temporary files will be deleted."),
primaryButton: .destructive(Text("Delete")) {
deleteAppTempFiles()
},
secondaryButton: .cancel()
)
case let .setChatItemTTL(ttl):
return Alert(
title: Text("Enable automatic message deletion?"),
+16 -3
View File
@@ -82,9 +82,7 @@ public func deleteAppDatabaseAndFiles() {
}
try? fm.removeItem(atPath: dbPath + CHAT_DB_BAK)
try? fm.removeItem(atPath: dbPath + AGENT_DB_BAK)
try? fm.removeItem(at: getTempFilesDirectory())
try? fm.removeItem(at: getMigrationTempFilesDirectory())
try? fm.createDirectory(at: getTempFilesDirectory(), withIntermediateDirectories: true)
deleteAppTempFiles()
deleteAppFiles()
_ = kcDatabasePassword.remove()
storeDBPassphraseGroupDefault.set(true)
@@ -100,6 +98,21 @@ public func deleteAppFiles() {
}
}
public func deleteAppTempFiles() {
let fm = FileManager.default
do {
try fm.removeItem(at: getTempFilesDirectory())
try fm.createDirectory(at: getTempFilesDirectory(), withIntermediateDirectories: true)
} catch {
logger.error("FileUtils deleteAppTempFiles error: \(error.localizedDescription)")
}
do {
try fm.removeItem(at: getMigrationTempFilesDirectory())
} catch {
logger.error("FileUtils deleteAppTempFiles fm.removeItem(at: getMigrationTempFilesDirectory()) error: \(error.localizedDescription)")
}
}
public func fileSize(_ url: URL) -> Int? { // in bytes
do {
let val = try url.resourceValues(forKeys: [.totalFileAllocatedSizeKey, .fileAllocatedSizeKey])