mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c690a4f5a | |||
| 6d897b7814 |
@@ -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?"),
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user