refactor: simplify chat router ViewModel

Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
Infi 2023-05-20 17:15:10 +02:00
parent bba1544ede
commit dc8abf3494
1 changed files with 12 additions and 19 deletions

View File

@ -32,6 +32,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.ExperimentalComposeUiApi
@ -87,23 +88,15 @@ import javax.inject.Inject
class ChatRouterViewModel @Inject constructor( class ChatRouterViewModel @Inject constructor(
private val kvStorage: KVStorage private val kvStorage: KVStorage
) : ViewModel() { ) : ViewModel() {
private var _currentServer = mutableStateOf("home") var currentServer by mutableStateOf("home")
val currentServer: String var currentChannel by mutableStateOf<String?>(null)
get() = _currentServer.value var sidebarSparkDisplayed by mutableStateOf(true)
private var _currentChannel = mutableStateOf<String?>(null)
val currentChannel: String?
get() = _currentChannel.value
private var _sidebarSparkDisplayed = mutableStateOf(true)
val sidebarSparkDisplayed: Boolean
get() = _sidebarSparkDisplayed.value
init { init {
viewModelScope.launch { viewModelScope.launch {
_currentServer.value = kvStorage.get("currentServer") ?: "home" currentServer = kvStorage.get("currentServer") ?: "home"
_currentChannel.value = kvStorage.get("currentChannel") currentChannel = kvStorage.get("currentChannel")
_sidebarSparkDisplayed.value = if (kvStorage.getBoolean("sidebarSpark") == null) { sidebarSparkDisplayed = if (kvStorage.getBoolean("sidebarSpark") == null) {
false false
} else { } else {
kvStorage.getBoolean("sidebarSpark")!! kvStorage.getBoolean("sidebarSpark")!!
@ -112,15 +105,15 @@ class ChatRouterViewModel @Inject constructor(
} }
private fun setCurrentServer(serverId: String, save: Boolean = true) { private fun setCurrentServer(serverId: String, save: Boolean = true) {
_currentServer.value = serverId currentServer = serverId
if (save) viewModelScope.launch { if (save) viewModelScope.launch {
kvStorage.set("currentServer", serverId) kvStorage.set("currentServer", serverId)
} }
} }
private fun setCurrentChannel(channelId: String) { private fun setSaveCurrentChannel(channelId: String) {
_currentChannel.value = channelId currentChannel = channelId
viewModelScope.launch { viewModelScope.launch {
kvStorage.set("currentChannel", channelId) kvStorage.set("currentChannel", channelId)
@ -129,7 +122,7 @@ class ChatRouterViewModel @Inject constructor(
suspend fun setSettingsHintDisplayed() { suspend fun setSettingsHintDisplayed() {
kvStorage.set("sidebarSpark", true) kvStorage.set("sidebarSpark", true)
_sidebarSparkDisplayed.value = true sidebarSparkDisplayed = true
} }
fun navigateToServer(serverId: String, navController: NavController) { fun navigateToServer(serverId: String, navController: NavController) {
@ -159,7 +152,7 @@ class ChatRouterViewModel @Inject constructor(
} }
fun navigateToChannel(channelId: String, navController: NavController, pure: Boolean = false) { fun navigateToChannel(channelId: String, navController: NavController, pure: Boolean = false) {
if (!pure) setCurrentChannel(channelId) if (!pure) setSaveCurrentChannel(channelId)
navController.navigate("channel/$channelId") { navController.navigate("channel/$channelId") {
navController.graph.startDestinationRoute?.let { route -> navController.graph.startDestinationRoute?.let { route ->