diff options
| -rw-r--r-- | java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt | 8 | ||||
| -rw-r--r-- | tests/unit/src/com/android/intentresolver/v2/data/repository/UserRepositoryImplTest.kt | 16 |
2 files changed, 13 insertions, 11 deletions
diff --git a/java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt b/java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt index dc809b46..cbf89fe8 100644 --- a/java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt +++ b/java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt @@ -21,6 +21,7 @@ import com.android.intentresolver.inject.Main import com.android.intentresolver.inject.ProfileParent import com.android.intentresolver.v2.data.broadcastFlow import com.android.intentresolver.v2.data.model.User +import com.android.intentresolver.v2.data.model.User.Role import com.android.intentresolver.v2.data.repository.UserRepositoryImpl.UserEvent import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject @@ -42,7 +43,7 @@ interface UserRepository { * A [Flow] user profile groups. Each map contains the context user along with all members of * the profile group. This includes the (Full) parent user, if the context user is a profile. */ - val users: Flow<Map<UserHandle, User>> + val users: Flow<Map<Role, User>> /** * A [Flow] of availability. Only profile users may become unavailable. @@ -140,8 +141,9 @@ constructor( .stateIn(scope, SharingStarted.Eagerly, emptyMap()) .filterNot { it.isEmpty() } - override val users: Flow<Map<UserHandle, User>> = - usersWithState.map { map -> map.mapValues { it.value.user } }.distinctUntilChanged() + override val users: Flow<Map<Role, User>> = usersWithState.map { userStateMap -> + userStateMap.map { it.value.user }.associateBy { it.role } + }.distinctUntilChanged() private val availability: Flow<Map<UserHandle, Boolean>> = usersWithState.map { map -> map.mapValues { it.value.available } }.distinctUntilChanged() diff --git a/tests/unit/src/com/android/intentresolver/v2/data/repository/UserRepositoryImplTest.kt b/tests/unit/src/com/android/intentresolver/v2/data/repository/UserRepositoryImplTest.kt index 4f514db5..5cfcb872 100644 --- a/tests/unit/src/com/android/intentresolver/v2/data/repository/UserRepositoryImplTest.kt +++ b/tests/unit/src/com/android/intentresolver/v2/data/repository/UserRepositoryImplTest.kt @@ -35,7 +35,7 @@ internal class UserRepositoryImplTest { assertWithMessage("collectLastValue(repo.users)").that(users).isNotNull() assertThat(users) .containsExactly( - userState.primaryUserHandle, + Role.PERSONAL, User(userState.primaryUserHandle.identifier, Role.PERSONAL) ) } @@ -49,7 +49,7 @@ internal class UserRepositoryImplTest { assertThat(users!!.values.filter { it.role.type == User.Type.PROFILE }).isEmpty() val profile = userState.createProfile(ProfileType.WORK) - assertThat(users).containsEntry(profile, User(profile.identifier, Role.WORK)) + assertThat(users).containsEntry(Role.WORK, User(profile.identifier, Role.WORK)) } @Test @@ -59,10 +59,10 @@ internal class UserRepositoryImplTest { assertWithMessage("collectLastValue(repo.users)").that(users).isNotNull() val work = userState.createProfile(ProfileType.WORK) - assertThat(users).containsEntry(work, User(work.identifier, Role.WORK)) + assertThat(users).containsEntry(Role.WORK, User(work.identifier, Role.WORK)) userState.removeProfile(work) - assertThat(users).doesNotContainEntry(work, User(work.identifier, Role.WORK)) + assertThat(users).doesNotContainEntry(Role.WORK, User(work.identifier, Role.WORK)) } @Test @@ -129,7 +129,7 @@ internal class UserRepositoryImplTest { val users by collectLastValue(repo.users) assertWithMessage("collectLastValue(repo.users)").that(users).isNotNull() - assertThat(users).containsExactly(SYSTEM, User(USER_SYSTEM, Role.PERSONAL)) + assertThat(users).containsExactly(Role.PERSONAL, User(USER_SYSTEM, Role.PERSONAL)) } @Test @@ -154,7 +154,7 @@ internal class UserRepositoryImplTest { val users by collectLastValue(repo.users) assertWithMessage("collectLastValue(repo.users)").that(users).isNotNull() - assertThat(users).containsExactly(SYSTEM, User(USER_SYSTEM, Role.PERSONAL)) + assertThat(users).containsExactly(Role.PERSONAL, User(USER_SYSTEM, Role.PERSONAL)) } @Test @@ -173,7 +173,7 @@ internal class UserRepositoryImplTest { val users by collectLastValue(repo.users) assertWithMessage("collectLastValue(repo.users)").that(users).isNotNull() - assertThat(users).containsExactly(SYSTEM, User(USER_SYSTEM, Role.PERSONAL)) + assertThat(users).containsExactly(Role.PERSONAL, User(USER_SYSTEM, Role.PERSONAL)) } @Test @@ -195,7 +195,7 @@ internal class UserRepositoryImplTest { val users by collectLastValue(repo.users) assertWithMessage("collectLastValue(repo.users)").that(users).isNotNull() - assertThat(users).containsExactly(SYSTEM, User(USER_SYSTEM, Role.PERSONAL)) + assertThat(users).containsExactly(Role.PERSONAL, User(USER_SYSTEM, Role.PERSONAL)) } } |