feat: always enable experiments in debug builds
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
66914aefee
commit
9961809730
|
|
@ -3,6 +3,7 @@ package chat.revolt.api.settings
|
|||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import chat.revolt.BuildConfig
|
||||
import chat.revolt.RevoltApplication
|
||||
import chat.revolt.persistence.KVStorage
|
||||
|
||||
|
|
@ -30,7 +31,11 @@ object Experiments {
|
|||
suspend fun hydrateWithKv() {
|
||||
val kvStorage = KVStorage(RevoltApplication.instance)
|
||||
|
||||
GlobalState.experimentsEnabled = kvStorage.getBoolean("experimentsEnabled") ?: false
|
||||
if (BuildConfig.DEBUG) {
|
||||
GlobalState.experimentsEnabled = true
|
||||
} else {
|
||||
GlobalState.experimentsEnabled = kvStorage.getBoolean("experimentsEnabled") ?: false
|
||||
}
|
||||
|
||||
useKotlinBasedMarkdownRenderer.setEnabled(
|
||||
kvStorage.getBoolean("exp/useKotlinBasedMarkdownRenderer") ?: false
|
||||
|
|
|
|||
|
|
@ -1,19 +1,21 @@
|
|||
package chat.revolt.screens.settings
|
||||
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.material3.ElevatedButton
|
||||
import androidx.compose.material3.ListItem
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import androidx.navigation.NavController
|
||||
import chat.revolt.BuildConfig
|
||||
import chat.revolt.RevoltApplication
|
||||
import chat.revolt.api.settings.Experiments
|
||||
import chat.revolt.api.settings.GlobalState
|
||||
import chat.revolt.persistence.KVStorage
|
||||
|
|
@ -21,17 +23,33 @@ import chat.revolt.settings.dsl.SettingsPage
|
|||
import chat.revolt.settings.dsl.SubcategoryContentInsets
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@Composable
|
||||
fun ExperimentsSettingsScreen(navController: NavController) {
|
||||
val context = LocalContext.current
|
||||
val kv = remember { KVStorage(context) }
|
||||
val scope = rememberCoroutineScope()
|
||||
class ExperimentsSettingsScreenViewModel : ViewModel() {
|
||||
private val kv = KVStorage(RevoltApplication.instance)
|
||||
|
||||
var useKotlinMdRendererChecked by remember { mutableStateOf(false) }
|
||||
LaunchedEffect(Unit) {
|
||||
useKotlinMdRendererChecked = kv.getBoolean("exp/useKotlinBasedMarkdownRenderer") ?: false
|
||||
fun disableExperiments(then: () -> Unit = {}) {
|
||||
viewModelScope.launch {
|
||||
kv.remove("experimentsEnabled")
|
||||
GlobalState.experimentsEnabled = false
|
||||
then()
|
||||
}
|
||||
}
|
||||
|
||||
val useKotlinMdRendererChecked = mutableStateOf(false)
|
||||
|
||||
fun setUseKotlinMdRendererChecked(value: Boolean) {
|
||||
viewModelScope.launch {
|
||||
kv.set("exp/useKotlinBasedMarkdownRenderer", value)
|
||||
Experiments.useKotlinBasedMarkdownRenderer.setEnabled(value)
|
||||
useKotlinMdRendererChecked.value = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun ExperimentsSettingsScreen(
|
||||
navController: NavController,
|
||||
viewModel: ExperimentsSettingsScreenViewModel = viewModel()
|
||||
) {
|
||||
SettingsPage(
|
||||
navController,
|
||||
title = {
|
||||
|
|
@ -47,16 +65,11 @@ fun ExperimentsSettingsScreen(navController: NavController) {
|
|||
},
|
||||
trailingContent = {
|
||||
Switch(
|
||||
checked = useKotlinMdRendererChecked,
|
||||
onCheckedChange = { isChecked ->
|
||||
scope.launch {
|
||||
kv.set("exp/useKotlinBasedMarkdownRenderer", isChecked)
|
||||
Experiments.useKotlinBasedMarkdownRenderer.setEnabled(isChecked)
|
||||
useKotlinMdRendererChecked = isChecked
|
||||
}
|
||||
}
|
||||
checked = viewModel.useKotlinMdRendererChecked.value,
|
||||
onCheckedChange = viewModel::setUseKotlinMdRendererChecked
|
||||
)
|
||||
}
|
||||
},
|
||||
modifier = Modifier.clickable { viewModel.setUseKotlinMdRendererChecked(!viewModel.useKotlinMdRendererChecked.value) }
|
||||
)
|
||||
|
||||
Subcategory(
|
||||
|
|
@ -67,14 +80,18 @@ fun ExperimentsSettingsScreen(navController: NavController) {
|
|||
) {
|
||||
ElevatedButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
kv.remove("experimentsEnabled")
|
||||
GlobalState.experimentsEnabled = false
|
||||
viewModel.disableExperiments {
|
||||
navController.popBackStack()
|
||||
}
|
||||
}
|
||||
},
|
||||
enabled = !BuildConfig.DEBUG,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text("Disable")
|
||||
if (BuildConfig.DEBUG) {
|
||||
Text("Experiments are always enabled in debug builds")
|
||||
} else {
|
||||
Text("Disable")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue