From b386cca4830e69919ffff5a8e506b84b0debd579 Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Tue, 6 Feb 2024 11:08:23 -0500 Subject: 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 --- .../com/android/intentresolver/v2/data/repository/UserRepository.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'java') 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.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 { -- cgit v1.2.3-59-g8ed1b