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 chatDeleted
|
||||||
case deleteLegacyDatabase
|
case deleteLegacyDatabase
|
||||||
case deleteFilesAndMedia
|
case deleteFilesAndMedia
|
||||||
|
case deleteTempFiles
|
||||||
case setChatItemTTL(ttl: ChatItemTTL)
|
case setChatItemTTL(ttl: ChatItemTTL)
|
||||||
case error(title: LocalizedStringKey, error: String = "")
|
case error(title: LocalizedStringKey, error: String = "")
|
||||||
|
|
||||||
@@ -33,6 +34,7 @@ enum DatabaseAlert: Identifiable {
|
|||||||
case .chatDeleted: return "chatDeleted"
|
case .chatDeleted: return "chatDeleted"
|
||||||
case .deleteLegacyDatabase: return "deleteLegacyDatabase"
|
case .deleteLegacyDatabase: return "deleteLegacyDatabase"
|
||||||
case .deleteFilesAndMedia: return "deleteFilesAndMedia"
|
case .deleteFilesAndMedia: return "deleteFilesAndMedia"
|
||||||
|
case .deleteTempFiles: return "deleteTempFiles"
|
||||||
case .setChatItemTTL: return "setChatItemTTL"
|
case .setChatItemTTL: return "setChatItemTTL"
|
||||||
case let .error(title, _): return "error \(title)"
|
case let .error(title, _): return "error \(title)"
|
||||||
}
|
}
|
||||||
@@ -49,6 +51,7 @@ struct DatabaseView: View {
|
|||||||
@State private var progressIndicator = false
|
@State private var progressIndicator = false
|
||||||
@AppStorage(DEFAULT_CHAT_ARCHIVE_NAME) private var chatArchiveName: String?
|
@AppStorage(DEFAULT_CHAT_ARCHIVE_NAME) private var chatArchiveName: String?
|
||||||
@AppStorage(DEFAULT_CHAT_ARCHIVE_TIME) private var chatArchiveTime: Double = 0
|
@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 dbContainer = dbContainerGroupDefault.get()
|
||||||
@State private var legacyDatabase = hasLegacyDatabase()
|
@State private var legacyDatabase = hasLegacyDatabase()
|
||||||
@State private var useKeychain = storeDBPassphraseGroupDefault.get()
|
@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 {
|
.onAppear {
|
||||||
runChat = m.chatRunning ?? true
|
runChat = m.chatRunning ?? true
|
||||||
@@ -290,6 +303,15 @@ struct DatabaseView: View {
|
|||||||
},
|
},
|
||||||
secondaryButton: .cancel()
|
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):
|
case let .setChatItemTTL(ttl):
|
||||||
return Alert(
|
return Alert(
|
||||||
title: Text("Enable automatic message deletion?"),
|
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 + CHAT_DB_BAK)
|
||||||
try? fm.removeItem(atPath: dbPath + AGENT_DB_BAK)
|
try? fm.removeItem(atPath: dbPath + AGENT_DB_BAK)
|
||||||
try? fm.removeItem(at: getTempFilesDirectory())
|
deleteAppTempFiles()
|
||||||
try? fm.removeItem(at: getMigrationTempFilesDirectory())
|
|
||||||
try? fm.createDirectory(at: getTempFilesDirectory(), withIntermediateDirectories: true)
|
|
||||||
deleteAppFiles()
|
deleteAppFiles()
|
||||||
_ = kcDatabasePassword.remove()
|
_ = kcDatabasePassword.remove()
|
||||||
storeDBPassphraseGroupDefault.set(true)
|
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
|
public func fileSize(_ url: URL) -> Int? { // in bytes
|
||||||
do {
|
do {
|
||||||
let val = try url.resourceValues(forKeys: [.totalFileAllocatedSizeKey, .fileAllocatedSizeKey])
|
let val = try url.resourceValues(forKeys: [.totalFileAllocatedSizeKey, .fileAllocatedSizeKey])
|
||||||
|
|||||||
Reference in New Issue
Block a user