mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-09-27 17:58:47 +00:00
ui: don't switch profile when the prepared chat failed to move
ComposeContextProfilePickerView.changeProfile called changeActiveUser_ outside both 'updated != null' branches, so when apiChangePreparedContactUser or apiChangePreparedGroupUser returned null the chat stayed on the old profile but the active user was switched anyway - and the post-switch check passed, so no error was shown either. The invitation is then left behind on a profile the user is no longer on. Kotlin only: the iOS twin throws instead of returning null, so its outer catch already skips the switch.
This commit is contained in:
+4
@@ -79,6 +79,7 @@ fun ComposeContextProfilePickerView(
|
||||
|
||||
fun changeProfile(newUser: User) {
|
||||
withApi {
|
||||
var chatMoved = false
|
||||
if (chat.chatInfo is ChatInfo.Direct) {
|
||||
val updatedContact = chatModel.controller.apiChangePreparedContactUser(rhId, chat.chatInfo.contact.contactId, newUser.userId)
|
||||
if (updatedContact != null) {
|
||||
@@ -86,6 +87,7 @@ fun ComposeContextProfilePickerView(
|
||||
chatModel.controller.appPrefs.incognito.set(false)
|
||||
listExpanded.value = false
|
||||
chatModel.chatsContext.updateContact(rhId, updatedContact)
|
||||
chatMoved = true
|
||||
}
|
||||
} else if (chat.chatInfo is ChatInfo.Group) {
|
||||
val updatedGroup = chatModel.controller.apiChangePreparedGroupUser(rhId, chat.chatInfo.groupInfo.groupId, newUser.userId)
|
||||
@@ -94,8 +96,10 @@ fun ComposeContextProfilePickerView(
|
||||
chatModel.controller.appPrefs.incognito.set(false)
|
||||
listExpanded.value = false
|
||||
chatModel.chatsContext.updateGroup(rhId, updatedGroup)
|
||||
chatMoved = true
|
||||
}
|
||||
}
|
||||
if (!chatMoved) return@withApi
|
||||
chatModel.controller.changeActiveUser_(
|
||||
rhId = newUser.remoteHostId,
|
||||
toUserId = newUser.userId,
|
||||
|
||||
Reference in New Issue
Block a user