Skip to content

Commit c727586

Browse files
committed
fix: reset home state when logging out
Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent 9560e79 commit c727586

3 files changed

Lines changed: 34 additions & 3 deletions

File tree

app/src/main/java/com/getcode/TopLevelViewModel.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ import android.app.Activity
44
import com.getcode.manager.AuthManager
55
import com.getcode.util.resources.ResourceHelper
66
import com.getcode.view.BaseViewModel
7+
import com.getcode.view.BaseViewModel2
78
import dagger.hilt.android.lifecycle.HiltViewModel
9+
import kotlinx.coroutines.flow.MutableSharedFlow
10+
import kotlinx.coroutines.flow.SharedFlow
11+
import kotlinx.coroutines.flow.asSharedFlow
812
import javax.inject.Inject
913

1014
@HiltViewModel
@@ -13,7 +17,19 @@ class TopLevelViewModel @Inject constructor(
1317
resources: ResourceHelper,
1418
) : BaseViewModel(resources) {
1519

20+
private val _eventFlow: MutableSharedFlow<Event> = MutableSharedFlow()
21+
val eventFlow: SharedFlow<Event> = _eventFlow.asSharedFlow()
22+
23+
sealed interface Event {
24+
data object LogoutRequested: Event
25+
data object LogoutCompleted: Event
26+
}
27+
1628
fun logout(activity: Activity, onComplete: () -> Unit = {}) {
17-
authManager.logout(activity, onComplete)
29+
_eventFlow.tryEmit(Event.LogoutRequested)
30+
authManager.logout(activity) {
31+
_eventFlow.tryEmit(Event.LogoutCompleted)
32+
onComplete()
33+
}
1834
}
1935
}

app/src/main/java/com/getcode/navigation/screens/MainScreens.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package com.getcode.navigation.screens
22

33
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.LaunchedEffect
45
import androidx.compose.ui.platform.LocalLifecycleOwner
56
import androidx.compose.ui.res.stringResource
67
import androidx.lifecycle.Lifecycle
78
import cafe.adriel.voyager.core.screen.ScreenKey
89
import cafe.adriel.voyager.core.screen.uniqueScreenKey
910
import cafe.adriel.voyager.hilt.getViewModel
1011
import com.getcode.R
12+
import com.getcode.TopLevelViewModel
1113
import com.getcode.analytics.AnalyticsManager
1214
import com.getcode.analytics.AnalyticsScreenWatcher
1315
import com.getcode.model.KinAmount
@@ -22,6 +24,7 @@ import com.getcode.view.main.getKin.GetKinSheet
2224
import com.getcode.view.main.giveKin.GiveKinSheet
2325
import com.getcode.view.main.home.HomeScreen
2426
import com.getcode.view.main.home.HomeViewModel
27+
import kotlinx.coroutines.flow.filterIsInstance
2528
import kotlinx.coroutines.flow.filterNotNull
2629
import kotlinx.coroutines.flow.launchIn
2730
import kotlinx.coroutines.flow.mapNotNull
@@ -46,7 +49,9 @@ data class HomeScreen(
4649

4750
@Composable
4851
override fun Content() {
49-
val vm = getViewModel<HomeViewModel>()
52+
val vm = getActivityScopedViewModel<HomeViewModel>()
53+
val tlvm = getActivityScopedViewModel<TopLevelViewModel>()
54+
5055
startupLog("home rendered")
5156
HomeScreen(vm, cashLink, requestPayload)
5257

@@ -61,7 +66,13 @@ data class HomeScreen(
6166
vm.presentRequest(amount = result.amount, payload = null, request = null)
6267
}
6368
}
69+
}
6470

71+
LaunchedEffect(tlvm) {
72+
tlvm.eventFlow
73+
.filterIsInstance<TopLevelViewModel.Event.LogoutCompleted>()
74+
.onEach { vm.reset() }
75+
.launchIn(this)
6576
}
6677
}
6778
}

app/src/main/java/com/getcode/view/main/home/HomeViewModel.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ class HomeViewModel @Inject constructor(
194194
}
195195
}
196196

197-
prefRepository.observeOrDefault(PrefsBool.IS_ELIGIBLE_GET_FIRST_KIN_AIRDROP, true)
197+
prefRepository.observeOrDefault(PrefsBool.IS_ELIGIBLE_GET_FIRST_KIN_AIRDROP, false)
198198
.map { it }
199199
.distinctUntilChanged()
200200
.onEach { Timber.d("airdrop eligible=$it") }
@@ -294,6 +294,10 @@ class HomeViewModel @Inject constructor(
294294
}
295295
}
296296

297+
fun reset() {
298+
uiFlow.update { HomeUiModel() }
299+
}
300+
297301
fun onCameraPermissionChanged(isGranted: Boolean) {
298302
uiFlow.update { it.copy(isCameraPermissionGranted = isGranted) }
299303
}

0 commit comments

Comments
 (0)