summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Mark Renouf <mrenouf@google.com> 2024-02-06 11:08:23 -0500
committer Mark Renouf <mrenouf@google.com> 2024-02-06 17:05:46 +0000
commitb386cca4830e69919ffff5a8e506b84b0debd579 (patch)
treedcbc58561ef68a7bbba792d6b25ca24a2b7fbd4b /java/src
parent8e1def731fdaab07953f8d11531dbc518860d94e (diff)
Fix duplicated User values when availability changes
When the availability has updated, the updated user was appended, but the prvious value was never removed, causing the list to continue growing. Test: atest IntentResolver-tests-unit Test: onHandleAvailabilityChange_userStateMaintained Bug: 324073704 Change-Id: I3c51ea9e1a2cf0de9c064b08e7c9f21c4c0f7af1
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt5
1 files changed, 4 insertions, 1 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 91ad6409..b57609e5 100644
--- a/java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt
+++ b/java/src/com/android/intentresolver/v2/data/repository/UserRepository.kt
@@ -158,11 +158,14 @@ constructor(
}
}
+ private fun List<UserWithState>.update(handle: UserHandle, user: UserWithState) =
+ filter { it.user.id != handle.identifier } + user
+
private fun handleAvailability(event: UserEvent, current: UserStates): UserStates {
val userEntry =
current.firstOrNull { it.user.id == event.user.identifier }
?: throw UserStateException("User was not present in the map", event)
- return current + userEntry.copy(available = !event.quietMode)
+ return current.update(event.user, userEntry.copy(available = !event.quietMode))
}
private fun handleProfileRemoved(event: UserEvent, current: UserStates): UserStates {