Merge branch 'master' into chat-relays

This commit is contained in:
spaced4ndy
2026-03-24 22:04:00 +04:00
7 changed files with 55 additions and 4 deletions
@@ -9,6 +9,7 @@ import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
@@ -117,12 +118,25 @@ fun DatabaseErrorView(
OpenDatabaseDirectoryButton()
}
is MigrationError.Downgrade -> {
val warnings = downMigrationWarnings(err.downMigrations).reversed()
DatabaseErrorDetails(MR.strings.database_downgrade) {
TextButton({ callRunChat(confirmMigrations = MigrationConfirmation.YesUpDown) }, Modifier.align(Alignment.CenterHorizontally), enabled = !progressIndicator.value) {
Text(generalGetString(MR.strings.downgrade_and_open_chat))
}
Spacer(Modifier.height(20.dp))
Icon(
painterResource(MR.images.ic_warning_filled),
contentDescription = null,
Modifier.size(40.dp).align(Alignment.CenterHorizontally),
tint = Color.Red
)
Spacer(Modifier.height(12.dp))
Text(generalGetString(MR.strings.database_downgrade_warning), fontWeight = FontWeight.Bold)
if (warnings.isNotEmpty()) {
warnings.forEach { warning ->
Text(warning, fontWeight = FontWeight.Bold)
}
}
FileNameText(status.dbFile)
MigrationsText(err.downMigrations)
AppVersionText()
@@ -2,6 +2,7 @@ package chat.simplex.common.views.helpers
import chat.simplex.common.model.*
import chat.simplex.common.platform.*
import chat.simplex.res.MR
import kotlinx.serialization.*
import java.io.File
import java.security.SecureRandom
@@ -108,6 +109,15 @@ data class UpMigration(
// val withDown: Boolean
)
fun downMigrationWarnings(downMigrations: List<String>): List<String> {
val warnings = listOf(
"20260222_chat_relays" to MR.strings.down_migration_warning_chat_relays
)
return warnings.mapNotNull { (key, res) ->
if (downMigrations.contains(key)) generalGetString(res) else null
}
}
@Serializable
sealed class MTRError {
@Serializable @SerialName("noDown") class NoDown(val dbMigrations: List<String>): MTRError()
@@ -474,7 +474,9 @@ private fun MutableState<MigrationToState?>.MigrationConfirmationView(status: DB
Tuple4(
generalGetString(MR.strings.database_downgrade),
generalGetString(MR.strings.downgrade_and_open_chat),
generalGetString(MR.strings.database_downgrade_warning),
(listOf(generalGetString(MR.strings.database_downgrade_warning))
+ downMigrationWarnings(err.downMigrations).reversed())
.joinToString("\n"),
MigrationConfirmation.YesUpDown
)
is MigrationError.Error ->
@@ -1647,6 +1647,7 @@
<string name="mtr_error_different">different migration in the app/database: %s / %s</string>
<string name="database_migrations">Migrations: %s</string>
<string name="database_downgrade_warning">Warning: you may lose some data!</string>
<string name="down_migration_warning_chat_relays">If you joined or created channels, they will stop working permanently.</string>
<!-- ChatModel.chatRunning interactions -->
<string name="chat_is_stopped_indication">Chat is stopped</string>