Skip to content

Commit a31bc05

Browse files
committed
feat(fc/conversation): allow join for authenticated users
Signed-off-by: Brandon McAnsh <[email protected]>
1 parent 60665d3 commit a31bc05

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

flipchatApp/src/main/kotlin/xyz/flipchat/app/features/chat/conversation/ConversationViewModel.kt

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ import xyz.flipchat.services.domain.model.chat.ConversationMember
7070
import xyz.flipchat.services.domain.model.chat.ConversationMessage
7171
import xyz.flipchat.services.domain.model.chat.ConversationWithMembersAndLastPointers
7272
import xyz.flipchat.services.extensions.titleOrFallback
73+
import xyz.flipchat.services.user.AuthState
7374
import xyz.flipchat.services.user.UserManager
7475
import java.util.UUID
7576
import javax.inject.Inject
@@ -143,7 +144,7 @@ class ConversationViewModel @Inject constructor(
143144
sealed interface Event {
144145
data class OnSelfChanged(val id: ID?, val displayName: String?) : Event
145146
data class OnChatIdChanged(val chatId: ID?) : Event
146-
data class OnMembersChanged(val members: List<ConversationMember>): Event
147+
data class OnMembersChanged(val members: List<ConversationMember>) : Event
147148
data class OnConversationChanged(val conversationWithPointers: ConversationWithMembersAndLastPointers) :
148149
Event
149150

@@ -161,8 +162,11 @@ class ConversationViewModel @Inject constructor(
161162
data class ReplyTo(val message: ChatItem.Message) : Event
162163
data object CancelReply : Event
163164

164-
data class OnFollowingRoomChanged(val attempting: Boolean): Event
165+
data class OnFollowingRoomChanged(val attempting: Boolean) : Event
165166
data object OnJoinRequestedFromSpectating : Event
167+
data object NeedsAccountCreated : Event
168+
data object OnAccountCreated : Event
169+
data object OnJoinRoom : Event
166170

167171
data object ReopenStream : Event
168172
data object CloseStream : Event
@@ -518,6 +522,18 @@ class ConversationViewModel @Inject constructor(
518522

519523
eventFlow
520524
.filterIsInstance<Event.OnJoinRequestedFromSpectating>()
525+
.map { userManager.authState }
526+
.onEach {
527+
if (it is AuthState.LoggedIn) {
528+
dispatchEvent(Event.OnJoinRoom)
529+
} else {
530+
dispatchEvent(Event.NeedsAccountCreated)
531+
}
532+
}
533+
.launchIn(viewModelScope)
534+
535+
eventFlow
536+
.filterIsInstance<Event.OnJoinRoom>()
521537
.map { stateFlow.value.roomInfoArgs }
522538
.filter { it.ownerId != null }
523539
.map { profileController.getPaymentDestinationForUser(it.ownerId!!) }
@@ -876,6 +892,9 @@ class ConversationViewModel @Inject constructor(
876892
state.copy(isSelfTyping = false)
877893
}
878894

895+
is Event.OnJoinRoom,
896+
is Event.OnAccountCreated,
897+
is Event.NeedsAccountCreated,
879898
is Event.OnJoinRequestedFromSpectating,
880899
is Event.Error,
881900
Event.RevealIdentity,

0 commit comments

Comments
 (0)