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)));