@@ -2,6 +2,7 @@ package xyz.flipchat.app.features.chat.lookup
22
33import androidx.lifecycle.viewModelScope
44import com.getcode.manager.TopBarManager
5+ import com.getcode.model.ID
56import com.getcode.navigation.RoomInfoArgs
67import xyz.flipchat.app.R
78import xyz.flipchat.app.features.login.register.onResult
@@ -22,7 +23,7 @@ import javax.inject.Inject
2223class 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