Some work towards bubbles

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/services/NotificationService.java |  9 
src/main/java/eu/siacs/conversations/services/ShortcutService.java     | 12 
2 files changed, 16 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/NotificationService.java 🔗

@@ -1369,6 +1369,7 @@ public class NotificationService {
             mBuilder.setShortcutInfo(info);
             if (Build.VERSION.SDK_INT >= 30) {
                 mXmppConnectionService.getSystemService(ShortcutManager.class).pushDynamicShortcut(info.toShortcutInfo());
+                // mBuilder.setBubbleMetadata(new NotificationCompat.BubbleMetadata.Builder(info.getId()).build());
             }
         }
         return mBuilder;
@@ -1418,11 +1419,9 @@ public class NotificationService {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
             final Jid jid = contact == null ? message.getCounterpart() : contact.getJid();
             builder.setKey(jid.toString());
-            for (Conversation c : mXmppConnectionService.getConversations()) {
-                if (c.getAccount().equals(message.getConversation().getAccount()) && c.getJid().asBareJid().equals(jid)) {
-                    builder.setImportant(c.getBooleanAttribute(Conversation.ATTRIBUTE_PINNED_ON_TOP, false));
-                    break;
-                }
+            final Conversation c = mXmppConnectionService.find(message.getConversation().getAccount(), jid);
+            if (c != null) {
+                builder.setImportant(c.getBooleanAttribute(Conversation.ATTRIBUTE_PINNED_ON_TOP, false));
             }
             builder.setIcon(
                     IconCompat.createWithBitmap(

src/main/java/eu/siacs/conversations/services/ShortcutService.java 🔗

@@ -21,7 +21,9 @@ import java.util.List;
 import eu.siacs.conversations.Config;
 import eu.siacs.conversations.entities.Account;
 import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Conversation;
 import eu.siacs.conversations.ui.StartConversationActivity;
+import eu.siacs.conversations.ui.ConversationsActivity;
 import eu.siacs.conversations.utils.ReplacingSerialSingleThreadExecutor;
 import eu.siacs.conversations.xmpp.Jid;
 
@@ -128,6 +130,16 @@ public class ShortcutService {
     }
 
     private Intent getShortcutIntent(Contact contact) {
+        final Conversation conversation = xmppConnectionService.find(contact.getAccount(), contact.getJid());
+
+        if (conversation != null) {
+            Intent intent = new Intent(xmppConnectionService, ConversationsActivity.class);
+            intent.setAction(ConversationsActivity.ACTION_VIEW_CONVERSATION);
+            intent.putExtra(ConversationsActivity.EXTRA_CONVERSATION, conversation.getUuid());
+            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP);
+            return intent;
+        }
+
         Intent intent = new Intent(xmppConnectionService, StartConversationActivity.class);
         intent.setAction(Intent.ACTION_VIEW);
         intent.setData(Uri.parse("xmpp:"+contact.getJid().asBareJid().toEscapedString()));