mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
desktop: saving settings in a safer way to handle process death
This commit is contained in:
+3
-1
@@ -101,7 +101,9 @@ object ThemeManager {
|
||||
}
|
||||
|
||||
fun applyTheme(theme: String) {
|
||||
appPrefs.currentTheme.set(theme)
|
||||
if (appPrefs.currentTheme.get() != theme) {
|
||||
appPrefs.currentTheme.set(theme)
|
||||
}
|
||||
CurrentColors.value = currentColors(null, null, chatModel.currentUser.value?.uiThemes, appPrefs.themeOverrides.get())
|
||||
platform.androidSetNightModeIfSupported()
|
||||
val c = CurrentColors.value.colors
|
||||
|
||||
+2
-2
@@ -316,8 +316,8 @@ fun removeWallpaperFile(fileName: String? = null) {
|
||||
WallpaperType.cachedImages.remove(fileName)
|
||||
}
|
||||
|
||||
fun <T> createTmpFileAndDelete(onCreated: (File) -> T): T {
|
||||
val tmpFile = File(tmpDir, UUID.randomUUID().toString())
|
||||
fun <T> createTmpFileAndDelete(dir: File = tmpDir, onCreated: (File) -> T): T {
|
||||
val tmpFile = File(dir, UUID.randomUUID().toString())
|
||||
tmpFile.deleteOnExit()
|
||||
ChatModel.filesToDelete.add(tmpFile)
|
||||
try {
|
||||
|
||||
+4
-1
@@ -17,6 +17,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.desktop.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import chat.simplex.common.model.ChatController.appPrefs
|
||||
import chat.simplex.common.model.ChatModel
|
||||
import chat.simplex.common.platform.*
|
||||
import chat.simplex.common.ui.theme.*
|
||||
@@ -654,7 +655,9 @@ private val versionDescriptions: List<VersionDescription> = listOf(
|
||||
private val lastVersion = versionDescriptions.last().version
|
||||
|
||||
fun setLastVersionDefault(m: ChatModel) {
|
||||
m.controller.appPrefs.whatsNewVersion.set(lastVersion)
|
||||
if (appPrefs.whatsNewVersion.get() != lastVersion) {
|
||||
appPrefs.whatsNewVersion.set(lastVersion)
|
||||
}
|
||||
}
|
||||
|
||||
fun shouldShowWhatsNew(m: ChatModel): Boolean {
|
||||
|
||||
+18
-2
@@ -16,6 +16,8 @@ import dev.icerock.moko.resources.StringResource
|
||||
import dev.icerock.moko.resources.desc.desc
|
||||
import kotlinx.coroutines.*
|
||||
import java.io.File
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.StandardCopyOption
|
||||
import java.util.*
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
@@ -35,6 +37,12 @@ catch (e: Exception) {
|
||||
false
|
||||
}
|
||||
|
||||
private val settingsTmpDir = File(desktopPlatform.configPath, "tmp")
|
||||
.also {
|
||||
it.deleteRecursively()
|
||||
it.mkdirs()
|
||||
}
|
||||
|
||||
private val settingsFile =
|
||||
File(desktopPlatform.configPath + File.separator + "settings.properties")
|
||||
.also { it.parentFile.mkdirs() }
|
||||
@@ -64,8 +72,16 @@ private val settingsThemesProps =
|
||||
|
||||
private val settingsWriterThread = Executors.newSingleThreadExecutor().asCoroutineDispatcher()
|
||||
|
||||
actual val settings: Settings = PropertiesSettings(settingsProps) { CoroutineScope(settingsWriterThread).launch { settingsFile.writer().use { settingsProps.store(it, "") } } }
|
||||
actual val settingsThemes: Settings = PropertiesSettings(settingsThemesProps) { CoroutineScope(settingsWriterThread).launch { settingsThemesFile.writer().use { settingsThemesProps.store(it, "") } } }
|
||||
actual val settings: Settings = PropertiesSettings(settingsProps) { CoroutineScope(settingsWriterThread).launch {
|
||||
createTmpFileAndDelete(settingsTmpDir) { tmpFile ->
|
||||
tmpFile.writer().use { settingsProps.store(it, "") }
|
||||
Files.move(tmpFile.toPath(), settingsFile.toPath(), StandardCopyOption.REPLACE_EXISTING)
|
||||
} } }
|
||||
actual val settingsThemes: Settings = PropertiesSettings(settingsThemesProps) { CoroutineScope(settingsWriterThread).launch {
|
||||
createTmpFileAndDelete(settingsTmpDir) { tmpFile ->
|
||||
tmpFile.writer().use { settingsThemesProps.store(it, "") }
|
||||
Files.move(tmpFile.toPath(), settingsThemesFile.toPath(), StandardCopyOption.REPLACE_EXISTING)
|
||||
} } }
|
||||
|
||||
actual fun windowOrientation(): WindowOrientation =
|
||||
if (simplexWindowState.windowState.size.width > simplexWindowState.windowState.size.height) {
|
||||
|
||||
Reference in New Issue
Block a user