trust requests: fix notifications
Change-Id: I58ced12ffe287b055a77c05f872f8174f114a24a
diff --git a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
index 7f6ab4a..02667ad 100644
--- a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
@@ -318,24 +318,16 @@
@Override
public void showIncomingTrustRequestNotification(final Account account) {
int notificationId = getIncomingTrustNotificationId(account.getAccountID());
- NotificationCompat.Builder messageNotificationBuilder = mNotificationBuilders.get(notificationId);
-
- if (messageNotificationBuilder != null) {
- notificationManager.cancel(notificationId);
- } else {
- messageNotificationBuilder = new NotificationCompat.Builder(mContext, NOTIF_CHANNEL_REQUEST);
- }
-
+ NotificationCompat.Builder messageNotificationBuilder;
Set<String> notifiedRequests = mPreferencesService.loadRequestsPreferences(account.getAccountID());
Collection<Conversation> requests = account.getPending();
- Log.w(TAG, "showIncomingTrustRequestNotification " + requests.size());
if (requests.isEmpty()) {
return;
} else if (requests.size() == 1) {
Conversation request = requests.iterator().next();
CallContact contact = request.getContact();
- String contactKey = contact.getKey();
+ String contactKey = contact.getPrimaryUri().getRawRingId();
if (notifiedRequests.contains(contactKey)) {
return;
}
@@ -372,10 +364,11 @@
}
setContactPicture(data, contact.getRingUsername(), contact.getPrimaryNumber(), messageNotificationBuilder);
} else {
+ messageNotificationBuilder = new NotificationCompat.Builder(mContext, NOTIF_CHANNEL_REQUEST);
boolean newRequest = false;
for (Conversation request : requests) {
CallContact contact = request.getContact();
- String contactKey = contact.getKey();
+ String contactKey = contact.getPrimaryUri().getRawRingId();
if (!notifiedRequests.contains(contactKey)) {
newRequest = true;
mPreferencesService.saveRequestPreferences(account.getAccountID(), contactKey);
diff --git a/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java b/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
index f1a7213..909eb80 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
@@ -120,6 +120,11 @@
.subscribeOn(Schedulers.computation())
.subscribe());
+ mDisposableBag.add(currentAccountSubject
+ .switchMap(a -> a.getPendingSubject()
+ .doOnNext(p -> mNotificationService.showIncomingTrustRequestNotification(a)))
+ .subscribe());
+
mDisposableBag.add(mAccountService.getIncomingRequests()
.switchMapSingle(r -> getAccountSubject(r.getAccountId()))
.subscribe(a -> mNotificationService.showIncomingTrustRequestNotification(a)));