Skip to content

Commit

Permalink
Fix swap settings update
Browse files Browse the repository at this point in the history
  • Loading branch information
abdrasulov committed Mar 28, 2024
1 parent 0d79c44 commit 537dc10
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 98 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,9 @@ import io.horizontalsystems.bankwallet.core.BaseComposeFragment
import io.horizontalsystems.bankwallet.modules.evmfee.ButtonsGroupWithShade
import io.horizontalsystems.bankwallet.modules.swapxxx.SwapViewModel
import io.horizontalsystems.bankwallet.ui.compose.ComposeAppTheme
import io.horizontalsystems.bankwallet.ui.compose.TranslatableString
import io.horizontalsystems.bankwallet.ui.compose.components.AppBar
import io.horizontalsystems.bankwallet.ui.compose.components.ButtonPrimaryYellow
import io.horizontalsystems.bankwallet.ui.compose.components.HsBackButton
import io.horizontalsystems.bankwallet.ui.compose.components.MenuItem
import io.horizontalsystems.bankwallet.ui.compose.components.VSpacer

class SwapSettingsFragment : BaseComposeFragment() {
Expand All @@ -38,7 +36,9 @@ private fun SwapProviderSettingsScreen(navController: NavController) {
viewModelStoreOwner = previousBackStackEntry!!,
)

val viewModel = viewModel<SwapSettingsViewModel>(factory = SwapSettingsViewModel.Factory())
val viewModel = viewModel<SwapSettingsViewModel>(factory = SwapSettingsViewModel.Factory(swapViewModel.getSettings()))

val uiState = viewModel.uiState

Scaffold(
topBar = {
Expand All @@ -47,14 +47,6 @@ private fun SwapProviderSettingsScreen(navController: NavController) {
navigationIcon = {
HsBackButton(onClick = { navController.popBackStack() })
},
menuItems = listOf(
MenuItem(
title = TranslatableString.ResString(R.string.Button_Reset),
onClick = {

}
)
),
)
},
bottomBar = {
Expand All @@ -64,9 +56,8 @@ private fun SwapProviderSettingsScreen(navController: NavController) {
.padding(horizontal = 16.dp)
.fillMaxWidth(),
title = stringResource(id = R.string.SwapSettings_Apply),
enabled = viewModel.saveSettingsEnabled,
enabled = uiState.applyEnabled,
onClick = {
viewModel.saveSettings()
swapViewModel.onUpdateSettings(viewModel.getSettings())
navController.popBackStack()
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,48 +1,39 @@
package io.horizontalsystems.bankwallet.modules.swapxxx.settings

import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.launch
import io.horizontalsystems.bankwallet.core.ViewModelUiState

class SwapSettingsViewModel(private val settingsService: SwapSettingsService) : ViewModel() {
var saveSettingsEnabled by mutableStateOf(settingsService.saveEnabledFlow.value)
class SwapSettingsViewModel(settings: Map<String, Any?>) : ViewModelUiState<SwapSettingsUiState>() {
private var errors = mutableMapOf<String, Throwable>()
private val settings = settings.toMutableMap()

init {
viewModelScope.launch {
settingsService.saveEnabledFlow.collect {
saveSettingsEnabled = it
}
}
}
override fun createState() = SwapSettingsUiState(
applyEnabled = errors.isEmpty(),
)

fun onSettingError(id: String, error: Throwable?) {
settingsService.onSettingError(id, error)
}

fun onSettingEnter(id: String, value: Any?) {
settingsService.setSetting(id, value)
}
if (error == null) {
errors.remove(id)
} else {
errors[id] = error
}

fun saveSettings() {
settingsService.save()
emitState()
}

fun getSettings(): Map<String, Any?> {
return settingsService.getSettings()
fun onSettingEnter(id: String, value: Any?) {
settings[id] = value
}

fun getSettings() = settings

class Factory : ViewModelProvider.Factory {
class Factory(private val settings: Map<String, Any?>) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
val swapSettingsService = SwapSettingsService()

return SwapSettingsViewModel(swapSettingsService) as T
return SwapSettingsViewModel(settings) as T
}
}

}

data class SwapSettingsUiState(val applyEnabled: Boolean)

0 comments on commit 537dc10

Please sign in to comment.