refactor: simplify chat router ViewModel
Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
parent
bba1544ede
commit
dc8abf3494
|
|
@ -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 ->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue