From 5fac54612a0a4bafe2adbe64fa56fa7a179408ad Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Tue, 26 Dec 2023 16:20:41 +0200 Subject: [PATCH] Create view model for invites --- .../feature/room/invites/InvitesViewModel.kt | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesViewModel.kt diff --git a/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesViewModel.kt b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesViewModel.kt new file mode 100644 index 000000000..a8443ab68 --- /dev/null +++ b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesViewModel.kt @@ -0,0 +1,59 @@ +package org.futo.circles.core.feature.room.invites + +import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.ViewModel +import androidx.lifecycle.asLiveData +import dagger.hilt.android.lifecycle.HiltViewModel +import org.futo.circles.core.base.SingleEventLiveData +import org.futo.circles.core.extensions.Response +import org.futo.circles.core.extensions.getOrThrow +import org.futo.circles.core.extensions.launchBg +import org.futo.circles.core.feature.room.invite.InviteRequestsDataSource +import org.futo.circles.core.model.CircleRoomTypeArg +import org.futo.circles.core.model.InviteTypeArg +import javax.inject.Inject + +@HiltViewModel +class InvitesViewModel @Inject constructor( + savedStateHandle: SavedStateHandle, + private val dataSource: InvitesDataSource, + private val inviteRequestsDataSource: InviteRequestsDataSource +) : ViewModel() { + + private val inviteType: InviteTypeArg = savedStateHandle.getOrThrow("type") + + val inviteResultLiveData = SingleEventLiveData<Response<Unit?>>() + val invitesLiveData = dataSource.getInvitesFlow(inviteType).asLiveData() + + fun getInviteType() = inviteType + + fun rejectRoomInvite(roomId: String) { + launchBg { + val result = inviteRequestsDataSource.rejectInvite(roomId) + inviteResultLiveData.postValue(result) + } + } + + fun acceptRoomInvite(roomId: String, roomType: CircleRoomTypeArg) { + launchBg { + val result = inviteRequestsDataSource.acceptInvite(roomId, roomType) + inviteResultLiveData.postValue(result) + } + } + + + fun onFollowRequestAnswered(userId: String, accepted: Boolean) { + launchBg { + val result = if (accepted) dataSource.acceptFollowRequest(userId) + else dataSource.declineFollowRequest(userId) + inviteResultLiveData.postValue(result) + } + } + + + fun unblurProfileIcon(roomId: String) { + dataSource.unblurProfileImageFor(roomId) + } + + +} \ No newline at end of file -- GitLab