mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-22 07:48:26 +00:00
Display group info in message notifications
Fixes #1033 Fixes #2558 Closes #3020 // FREEBIE
This commit is contained in:
parent
307578eb18
commit
3b80e35547
@ -200,10 +200,12 @@ public class MessageNotifier {
|
|||||||
|
|
||||||
SingleRecipientNotificationBuilder builder = new SingleRecipientNotificationBuilder(context, masterSecret, TextSecurePreferences.getNotificationPrivacy(context));
|
SingleRecipientNotificationBuilder builder = new SingleRecipientNotificationBuilder(context, masterSecret, TextSecurePreferences.getNotificationPrivacy(context));
|
||||||
List<NotificationItem> notifications = notificationState.getNotifications();
|
List<NotificationItem> notifications = notificationState.getNotifications();
|
||||||
|
Recipients recipients = notifications.get(0).getRecipients();
|
||||||
|
|
||||||
builder.setSender(notifications.get(0).getIndividualRecipient());
|
builder.setThread(notifications.get(0).getRecipients());
|
||||||
builder.setMessageCount(notificationState.getMessageCount());
|
builder.setMessageCount(notificationState.getMessageCount());
|
||||||
builder.setPrimaryMessageBody(notifications.get(0).getText(), notifications.get(0).getSlideDeck());
|
builder.setPrimaryMessageBody(recipients, notifications.get(0).getIndividualRecipient(),
|
||||||
|
notifications.get(0).getText(), notifications.get(0).getSlideDeck());
|
||||||
builder.setContentIntent(notifications.get(0).getPendingIntent(context));
|
builder.setContentIntent(notifications.get(0).getPendingIntent(context));
|
||||||
|
|
||||||
long timestamp = notifications.get(0).getTimestamp();
|
long timestamp = notifications.get(0).getTimestamp();
|
||||||
@ -217,8 +219,8 @@ public class MessageNotifier {
|
|||||||
ListIterator<NotificationItem> iterator = notifications.listIterator(notifications.size());
|
ListIterator<NotificationItem> iterator = notifications.listIterator(notifications.size());
|
||||||
|
|
||||||
while(iterator.hasPrevious()) {
|
while(iterator.hasPrevious()) {
|
||||||
builder.addMessageBody(iterator.previous().getText());
|
NotificationItem item = iterator.previous();
|
||||||
|
builder.addMessageBody(item.getRecipients(), item.getIndividualRecipient(), item.getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (signal) {
|
if (signal) {
|
||||||
|
@ -4,28 +4,28 @@ import android.app.PendingIntent;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.ConversationActivity;
|
import org.thoughtcrime.securesms.ConversationActivity;
|
||||||
import org.thoughtcrime.securesms.mms.SlideDeck;
|
import org.thoughtcrime.securesms.mms.SlideDeck;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipients;
|
import org.thoughtcrime.securesms.recipients.Recipients;
|
||||||
import org.thoughtcrime.securesms.util.ListenableFutureTask;
|
|
||||||
import org.thoughtcrime.securesms.util.concurrent.ListenableFuture;
|
|
||||||
|
|
||||||
public class NotificationItem {
|
public class NotificationItem {
|
||||||
|
|
||||||
private final Recipients recipients;
|
private final @NonNull Recipients recipients;
|
||||||
private final Recipient individualRecipient;
|
private final @NonNull Recipient individualRecipient;
|
||||||
private final Recipients threadRecipients;
|
private final @Nullable Recipients threadRecipients;
|
||||||
private final long threadId;
|
private final long threadId;
|
||||||
private final CharSequence text;
|
private final @Nullable CharSequence text;
|
||||||
private final long timestamp;
|
private final long timestamp;
|
||||||
private final @Nullable SlideDeck slideDeck;
|
private final @Nullable SlideDeck slideDeck;
|
||||||
|
|
||||||
public NotificationItem(Recipient individualRecipient, Recipients recipients,
|
public NotificationItem(@NonNull Recipient individualRecipient,
|
||||||
Recipients threadRecipients, long threadId,
|
@NonNull Recipients recipients,
|
||||||
CharSequence text, long timestamp,
|
@Nullable Recipients threadRecipients,
|
||||||
|
long threadId, @Nullable CharSequence text, long timestamp,
|
||||||
@Nullable SlideDeck slideDeck)
|
@Nullable SlideDeck slideDeck)
|
||||||
{
|
{
|
||||||
this.individualRecipient = individualRecipient;
|
this.individualRecipient = individualRecipient;
|
||||||
@ -37,11 +37,11 @@ public class NotificationItem {
|
|||||||
this.slideDeck = slideDeck;
|
this.slideDeck = slideDeck;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Recipients getRecipients() {
|
public @NonNull Recipients getRecipients() {
|
||||||
return threadRecipients == null ? recipients : threadRecipients;
|
return threadRecipients == null ? recipients : threadRecipients;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Recipient getIndividualRecipient() {
|
public @NonNull Recipient getIndividualRecipient() {
|
||||||
return individualRecipient;
|
return individualRecipient;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,9 @@ import org.thoughtcrime.securesms.mms.Slide;
|
|||||||
import org.thoughtcrime.securesms.mms.SlideDeck;
|
import org.thoughtcrime.securesms.mms.SlideDeck;
|
||||||
import org.thoughtcrime.securesms.preferences.NotificationPrivacyPreference;
|
import org.thoughtcrime.securesms.preferences.NotificationPrivacyPreference;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
|
import org.thoughtcrime.securesms.recipients.Recipients;
|
||||||
import org.thoughtcrime.securesms.util.BitmapUtil;
|
import org.thoughtcrime.securesms.util.BitmapUtil;
|
||||||
|
import org.thoughtcrime.securesms.util.Util;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -53,16 +55,16 @@ public class SingleRecipientNotificationBuilder extends AbstractNotificationBuil
|
|||||||
setDeleteIntent(PendingIntent.getBroadcast(context, 0, new Intent(MessageNotifier.DeleteReceiver.DELETE_REMINDER_ACTION), 0));
|
setDeleteIntent(PendingIntent.getBroadcast(context, 0, new Intent(MessageNotifier.DeleteReceiver.DELETE_REMINDER_ACTION), 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSender(@NonNull Recipient recipient) {
|
public void setThread(@NonNull Recipients recipients) {
|
||||||
if (privacy.isDisplayContact()) {
|
if (privacy.isDisplayContact()) {
|
||||||
setContentTitle(recipient.toShortString());
|
setContentTitle(recipients.toShortString());
|
||||||
|
|
||||||
if (recipient.getContactUri() != null) {
|
if (recipients.isSingleRecipient() && recipients.getPrimaryRecipient().getContactUri() != null) {
|
||||||
addPerson(recipient.getContactUri().toString());
|
addPerson(recipients.getPrimaryRecipient().getContactUri().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
setLargeIcon(recipient.getContactPhoto()
|
setLargeIcon(recipients.getContactPhoto()
|
||||||
.asDrawable(context, recipient.getColor()
|
.asDrawable(context, recipients.getColor()
|
||||||
.toConversationColor(context)));
|
.toConversationColor(context)));
|
||||||
} else {
|
} else {
|
||||||
setContentTitle(context.getString(R.string.SingleRecipientNotificationBuilder_signal));
|
setContentTitle(context.getString(R.string.SingleRecipientNotificationBuilder_signal));
|
||||||
@ -79,12 +81,22 @@ public class SingleRecipientNotificationBuilder extends AbstractNotificationBuil
|
|||||||
setNumber(messageCount);
|
setNumber(messageCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPrimaryMessageBody(CharSequence message, @Nullable SlideDeck slideDeck) {
|
public void setPrimaryMessageBody(@NonNull Recipients threadRecipients,
|
||||||
|
@NonNull Recipient individualRecipient,
|
||||||
|
@NonNull CharSequence message,
|
||||||
|
@Nullable SlideDeck slideDeck)
|
||||||
|
{
|
||||||
|
SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
|
||||||
|
|
||||||
|
if (privacy.isDisplayContact() && (threadRecipients.isGroupRecipient() || !threadRecipients.isSingleRecipient())) {
|
||||||
|
stringBuilder.append(Util.getBoldedString(individualRecipient.toShortString() + ": "));
|
||||||
|
}
|
||||||
|
|
||||||
if (privacy.isDisplayMessage()) {
|
if (privacy.isDisplayMessage()) {
|
||||||
setContentText(message);
|
setContentText(stringBuilder.append(message));
|
||||||
this.slideDeck = slideDeck;
|
this.slideDeck = slideDeck;
|
||||||
} else {
|
} else {
|
||||||
setContentText(context.getString(R.string.SingleRecipientNotificationBuilder_new_message));
|
setContentText(stringBuilder.append(context.getString(R.string.SingleRecipientNotificationBuilder_new_message)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,9 +133,20 @@ public class SingleRecipientNotificationBuilder extends AbstractNotificationBuil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMessageBody(@Nullable CharSequence messageBody) {
|
public void addMessageBody(@NonNull Recipients threadRecipients,
|
||||||
|
@NonNull Recipient individualRecipient,
|
||||||
|
@Nullable CharSequence messageBody)
|
||||||
|
{
|
||||||
|
SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
|
||||||
|
|
||||||
|
if (privacy.isDisplayContact() && (threadRecipients.isGroupRecipient() || !threadRecipients.isSingleRecipient())) {
|
||||||
|
stringBuilder.append(Util.getBoldedString(individualRecipient.toShortString() + ": "));
|
||||||
|
}
|
||||||
|
|
||||||
if (privacy.isDisplayMessage()) {
|
if (privacy.isDisplayMessage()) {
|
||||||
messageBodies.add(messageBody == null ? "" : messageBody);
|
messageBodies.add(stringBuilder.append(messageBody == null ? "" : messageBody));
|
||||||
|
} else {
|
||||||
|
messageBodies.add(stringBuilder.append(context.getString(R.string.SingleRecipientNotificationBuilder_new_message)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user