Skip to content

Conversation

@arlexTech
Copy link

@arlexTech arlexTech commented Nov 14, 2025

Issue: #3384

🖼️ Screenshots

General settings Conversation Info
VID_20251114124529.mp4
Record_2025-11-14-12-44-40.mp4

🚧 TODO

  • Bubble Works
  • Activating bubbles in settings
  • Activating or not bubbles for each conversation
  • Use Conversation Avatar for bubble icon
  • Multiple bubbles for multiple conversations
  • Embedded view
  • Create a bubble notification upon received message

🏁 Checklist

  • ⛑️ Tests (unit and/or integration) are included or not needed
  • 🔖 Capability is checked or not needed
  • 🔙 Backport requests are created or not needed: /backport to stable-xx.x
  • 📅 Milestone is set
  • 🌸 PR title is meaningful (if it should be in the changelog: is it meaningful to users?)

@AndyScherzinger AndyScherzinger added enhancement New feature or request 3. to review Waiting for reviews labels Nov 14, 2025
@mahibi
Copy link
Collaborator

mahibi commented Nov 17, 2025

thank you @arlexTech
we will review soon!

Copy link
Collaborator

@mahibi mahibi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @arlexTech ! 👍
The bubbles itself work for me, however there are some things that must be changed:

Don't show conversation list and modify back button handling

I strongly suggest to not open the conversation list when pressing back button in bubbled mode.
So the bubbled view should not show the conversation list at all but only single conversations. Otherwise i'm concerned of bugs when having multiple instance of the ConversationListActivity.

For the back button in bubbled mode, either:

  • just close the bubble (This is how Telegram does it)
  • or replace the back button with a the talk icon which will open the app in normal mode and the conversation list is shown (This is how signal does it and it'S also my preferred solution)

Avoid multiple instance of ChatActivity for same conversation

Also, we should make sure that there are not multiple instances of ChatActivity for the same conversation.

Right now, the PR has a bug that multiple instances are shown when "open in app" is used.
https://developer.android.com/develop/ui/views/notifications/bubbles#launching-activities

But also we should not allow to have 2 instances for the same conversation when one is opened in normal mode and one in bubble mode.
This is very important to avoid bugs in the chat repository (OfflineFirstChatRepository)!

Signal solved it this way: Whenever there is a bubble for a chat and the chat is also opened in the normal mode, the bubble closes.
We should solve it the same way and try to use only one instance of ChatActivity for a conversation.

// Use a consistent ID based on the room token to avoid duplicate bubbles
val systemNotificationId: Int =
activeStatusBarNotification?.id ?: calculateCRC32(System.currentTimeMillis().toString()).toInt()
activeStatusBarNotification?.id ?: NotificationUtils.calculateCRC32(pushMessage.id!!).toInt()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i am not 100% if using the room token could cause unwanted side effects. will have to think about and test when i have better internet connection ;)

@mahibi
Copy link
Collaborator

mahibi commented Nov 20, 2025

@rapterjet2004 @sowjanyakch please also do a deep review. E.g. specially check if former notification handling is affected by the changes.

@arlexTech arlexTech requested a review from mahibi November 22, 2025 19:27
@arlexTech
Copy link
Author

I'll work on it this week (don't mind the review request i miss clicked)

@mahibi
Copy link
Collaborator

mahibi commented Nov 24, 2025

I'll work on it this week (don't mind the review request i miss clicked)

Sure, thanks. Let us know if there are any questions or help is needed!

@github-actions
Copy link
Contributor

Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.

We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.

Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6

Thank you for contributing to Nextcloud and we hope to hear from you soon!

(If you believe you should not receive this message, you can add yourself to the blocklist.)

@arlexTech
Copy link
Author

arlexTech commented Dec 6, 2025

For the back button in bubbled mode I replaced it by the talk icon in bubble mode which open the app in normal mode on the conversation list

as onBackPressed is deprecated we want to avoid it and use onBackPressedDispatcher

fixed

multiple instances of the app are opened when "open is app" is used. https://developer.android.com/develop/ui/views/notifications/bubbles#launching-activities

should be fixed, I couldn't open multiple anymore

please try to extract the above code into a method

done

why is this removed?

because it was preventing bubbles to show up but it should be fixed now

I wanted the handleOnBackPressed function to minimize the bubble but I tried for hours and never managed to make it work correctly, if anyone has an idea of how to do it, I'm open to try anything at this point

Tell me if i can do anything more to merge it

@arlexTech
Copy link
Author

But also we should not allow to have 2 instances for the same conversation when one is opened in normal mode and one in bubble mode.
This is very important to avoid bugs in the chat repository (OfflineFirstChatRepository)!
Signal solved it this way: Whenever there is a bubble for a chat and the chat is also opened in the normal mode, the bubble closes.
We should solve it the same way and try to use only one instance of ChatActivity for a conversation.

I didn't see this part, I wonder how Messenger deal with that because it can have the bubble and the chat open at the same time

Copy link
Collaborator

@mahibi mahibi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks to implement the suggestions @arlexTech 👍 We appreciate your efforts!

I commented on some things that must be changed.

There were changes on master in NotificationWorker that conflict with your branch. Could you resolve it?

Please also see the codacy warnings at
https://app.codacy.com/gh/nextcloud/talk-android/pull-requests/5554/issues

and sign your commits like described in
https://github.com/nextcloud/talk-android/pull/5554/checks?check_run_id=57331453438

If you need any help or nextcloud employees should take over, just let us know.

// Use a consistent ID based on the room token to avoid duplicate bubbles
val systemNotificationId: Int =
activeStatusBarNotification?.id ?: calculateCRC32(System.currentTimeMillis().toString()).toInt()
activeStatusBarNotification?.id ?: NotificationUtils.calculateCRC32("${signatureVerification.user!!.id}:${pushMessage.id!!}").toInt()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The content of the notification history is not cleared when the conversation was opened:

  1. Receive a notification "a"
  2. Open it via click on notification or open the app and go to conversation
  3. Receive another notification "b"

Bug:
"a" and "b" is shown

Expected:
only "b" is shown

This will be caused by the systemNotificationId which does not change anymore because it's the roomToken. This should be unique (like a timestamp that it was before).
For shortcutId it should make sense to have the roomToken.

}

R.id.create_conversation_bubble -> {
createConversationBubble()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When bubble exists and and in normal chat mode "Create bubble" for the same conversation is chosen, then there are 2 bubbles for the same conversation.

Copy link
Contributor

@sowjanyakch sowjanyakch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for PR @arlexTech

The inbuilt emoji picker does not appear when tapping the emoji icon in the bubble notification chat view.

@arlexTech
Copy link
Author

Thank you for your feedback, i try to fix all of this and if I'm hard stuck I'll ask for help

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews enhancement New feature or request feedback-requested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants