Skip to content

Commit d8d428f

Browse files
committed
fix upgrade popup not showing once shown.
1 parent 2e5d4e2 commit d8d428f

File tree

3 files changed

+79
-13
lines changed

3 files changed

+79
-13
lines changed

mobile/src/main/java/com/windscribe/mobile/ui/connection/ConnectionViewmodel.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.windscribe.mobile.ui.preferences.lipstick.LookAndFeelHelper.bundledBa
1313
import com.windscribe.mobile.ui.preferences.lipstick.LookAndFeelHelper.getSoundFile
1414
import com.windscribe.mobile.ui.common.isEnabled
1515
import com.windscribe.mobile.ui.home.HomeGoto
16+
import com.windscribe.mobile.ui.home.HomeScreen
1617
import com.windscribe.mobile.ui.serverlist.ServerListItem
1718
import com.windscribe.vpn.Windscribe.Companion.appContext
1819
import com.windscribe.vpn.apppreference.PreferencesHelper
@@ -144,6 +145,7 @@ abstract class ConnectionViewmodel : ViewModel() {
144145
abstract val toastMessage: StateFlow<ToastMessage>
145146
abstract fun clearToast()
146147
abstract fun onProtocolChangeClick()
148+
abstract fun onGoToHandled()
147149
}
148150

149151
class ConnectionViewmodelImpl @Inject constructor(
@@ -178,7 +180,7 @@ class ConnectionViewmodelImpl @Inject constructor(
178180
override val isAntiCensorshipEnabled: StateFlow<Boolean> = _isAntiCensorshipEnabled
179181
private val _isPreferredProtocolEnabled = MutableStateFlow(false)
180182
override val isPreferredProtocolEnabled: StateFlow<Boolean> = _isPreferredProtocolEnabled
181-
private val _goto = MutableSharedFlow<HomeGoto>(extraBufferCapacity = 1)
183+
private val _goto = MutableSharedFlow<HomeGoto>(replay = 0)
182184
override val goto: SharedFlow<HomeGoto> = _goto
183185
private val _newFeedCount = MutableStateFlow(0)
184186
override val newFeedCount: StateFlow<Int> = _newFeedCount
@@ -751,9 +753,19 @@ class ConnectionViewmodelImpl @Inject constructor(
751753
}
752754
}
753755

756+
override fun onGoToHandled() {
757+
viewModelScope.launch {
758+
_goto.emit(HomeGoto.None)
759+
_toastMessage.emit(ToastMessage.None)
760+
}
761+
}
762+
754763
override fun onCleared() {
755764
networkInfoManager.removeNetworkInfoListener(networkListener!!)
756765
preferences.removeObserver(preferenceChangeListener!!)
766+
viewModelScope.launch {
767+
_goto.emit(HomeGoto.None)
768+
}
757769
super.onCleared()
758770
}
759771
}

