Skip to content

Commit 7ca6cd9

Browse files
committed
fix: allow token selection to finish before popping back
Signed-off-by: Brandon McAnsh <[email protected]>
1 parent 045a4c1 commit 7ca6cd9

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

apps/flipcash/features/tokens/src/main/kotlin/com/flipcash/app/tokens/SelectTokenScreen.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class SelectTokenScreen(private val purpose: TokenPurpose) : ModalScreen, NamedS
6767
.launchIn(this)
6868
}
6969

70+
// handle the cases where we are inserted in a flow to select a token
7071
LaunchedEffect(viewModel) {
7172
viewModel.eventFlow
7273
.filterIsInstance<SelectTokenViewModel.Event.OnTokenSelected>()
@@ -75,7 +76,7 @@ class SelectTokenScreen(private val purpose: TokenPurpose) : ModalScreen, NamedS
7576
.onEach { token ->
7677
when (purpose) {
7778
TokenPurpose.Balance -> Unit
78-
TokenPurpose.Select -> navigator.pop()
79+
TokenPurpose.Select -> Unit
7980
TokenPurpose.Withdraw -> {
8081
navigator.push(
8182
ScreenRegistry.get(Amount(token))
@@ -89,6 +90,14 @@ class SelectTokenScreen(private val purpose: TokenPurpose) : ModalScreen, NamedS
8990
}
9091
}.launchIn(this)
9192
}
93+
94+
// handle the case where we are changing the selected token
95+
LaunchedEffect(viewModel) {
96+
viewModel.eventFlow
97+
.filterIsInstance<SelectTokenViewModel.Event.OnTokenChanged>()
98+
.onEach { navigator.pop() }
99+
.launchIn(this)
100+
}
92101
}
93102
}
94103
}

apps/flipcash/shared/tokens/src/main/kotlin/SelectTokenViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ class SelectTokenViewModel @Inject constructor(
6666

6767
data class OnTokenSelected(val mint: Mint, val fromUser: Boolean = true): Event
6868

69+
data object OnTokenChanged: Event
70+
6971
data object OnAddCashClicked: Event
7072
data object OpenOnRampAmountModal: Event
7173
data class OpenScreen(val route: AppRoute): Event
@@ -151,6 +153,7 @@ class SelectTokenViewModel @Inject constructor(
151153
.filter { it.fromUser }
152154
.map { it.mint }
153155
.onEach { tokenController.selectToken(it) }
156+
.onEach { dispatchEvent(Event.OnTokenChanged) }
154157
.launchIn(viewModelScope)
155158
}
156159

@@ -166,6 +169,7 @@ class SelectTokenViewModel @Inject constructor(
166169
is Event.OnPurposeChanged -> { state -> state.copy(purpose = event.purpose) }
167170
is Event.OnTokensUpdated -> { state -> state.copy(tokens = event.tokens) }
168171
is Event.OnTokenSelected -> { state -> state.copy(selectedToken = event.mint) }
172+
is Event.OnTokenChanged -> { state -> state }
169173
is Event.OnAddCashClicked -> { state -> state }
170174
is Event.OpenOnRampAmountModal -> { state -> state }
171175
is Event.OpenScreen -> { state -> state }

0 commit comments

Comments
 (0)