From 312bf45ec3f8124940eb5624a9059df8bb7602b4 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Thu, 20 Apr 2023 23:21:32 -0500 Subject: [PATCH] Some work towards bubbles --- .../conversations/services/NotificationService.java | 9 ++++----- .../conversations/services/ShortcutService.java | 12 ++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java index 4487b3f42fd09c98cb62f71ca9a518358b63e3d4..7c16487f1a436ee49251f5936fc2b9e3fae29488 100644 --- a/src/main/java/eu/siacs/conversations/services/NotificationService.java +++ b/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( diff --git a/src/main/java/eu/siacs/conversations/services/ShortcutService.java b/src/main/java/eu/siacs/conversations/services/ShortcutService.java index 307bb5a6a9ee73adaa5cff863c31c8615086f4ea..f807fbaa8bbc0934001adc007e702b7376f9fc25 100644 --- a/src/main/java/eu/siacs/conversations/services/ShortcutService.java +++ b/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()));