mobile/src/main/java/com/windscribe/mobile/ui/home/HomeScreen.kt

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,19 @@ fun HomeScreen(
110110
fun HandleGoto(connectionViewmodel: ConnectionViewmodel, homeViewmodel: HomeViewmodel) {
111111
val connectionGoto by connectionViewmodel.goto.collectAsState(initial = null)
112112
val homeGoto by homeViewmodel.goto.collectAsState(initial = null)
113-
HandleGotoAction(goto = connectionGoto)
114-
HandleGotoAction(goto = homeGoto)
113+
HandleGotoAction(goto = connectionGoto, homeViewmodel, connectionViewmodel)
114+
HandleGotoAction(goto = homeGoto, homeViewmodel, connectionViewmodel)
115115
}
116116

117117
@Composable
118-
private fun HandleGotoAction(goto: HomeGoto?) {
118+
private fun HandleGotoAction(
119+
goto: HomeGoto?,
120+
homeViewmodel: HomeViewmodel,
121+
connectionViewmodel: ConnectionViewmodel
122+
) {
119123
val context = LocalContext.current
120124
val navController = LocalNavController.current
125+
var didNavigate = false
121126
when (goto) {
122127
HomeGoto.Banned -> {
123128
val bannedData = AccountStatusDialogData(
@@ -131,33 +136,64 @@ private fun HandleGotoAction(goto: HomeGoto?) {
131136
bannedLayout = true
132137
)
133138
navigateWithData(navController, Screen.AccountStatus.route, bannedData)
139+
didNavigate = true
134140
}
135141

136142
is HomeGoto.Expired -> {
137143
val expireData = AccountStatusDialogData(
138144
title = stringResource(com.windscribe.vpn.R.string.you_re_out_of_data),
139145
icon = R.drawable.garry_nodata,
140-
description = stringResource(com.windscribe.vpn.R.string.upgrade_to_stay_protected, goto.date),
146+
description = stringResource(
147+
com.windscribe.vpn.R.string.upgrade_to_stay_protected,
148+
goto.date
149+
),
141150
showSkipButton = true,
142151
skipText = stringResource(com.windscribe.vpn.R.string.upgrade_later),
143152
showUpgradeButton = true,
144153
upgradeText = stringResource(com.windscribe.vpn.R.string.upgrade),
145154
)
146155
navigateWithData(navController, Screen.AccountStatus.route, expireData)
156+
didNavigate = true
147157
}
148158

149159
is HomeGoto.EditCustomConfig -> {
150160
navController.currentBackStackEntry?.savedStateHandle?.set("config_id", goto.id)
151161
navController.currentBackStackEntry?.savedStateHandle?.set("connect", goto.connect)
152162
navController.navigate(Screen.EditCustomConfig.route)
163+
didNavigate = true
164+
}
165+
166+
is HomeGoto.Upgrade -> {
167+
context.startActivity(UpgradeActivity.getStartIntent(context))
168+
didNavigate = true
169+
}
170+
171+
HomeGoto.PowerWhitelist -> {
172+
navController.navigate(Screen.PowerWhitelist.route)
173+
didNavigate = true
174+
}
175+
176+
HomeGoto.ShareAppLink -> {
177+
navController.navigate(Screen.ShareLink.route)
178+
didNavigate = true
179+
}
180+
181+
HomeGoto.LocationMaintenance -> {
182+
navController.navigate(Screen.LocationUnderMaintenance.route)
183+
didNavigate = true
184+
}
185+
186+
HomeGoto.MainMenu -> {
187+
navController.navigate(Screen.MainMenu.route)
188+
didNavigate = true
153189
}
154190

155-
is HomeGoto.Upgrade -> context.startActivity(UpgradeActivity.getStartIntent(context))
156-
HomeGoto.PowerWhitelist -> navController.navigate(Screen.PowerWhitelist.route)
157-
HomeGoto.ShareAppLink -> navController.navigate(Screen.ShareLink.route)
158-
HomeGoto.LocationMaintenance -> navController.navigate(Screen.LocationUnderMaintenance.route)
159-
HomeGoto.MainMenu -> navController.navigate(Screen.MainMenu.route)
160-
null -> Unit
191+
HomeGoto.None -> {}
192+
null -> {}
193+
}
194+
if (didNavigate) {
195+
connectionViewmodel.onGoToHandled()
196+
homeViewmodel.onGoToHandled()
161197
}
162198
}
163199

@@ -348,7 +384,13 @@ internal fun BoxScope.NetworkInfoSheet(
348384
val showContextMenu by connectionViewmodel.ipContextMenuState.collectAsState()
349385
val isHapticEnabled by homeViewmodel.hapticFeedbackEnabled.collectAsState()
350386
val hideIp = remember { mutableStateOf(false) }
351-
Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.align(Alignment.BottomCenter).offset(y = (-66).dp).padding(end = 12.dp)) {
387+
Row(
388+
verticalAlignment = Alignment.CenterVertically,
389+
modifier = Modifier
390+
.align(Alignment.BottomCenter)
391+
.offset(y = (-66).dp)
392+
.padding(end = 12.dp)
393+
) {
352394
NetworkNameSheet(connectionViewmodel, homeViewmodel)
353395
Row(
354396
modifier = Modifier

mobile/src/main/java/com/windscribe/mobile/ui/home/HomeViewmodel.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.os.Build
55
import android.os.PowerManager
66
import androidx.lifecycle.ViewModel
77
import androidx.lifecycle.viewModelScope
8+
import com.windscribe.mobile.ui.connection.ToastMessage
89
import com.windscribe.vpn.Windscribe.Companion.appContext
910
import com.windscribe.vpn.apppreference.PreferencesHelper
1011
import com.windscribe.vpn.model.User
@@ -30,6 +31,7 @@ sealed class HomeGoto {
3031
object LocationMaintenance : HomeGoto()
3132
data class EditCustomConfig(val id: Int, val connect: Boolean) : HomeGoto()
3233
object MainMenu: HomeGoto()
34+
object None: HomeGoto()
3335
}
3436

3537
sealed class UserState() {
@@ -50,6 +52,7 @@ abstract class HomeViewmodel : ViewModel() {
5052
abstract val hapticFeedbackEnabled: StateFlow<Boolean>
5153
abstract val showLocationLoad: StateFlow<Boolean>
5254
abstract fun onMainMenuClick()
55+
abstract fun onGoToHandled()
5356
}
5457

5558
class HomeViewmodelImpl(
@@ -58,7 +61,7 @@ class HomeViewmodelImpl(
5861
private val preferences: PreferencesHelper
5962
) : HomeViewmodel() {
6063

61-
private val _goto = MutableSharedFlow<HomeGoto>(extraBufferCapacity = 1)
64+
private val _goto = MutableSharedFlow<HomeGoto>(replay = 0)
6265
override val goto: SharedFlow<HomeGoto> = _goto
6366
private val _userState = MutableStateFlow<UserState>(UserState.Loading)
6467
override val userState: StateFlow<UserState> = _userState
@@ -164,6 +167,15 @@ class HomeViewmodelImpl(
164167

165168
override fun onCleared() {
166169
preferences.removeObserver(trayPreferenceChangeListener)
170+
viewModelScope.launch {
171+
_goto.emit(HomeGoto.None)
172+
}
167173
super.onCleared()
168174
}
175+
176+
override fun onGoToHandled() {
177+
viewModelScope.launch {
178+
_goto.emit(HomeGoto.None)
179+
}
180+
}
169181
}

0 commit comments

Comments
 (0)