From 346ce3d24a015a8b2b160390553a4c1de91f3f7b Mon Sep 17 00:00:00 2001 From: Morgan Pretty Date: Thu, 23 Jun 2022 15:52:50 +1000 Subject: [PATCH] Added a button to the settings screen to trigger a re-migration of the database --- Session/Settings/SettingsVC.swift | 10 ++++++++++ SessionUtilitiesKit/Database/GRDBStorage.swift | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Session/Settings/SettingsVC.swift b/Session/Settings/SettingsVC.swift index 62ffb9fa6..5bab2109a 100644 --- a/Session/Settings/SettingsVC.swift +++ b/Session/Settings/SettingsVC.swift @@ -299,6 +299,8 @@ final class SettingsVC: BaseVC, AvatarViewHelperDelegate { return button } + let debugReMigrateButton = getSettingButton(withTitle: "DEBUG - Re-Migrate Database", color: Colors.destructive, action: #selector(remigrateDatabase)) + let pathButton = getSettingButton(withTitle: NSLocalizedString("vc_path_title", comment: ""), color: Colors.text, action: #selector(showPath)) let pathStatusView = PathStatusView() pathStatusView.set(.width, to: PathStatusView.size) @@ -309,6 +311,8 @@ final class SettingsVC: BaseVC, AvatarViewHelperDelegate { pathStatusView.autoVCenterInSuperview() return [ + getSeparator(), + debugReMigrateButton, getSeparator(), pathButton, getSeparator(), @@ -588,6 +592,12 @@ final class SettingsVC: BaseVC, AvatarViewHelperDelegate { navigationController!.present(shareVC, animated: true, completion: nil) } + @objc private func remigrateDatabase() { + GRDBStorage.deleteDatabaseFiles() + try? GRDBStorage.deleteDbKeys() + exit(1) + } + @objc private func showPath() { let pathVC = PathVC() navigationController!.pushViewController(pathVC, animated: true) diff --git a/SessionUtilitiesKit/Database/GRDBStorage.swift b/SessionUtilitiesKit/Database/GRDBStorage.swift index 89e5ecb42..c13e4d3ce 100644 --- a/SessionUtilitiesKit/Database/GRDBStorage.swift +++ b/SessionUtilitiesKit/Database/GRDBStorage.swift @@ -297,13 +297,13 @@ public final class GRDBStorage { // TODO: Delete Profiles on Disk? } - private static func deleteDatabaseFiles() { + public/*private*/ static func deleteDatabaseFiles() { OWSFileSystem.deleteFile(databasePath) OWSFileSystem.deleteFile(databasePathShm) OWSFileSystem.deleteFile(databasePathWal) } - private static func deleteDbKeys() throws { + public/*private*/ static func deleteDbKeys() throws { try SSKDefaultKeychainStorage.shared.remove(service: keychainService, key: dbCipherKeySpecKey) }