adding cache clearing to settings and avoiding delete crypto when clearing cache
This commit is contained in:
parent
88bf6a2c78
commit
0cb307a56d
|
@ -77,17 +77,21 @@ internal class AppModule(context: Application, logger: MatrixLogger) {
|
||||||
preferences = SharedPreferencesDelegate(context.applicationContext, fileName = "dapk-user-preferences", coroutineDispatchers),
|
preferences = SharedPreferencesDelegate(context.applicationContext, fileName = "dapk-user-preferences", coroutineDispatchers),
|
||||||
errorTracker = trackingModule.errorTracker,
|
errorTracker = trackingModule.errorTracker,
|
||||||
credentialPreferences = SharedPreferencesDelegate(context.applicationContext, fileName = "dapk-credentials-preferences", coroutineDispatchers),
|
credentialPreferences = SharedPreferencesDelegate(context.applicationContext, fileName = "dapk-credentials-preferences", coroutineDispatchers),
|
||||||
databaseDropper = { includeCryptoAccount ->
|
databaseDropper = { deleteCrypto ->
|
||||||
val cursor = driver.executeQuery(
|
val cursor = driver.executeQuery(
|
||||||
identifier = null,
|
identifier = null,
|
||||||
sql = "SELECT name FROM sqlite_master WHERE type = 'table' ${if (includeCryptoAccount) "" else "AND name != 'dbCryptoAccount'"}",
|
sql = "SELECT name FROM sqlite_master WHERE type = 'table'",
|
||||||
parameters = 0
|
parameters = 0
|
||||||
)
|
)
|
||||||
cursor.use {
|
cursor.use {
|
||||||
while (cursor.next()) {
|
while (cursor.next()) {
|
||||||
cursor.getString(0)?.let {
|
cursor.getString(0)?.let {
|
||||||
log(AppLogTag.ERROR_NON_FATAL, "Deleting $it")
|
if (!deleteCrypto && it.startsWith("dbCrypto")) {
|
||||||
driver.execute(null, "DELETE FROM $it", 0)
|
// skip
|
||||||
|
} else {
|
||||||
|
log(AppLogTag.ERROR_NON_FATAL, "Deleting $it")
|
||||||
|
driver.execute(null, "DELETE FROM $it", 0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,8 @@ internal class SettingsItemFactory(private val buildMeta: BuildMeta) {
|
||||||
SettingItem.Header("General"),
|
SettingItem.Header("General"),
|
||||||
SettingItem.Text(SettingItem.Id.Encryption, "Encryption"),
|
SettingItem.Text(SettingItem.Id.Encryption, "Encryption"),
|
||||||
SettingItem.Text(SettingItem.Id.EventLog, "Event log"),
|
SettingItem.Text(SettingItem.Id.EventLog, "Event log"),
|
||||||
|
SettingItem.Header("Data"),
|
||||||
|
SettingItem.Text(SettingItem.Id.ClearCache, "Clear cache"),
|
||||||
SettingItem.Header("Account"),
|
SettingItem.Header("Account"),
|
||||||
SettingItem.Text(SettingItem.Id.SignOut, "Sign out"),
|
SettingItem.Text(SettingItem.Id.SignOut, "Sign out"),
|
||||||
SettingItem.Header("About"),
|
SettingItem.Header("About"),
|
||||||
|
|
|
@ -3,9 +3,7 @@ package app.dapk.st.settings
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import app.dapk.st.core.AppLogTag
|
|
||||||
import app.dapk.st.core.Lce
|
import app.dapk.st.core.Lce
|
||||||
import app.dapk.st.core.log
|
|
||||||
import app.dapk.st.design.components.SpiderPage
|
import app.dapk.st.design.components.SpiderPage
|
||||||
import app.dapk.st.domain.StoreCleaner
|
import app.dapk.st.domain.StoreCleaner
|
||||||
import app.dapk.st.matrix.crypto.CryptoService
|
import app.dapk.st.matrix.crypto.CryptoService
|
||||||
|
@ -37,7 +35,6 @@ internal class SettingsViewModel(
|
||||||
val root = Page.Root(Lce.Content(settingsItemFactory.root()))
|
val root = Page.Root(Lce.Content(settingsItemFactory.root()))
|
||||||
val rootPage = SpiderPage(Page.Routes.root, "Settings", null, root)
|
val rootPage = SpiderPage(Page.Routes.root, "Settings", null, root)
|
||||||
updateState { copy(page = rootPage) }
|
updateState { copy(page = rootPage) }
|
||||||
println("state updated")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +46,6 @@ internal class SettingsViewModel(
|
||||||
when (item.id) {
|
when (item.id) {
|
||||||
SignOut -> {
|
SignOut -> {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
log(AppLogTag.ERROR_NON_FATAL, "Sign out triggered")
|
|
||||||
cacheCleaner.cleanCache(removeCredentials = true)
|
cacheCleaner.cleanCache(removeCredentials = true)
|
||||||
_events.emit(SignedOut)
|
_events.emit(SignedOut)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue