Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: consume new use case to get fresh team info (WPB-5879) #2589

Merged
merged 7 commits into from
Jan 17, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import com.wire.android.di.CurrentAccount
import com.wire.android.di.KaliumCoreLogic
import com.wire.kalium.logic.CoreLogic
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.logic.feature.team.GetSelfTeamUseCase
import com.wire.kalium.logic.feature.team.GetUpdatedSelfTeamUseCase
import com.wire.kalium.logic.feature.team.TeamScope
import com.wire.kalium.logic.feature.user.IsSelfATeamMemberUseCase
import dagger.Module
Expand All @@ -43,8 +43,8 @@ class TeamModule {

@ViewModelScoped
@Provides
fun provideGetSelfTeamUseCase(teamScope: TeamScope): GetSelfTeamUseCase =
teamScope.getSelfTeamUseCase
fun provideGetUpdatedSelfTeamUseCase(teamScope: TeamScope): GetUpdatedSelfTeamUseCase =
teamScope.getUpdatedSelfTeamUseCase

@ViewModelScoped
@Provides
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,11 @@ import com.wire.kalium.logic.feature.conversation.UpdateConversationReceiptModeU
import com.wire.kalium.logic.feature.publicuser.RefreshUsersWithoutMetadataUseCase
import com.wire.kalium.logic.feature.selfDeletingMessages.ObserveSelfDeletionTimerSettingsForConversationUseCase
import com.wire.kalium.logic.feature.team.DeleteTeamConversationUseCase
import com.wire.kalium.logic.feature.team.GetSelfTeamUseCase
import com.wire.kalium.logic.feature.team.GetUpdatedSelfTeamUseCase
import com.wire.kalium.logic.feature.team.Result
import com.wire.kalium.logic.feature.user.GetSelfUserUseCase
import com.wire.kalium.logic.feature.user.IsMLSEnabledUseCase
import com.wire.kalium.logic.functional.getOrNull
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
Expand All @@ -83,7 +84,7 @@ class GroupConversationDetailsViewModel @Inject constructor(
private val observeConversationDetails: ObserveConversationDetailsUseCase,
private val observeConversationMembers: ObserveParticipantsForConversationUseCase,
private val updateConversationAccessRole: UpdateConversationAccessRoleUseCase,
private val getSelfTeam: GetSelfTeamUseCase,
private val getSelfTeam: GetUpdatedSelfTeamUseCase,
private val observerSelfUser: GetSelfUserUseCase,
private val deleteTeamConversation: DeleteTeamConversationUseCase,
private val removeMemberFromConversation: RemoveMemberFromConversationUseCase,
Expand Down Expand Up @@ -132,12 +133,13 @@ class GroupConversationDetailsViewModel @Inject constructor(
.map { it.isSelfAnAdmin }
.distinctUntilChanged()

val selfTeam = getSelfTeam().getOrNull()

combine(
groupDetailsFlow,
isSelfAdminFlow,
getSelfTeam(),
observeSelfDeletionTimerSettingsForConversation(conversationId, considerSelfUserSettings = false),
) { groupDetails, isSelfAnAdmin, selfTeam, selfDeletionTimer ->
) { groupDetails, isSelfAnAdmin, selfDeletionTimer ->

val isSelfInOwnerTeam = selfTeam?.id != null && selfTeam.id == groupDetails.conversation.teamId?.value

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,14 @@ import com.wire.android.BuildConfig
import com.wire.android.appLogger
import com.wire.android.navigation.SavedStateViewModel
import com.wire.android.util.dispatchers.DispatcherProvider
import com.wire.kalium.logic.data.team.Team
import com.wire.kalium.logic.data.user.SelfUser
import com.wire.kalium.logic.feature.team.GetSelfTeamUseCase
import com.wire.kalium.logic.feature.team.GetUpdatedSelfTeamUseCase
import com.wire.kalium.logic.feature.user.GetSelfUserUseCase
import com.wire.kalium.logic.feature.user.IsPasswordRequiredUseCase
import com.wire.kalium.logic.feature.user.IsReadOnlyAccountUseCase
import com.wire.kalium.logic.feature.user.SelfServerConfigUseCase
import com.wire.kalium.logic.functional.getOrNull
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.launch
Expand All @@ -51,7 +49,7 @@ import kotlin.properties.Delegates
class MyAccountViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
private val getSelf: GetSelfUserUseCase,
private val getSelfTeam: GetSelfTeamUseCase,
private val getSelfTeam: GetUpdatedSelfTeamUseCase,
private val serverConfig: SelfServerConfigUseCase,
private val isPasswordRequired: IsPasswordRequiredUseCase,
private val isReadOnlyAccount: IsReadOnlyAccountUseCase,
Expand Down Expand Up @@ -108,19 +106,18 @@ class MyAccountViewModel @Inject constructor(

private suspend fun fetchSelfUser() {
viewModelScope.launch {
val selfTeam = getSelfTeam().getOrNull()
val self = getSelf().flowOn(dispatchers.io()).shareIn(this, SharingStarted.WhileSubscribed(1))
val selfTeam = getSelfTeam().flowOn(dispatchers.io()).shareIn(this, SharingStarted.WhileSubscribed(1))

combine(self, selfTeam) { selfUser: SelfUser, team: Team? -> selfUser to team }
.collect { (user, team) ->
myAccountState = myAccountState.copy(
fullName = user.name.orEmpty(),
userName = user.handle.orEmpty(),
email = user.email.orEmpty(),
teamName = team?.name.orEmpty(),
domain = user.id.domain
)
}
self.collect { user ->
myAccountState = myAccountState.copy(
fullName = user.name.orEmpty(),
userName = user.handle.orEmpty(),
email = user.email.orEmpty(),
teamName = selfTeam?.name.orEmpty(),
domain = user.id.domain
)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,13 @@
import com.wire.kalium.logic.feature.auth.LogoutUseCase
import com.wire.kalium.logic.feature.call.usecase.EndCallUseCase
import com.wire.kalium.logic.feature.call.usecase.ObserveEstablishedCallsUseCase
import com.wire.kalium.logic.feature.team.GetSelfTeamUseCase
import com.wire.kalium.logic.feature.team.GetUpdatedSelfTeamUseCase
import com.wire.kalium.logic.feature.user.GetSelfUserUseCase
import com.wire.kalium.logic.feature.user.IsReadOnlyAccountUseCase
import com.wire.kalium.logic.feature.user.ObserveValidAccountsUseCase
import com.wire.kalium.logic.feature.user.SelfServerConfigUseCase
import com.wire.kalium.logic.feature.user.UpdateSelfAvailabilityStatusUseCase
import com.wire.kalium.logic.functional.getOrNull
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
Expand All @@ -80,7 +81,7 @@
@CurrentAccount private val selfUserId: UserId,
private val dataStore: UserDataStore,
private val getSelf: GetSelfUserUseCase,
private val getSelfTeam: GetSelfTeamUseCase,
private val getSelfTeam: GetUpdatedSelfTeamUseCase,

Check warning on line 84 in app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt#L84

Added line #L84 was not covered by tests
private val observeValidAccounts: ObserveValidAccountsUseCase,
private val updateStatus: UpdateSelfAvailabilityStatusUseCase,
private val logout: LogoutUseCase,
Expand Down Expand Up @@ -135,23 +136,19 @@
private fun fetchSelfUser() {
viewModelScope.launch {
val self = getSelf().flowOn(dispatchers.io()).shareIn(this, SharingStarted.WhileSubscribed(1))
val selfTeam = getSelfTeam().flowOn(dispatchers.io()).shareIn(this, SharingStarted.WhileSubscribed(1))
val selfTeam = getSelfTeam().getOrNull()

Check warning on line 139 in app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt#L139

Added line #L139 was not covered by tests
val validAccounts =
observeValidAccounts().flowOn(dispatchers.io()).shareIn(this, SharingStarted.WhileSubscribed(1))
combine(
self,
selfTeam,
validAccounts
) { selfUser: SelfUser, team: Team?, list: List<Pair<SelfUser, Team?>> ->
Triple(

combine(self, validAccounts) { selfUser: SelfUser, list: List<Pair<SelfUser, Team?>> ->
Pair(

Check warning on line 144 in app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt#L144

Added line #L144 was not covered by tests
selfUser,
team,
list.filter { it.first.id != selfUser.id }
.map { (selfUser, team) -> otherAccountMapper.toOtherAccount(selfUser, team) }
)
}
.distinctUntilChanged()
.collect { (selfUser, selfTeam, otherAccounts) ->
.collect { (selfUser, otherAccounts) ->

Check warning on line 151 in app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt

View check run for this annotation

Codecov / codecov/patch

app/src/main/kotlin/com/wire/android/ui/userprofile/self/SelfUserProfileViewModel.kt#L151

Added line #L151 was not covered by tests
with(selfUser) {
// Load user avatar raw image data
completePicture?.let { updateUserAvatar(it) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,10 @@ import com.wire.kalium.logic.feature.conversation.UpdateConversationReceiptModeU
import com.wire.kalium.logic.feature.publicuser.RefreshUsersWithoutMetadataUseCase
import com.wire.kalium.logic.feature.selfDeletingMessages.ObserveSelfDeletionTimerSettingsForConversationUseCase
import com.wire.kalium.logic.feature.team.DeleteTeamConversationUseCase
import com.wire.kalium.logic.feature.team.GetSelfTeamUseCase
import com.wire.kalium.logic.feature.team.GetUpdatedSelfTeamUseCase
import com.wire.kalium.logic.feature.user.GetSelfUserUseCase
import com.wire.kalium.logic.feature.user.IsMLSEnabledUseCase
import com.wire.kalium.logic.functional.Either
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.coVerify
Expand Down Expand Up @@ -627,7 +628,7 @@ internal class GroupConversationDetailsViewModelArrangement {
lateinit var updateConversationAccessRoleUseCase: UpdateConversationAccessRoleUseCase

@MockK
lateinit var getSelfTeamUseCase: GetSelfTeamUseCase
lateinit var getSelfTeamUseCase: GetUpdatedSelfTeamUseCase

@MockK
lateinit var updateConversationMutedStatus: UpdateConversationMutedStatusUseCase
Expand Down Expand Up @@ -693,7 +694,7 @@ internal class GroupConversationDetailsViewModelArrangement {
coEvery { observeConversationDetails(any()) } returns flowOf()
coEvery { observerSelfUser() } returns flowOf(TestUser.SELF_USER)
coEvery { observeParticipantsForConversationUseCase(any(), any()) } returns flowOf()
coEvery { getSelfTeamUseCase() } returns flowOf(null)
coEvery { getSelfTeamUseCase() } returns Either.Right(null)
coEvery { isMLSEnabledUseCase() } returns true
coEvery { updateConversationMutedStatus(any(), any(), any()) } returns ConversationUpdateStatusResult.Success
coEvery { observeSelfDeletionTimerSettingsForConversation(any(), any()) } returns flowOf(SelfDeletionTimer.Disabled)
Expand All @@ -716,7 +717,7 @@ internal class GroupConversationDetailsViewModelArrangement {
}

suspend fun withSelfTeamUseCaseReturns(result: Team?) = apply {
coEvery { getSelfTeamUseCase() } returns flowOf(result)
coEvery { getSelfTeamUseCase() } returns Either.Right(result)
}

suspend fun withUpdateConversationReceiptModeReturningSuccess() = apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@ import com.wire.android.framework.TestUser
import com.wire.android.util.newServerConfig
import com.wire.kalium.logic.StorageFailure
import com.wire.kalium.logic.data.id.TeamId
import com.wire.kalium.logic.feature.team.GetSelfTeamUseCase
import com.wire.kalium.logic.feature.team.GetUpdatedSelfTeamUseCase
import com.wire.kalium.logic.feature.user.GetSelfUserUseCase
import com.wire.kalium.logic.feature.user.IsPasswordRequiredUseCase
import com.wire.kalium.logic.feature.user.IsPasswordRequiredUseCase.Result.Success
import com.wire.kalium.logic.feature.user.IsReadOnlyAccountUseCase
import com.wire.kalium.logic.feature.user.SelfServerConfigUseCase
import com.wire.kalium.logic.functional.Either
import io.mockk.Called
import io.mockk.MockKAnnotations
import io.mockk.coEvery
Expand Down Expand Up @@ -172,7 +173,7 @@ class MyAccountViewModelTest {
lateinit var getSelfUserUseCase: GetSelfUserUseCase

@MockK
lateinit var getSelfTeamUseCase: GetSelfTeamUseCase
lateinit var getSelfTeamUseCase: GetUpdatedSelfTeamUseCase

@MockK
lateinit var selfServerConfigUseCase: SelfServerConfigUseCase
Expand Down Expand Up @@ -201,7 +202,7 @@ class MyAccountViewModelTest {
init {
MockKAnnotations.init(this, relaxUnitFun = true)
coEvery { getSelfUserUseCase() } returns flowOf(TestUser.SELF_USER.copy(teamId = TeamId(TestTeam.TEAM.id)))
coEvery { getSelfTeamUseCase() } returns flowOf(TestTeam.TEAM)
coEvery { getSelfTeamUseCase() } returns Either.Right(TestTeam.TEAM)
coEvery { selfServerConfigUseCase() } returns SelfServerConfigUseCase.Result.Success(newServerConfig(1))
}

Expand Down
2 changes: 1 addition & 1 deletion kalium
Submodule kalium updated 31 files
+11 −2 cryptography/src/appleMain/kotlin/com/wire/kalium/cryptography/MLSClientImpl.kt
+16 −4 cryptography/src/commonJvmAndroid/kotlin/com.wire.kalium.cryptography/MLSClientImpl.kt
+21 −2 cryptography/src/commonMain/kotlin/com/wire/kalium/cryptography/MLSClient.kt
+9 −1 cryptography/src/jsMain/kotlin/com/wire/kalium/cryptography/MLSClientImpl.kt
+1 −1 gradle/libs.versions.toml
+2 −2 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/client/E2EIClientProvider.kt
+1 −1 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/e2ei/E2EIRepository.kt
+6 −47 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/event/Event.kt
+5 −35 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/event/EventMapper.kt
+1 −7 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/UserSessionScope.kt
+13 −6 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/client/ObserveNewClientsUseCase.kt
+0 −8 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/conversation/ConversationScope.kt
+0 −45 ...src/commonMain/kotlin/com/wire/kalium/logic/feature/conversation/UpdateConversationArchivedStatusUseCase.kt
+0 −50 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/team/GetSelfTeamUseCaseImpl.kt
+41 −0 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/team/GetUpdatedSelfTeamUseCase.kt
+3 −5 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/team/TeamScope.kt
+0 −3 logic/src/commonMain/kotlin/com/wire/kalium/logic/sync/incremental/EventProcessor.kt
+0 −96 logic/src/commonMain/kotlin/com/wire/kalium/logic/sync/receiver/TeamEventReceiver.kt
+5 −4 logic/src/commonTest/kotlin/com/wire/kalium/logic/data/e2ei/E2EIRepositoryTest.kt
+62 −6 logic/src/commonTest/kotlin/com/wire/kalium/logic/feature/client/ObserveNewClientsUseCaseTest.kt
+0 −91 ...commonTest/kotlin/com/wire/kalium/logic/feature/conversation/UpdateConversationArchivedStatusUseCaseTest.kt
+1 −19 logic/src/commonTest/kotlin/com/wire/kalium/logic/framework/TestEvent.kt
+0 −20 logic/src/commonTest/kotlin/com/wire/kalium/logic/sync/incremental/EventProcessorTest.kt
+0 −87 logic/src/commonTest/kotlin/com/wire/kalium/logic/sync/receiver/TeamEventReceiverTest.kt
+0 −22 network/src/commonMain/kotlin/com/wire/kalium/network/api/base/authenticated/notification/EventContentDTO.kt
+2 −2 network/src/commonMain/kotlin/com/wire/kalium/network/api/base/unbound/acme/ACMEApi.kt
+4 −0 network/src/commonMain/kotlin/com/wire/kalium/network/api/base/unbound/acme/ACMEResponse.kt
+2 −1 persistence/src/commonMain/db_user/com/wire/kalium/persistence/Notification.sq
+21 −0 persistence/src/commonTest/kotlin/com/wire/kalium/persistence/dao/message/MessageNotificationsTest.kt
+1 −0 testservice/config.yml
+3 −1 testservice/src/main/kotlin/com/wire/kalium/testservice/managed/InstanceService.kt