Skip to content

Commit 6ab79f4

Browse files
committed
chore(fc): upon looking up existing chat, auto open chat instead of showing confirmation to pay
Signed-off-by: Brandon McAnsh <[email protected]>
1 parent 5d02836 commit 6ab79f4

File tree

2 files changed

+40
-20
lines changed

2 files changed

+40
-20
lines changed

flipchatApp/src/main/kotlin/xyz/flipchat/app/features/chat/lookup/LookupRoomScreen.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,15 @@ data object LookupRoomScreen : Screen, NamedScreen, Parcelable {
6464
LookupRoomScreenContent(viewModel)
6565
}
6666

67+
LaunchedEffect(viewModel) {
68+
viewModel.eventFlow
69+
.filterIsInstance<LookupRoomViewModel.Event.OpenExistingRoom>()
70+
.map { it.roomId }
71+
.onEach {
72+
navigator.push(ScreenRegistry.get(NavScreenProvider.Chat.Conversation(it)))
73+
}.launchIn(this)
74+
}
75+
6776
LaunchedEffect(viewModel) {
6877
viewModel.eventFlow
6978
.filterIsInstance<LookupRoomViewModel.Event.OnOpenConfirmation>()

flipchatApp/src/main/kotlin/xyz/flipchat/app/features/chat/lookup/LookupRoomViewModel.kt

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package xyz.flipchat.app.features.chat.lookup
22

33
import androidx.lifecycle.viewModelScope
44
import com.getcode.manager.TopBarManager
5+
import com.getcode.model.ID
56
import com.getcode.navigation.RoomInfoArgs
67
import xyz.flipchat.app.R
78
import xyz.flipchat.app.features.login.register.onResult
@@ -22,7 +23,7 @@ import javax.inject.Inject
2223
class LookupRoomViewModel @Inject constructor(
2324
chatsController: ChatsController,
2425
resources: ResourceHelper,
25-
): BaseViewModel2<LookupRoomViewModel.State, LookupRoomViewModel.Event>(
26+
) : BaseViewModel2<LookupRoomViewModel.State, LookupRoomViewModel.Event>(
2627
initialState = State(),
2728
updateStateForEvent = updateStateForEvent
2829
) {
@@ -38,14 +39,15 @@ class LookupRoomViewModel @Inject constructor(
3839
)
3940

4041
sealed interface Event {
41-
data class OnLookingUpRoom(val requesting: Boolean): Event
42-
data class OnNumberPressed(val number: Int): Event
43-
data object OnBackspace: Event
44-
data class OnEnteredNumberChanged(val backspace: Boolean = false): Event
45-
data class OnRoomNumberChanged(val animatedInputUiModel: AmountAnimatedInputUiModel): Event
46-
data object OnLookupRoom: Event
47-
data object OnRoomFound: Event
48-
data class OnOpenConfirmation(val args: RoomInfoArgs): Event
42+
data class OnLookingUpRoom(val requesting: Boolean) : Event
43+
data class OnNumberPressed(val number: Int) : Event
44+
data object OnBackspace : Event
45+
data class OnEnteredNumberChanged(val backspace: Boolean = false) : Event
46+
data class OnRoomNumberChanged(val animatedInputUiModel: AmountAnimatedInputUiModel) : Event
47+
data object OnLookupRoom : Event
48+
data object OnRoomFound : Event
49+
data class OnOpenConfirmation(val args: RoomInfoArgs) : Event
50+
data class OpenExistingRoom(val roomId: ID) : Event
4951
}
5052

5153
init {
@@ -95,7 +97,10 @@ class LookupRoomViewModel @Inject constructor(
9597
TopBarManager.showMessage(
9698
TopBarManager.TopBarMessage(
9799
resources.getString(R.string.error_title_failedToGetRoom),
98-
resources.getString(R.string.error_description_failedToGetRoom, stateFlow.value.amountAnimatedModel.amountData.amount)
100+
resources.getString(
101+
R.string.error_description_failedToGetRoom,
102+
stateFlow.value.amountAnimatedModel.amountData.amount
103+
)
99104
)
100105
)
101106
},
@@ -105,16 +110,21 @@ class LookupRoomViewModel @Inject constructor(
105110

106111
val host = it.members.firstOrNull { m -> m.isHost }
107112

108-
val confirmJoinArgs = RoomInfoArgs(
109-
roomId = it.room.id,
110-
roomTitle = it.room.titleOrFallback(resources),
111-
roomNumber = it.room.roomNumber,
112-
memberCount = it.members.count(),
113-
hostId = host?.id,
114-
hostName = host?.identity?.displayName,
115-
coverChargeQuarks = it.room.coverCharge.quarks
116-
)
117-
dispatchEvent(Event.OnOpenConfirmation(confirmJoinArgs))
113+
val isExistingMember = it.members.any { m -> m.isSelf }
114+
if (isExistingMember) {
115+
dispatchEvent(Event.OpenExistingRoom(it.room.id))
116+
} else {
117+
val confirmJoinArgs = RoomInfoArgs(
118+
roomId = it.room.id,
119+
roomTitle = it.room.titleOrFallback(resources),
120+
roomNumber = it.room.roomNumber,
121+
memberCount = it.members.count(),
122+
hostId = host?.id,
123+
hostName = host?.identity?.displayName,
124+
coverChargeQuarks = it.room.coverCharge.quarks
125+
)
126+
dispatchEvent(Event.OnOpenConfirmation(confirmJoinArgs))
127+
}
118128
}
119129
).launchIn(viewModelScope)
120130
}
@@ -135,6 +145,7 @@ class LookupRoomViewModel @Inject constructor(
135145
is Event.OnEnteredNumberChanged,
136146
Event.OnLookupRoom,
137147
is Event.OnOpenConfirmation,
148+
is Event.OpenExistingRoom,
138149
is Event.OnNumberPressed -> { state -> state }
139150

140151
is Event.OnRoomFound -> { state -> state.copy(success = true) }

0 commit comments

Comments
 (0)