Fix accept request
continuous-integration/drone/push Build is passing Details

pull/5/head
avalin 11 months ago
parent a2ab066d82
commit 9daa8be251

@ -117,14 +117,22 @@ class FriendsScreenViewModel @Inject constructor(
private suspend fun changeFriendStatus(username: String, newStatus: FriendStatus) { private suspend fun changeFriendStatus(username: String, newStatus: FriendStatus) {
(_addTabState.value as? AddTabState.Loaded)?.let { friends -> (_addTabState.value as? AddTabState.Loaded)?.let { friends ->
val usrIdx = friends.users.indexOfFirst { it.username == username }
val newList = friends.users.toMutableList() val newList = if (usrIdx == -1 && newStatus == FriendStatus.FRIEND) {
newList.replaceAll { (_requestsTabState.value as? RequestsTabState.Loaded)?.let { requests ->
requests.users.find { it.username == username }
}?.let {
friends.users + it.copy(friendStatus = FriendStatus.FRIEND)
} ?: friends.users
} else {
friends.users.toMutableList().apply {
replaceAll {
if (it.username == username) { if (it.username == username) {
it.copy(friendStatus = newStatus) it.copy(friendStatus = newStatus)
} else it } else it
} }
}
}
_addTabState.emit( _addTabState.emit(
friends.copy( friends.copy(
users = newList users = newList
@ -138,9 +146,7 @@ class FriendsScreenViewModel @Inject constructor(
(_requestsTabState.value as? RequestsTabState.Loaded)?.let { requests -> (_requestsTabState.value as? RequestsTabState.Loaded)?.let { requests ->
requests.users.find { it.username == username }?.let { requests.users.find { it.username == username }?.let {
_requestsTabState.emit( _requestsTabState.emit(
requests.copy( requests.copy(users = requests.users - it)
users = requests.users - it
)
) )
} }
} }

Loading…
Cancel
Save