summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt8
-rw-r--r--tests/unit/src/com/android/intentresolver/v2/data/repository/UserRepositoryImplTest.kt16
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))
}
}