aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniele Gobbetti <daniele+github@gobbetti.name>2016-09-19 21:35:54 +0200
committerDaniele Gobbetti <daniele+github@gobbetti.name>2016-09-27 17:39:23 +0200
commit41db773b087afc3c915336ef4ba3295f9cee7628 (patch)
tree844974473894bdebf9f246936aee581dff767019
parent5cd8917122abebe317388fc9cb145b28d58f6d30 (diff)
Allow to dismiss the notification from a wear reply.
- use different IDs in the same method for the PendingIntent - fix reply for GPG encrypted replies (untested)
Diffstat (limited to '')
-rw-r--r--src/main/java/eu/siacs/conversations/services/NotificationService.java14
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java16
2 files changed, 20 insertions, 10 deletions
diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java
index 7cfe2433..6b60c5f4 100644
--- a/src/main/java/eu/siacs/conversations/services/NotificationService.java
+++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java
@@ -297,11 +297,11 @@ public class NotificationService {
modifyForTextOnly(mBuilder, messages);
}
RemoteInput remoteInput = new RemoteInput.Builder("text_reply").setLabel(UIHelper.getMessageHint(mXmppConnectionService, conversation)).build();
- NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.drawable.ic_send_text_offline, "Reply", createReplyIntent(conversation)).addRemoteInput(remoteInput).build();
+ NotificationCompat.Action replyAction = new NotificationCompat.Action.Builder(R.drawable.ic_send_text_offline, "Reply", createReplyIntent(conversation, false)).addRemoteInput(remoteInput).build();
+ NotificationCompat.Action wearReplyAction = new NotificationCompat.Action.Builder(R.drawable.ic_send_text_offline, "Reply", createReplyIntent(conversation, true)).addRemoteInput(remoteInput).build();
+ mBuilder.extend(new NotificationCompat.WearableExtender().addAction(wearReplyAction));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- mBuilder.addAction(action);
- } else {
- mBuilder.extend(new NotificationCompat.WearableExtender().addAction(action));
+ mBuilder.addAction(replyAction);
}
if ((message = getFirstDownloadableMessage(messages)) != null) {
mBuilder.addAction(
@@ -474,11 +474,13 @@ public class NotificationService {
return PendingIntent.getService(mXmppConnectionService, 0, intent, 0);
}
- private PendingIntent createReplyIntent(Conversation conversation) {
+ private PendingIntent createReplyIntent(Conversation conversation, boolean dismissAfterReply) {
final Intent intent = new Intent(mXmppConnectionService, XmppConnectionService.class);
intent.setAction(XmppConnectionService.ACTION_REPLY_TO_CONVERSATION);
intent.putExtra("uuid",conversation.getUuid());
- return PendingIntent.getService(mXmppConnectionService, conversation.getUuid().hashCode() % 402361, intent, 0);
+ intent.putExtra("dismiss_notification",dismissAfterReply);
+ int id = conversation.getUuid().hashCode() % (dismissAfterReply ? 402359 : 426583);
+ return PendingIntent.getService(mXmppConnectionService, id, intent, 0);
}
private PendingIntent createDisableForeground() {
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index 52a846f2..39e28f93 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -575,7 +575,7 @@ public class XmppConnectionService extends Service {
if (remoteInput != null && c != null) {
final CharSequence body = remoteInput.getCharSequence("text_reply");
if (body != null && body.length() > 0) {
- directReply(c, body.toString());
+ directReply(c, body.toString(),intent.getBooleanExtra("dismiss_notification",false));
}
}
break;
@@ -708,7 +708,7 @@ public class XmppConnectionService extends Service {
}
}
- private void directReply(Conversation conversation, String body) {
+ private void directReply(Conversation conversation, String body, final boolean dismissAfterReply) {
Message message = new Message(conversation,body,conversation.getNextEncryption());
message.markUnread();
if (message.getEncryption() == Message.ENCRYPTION_PGP) {
@@ -717,7 +717,11 @@ public class XmppConnectionService extends Service {
public void success(Message message) {
message.setEncryption(Message.ENCRYPTION_DECRYPTED);
sendMessage(message);
- mNotificationService.pushFromDirectReply(message);
+ if (dismissAfterReply) {
+ markRead(message.getConversation(),true);
+ } else {
+ mNotificationService.pushFromDirectReply(message);
+ }
}
@Override
@@ -732,7 +736,11 @@ public class XmppConnectionService extends Service {
});
} else {
sendMessage(message);
- mNotificationService.pushFromDirectReply(message);
+ if (dismissAfterReply) {
+ markRead(conversation,true);
+ } else {
+ mNotificationService.pushFromDirectReply(message);
+ }
}
}