From 9739141f0d1165e1ba9463a1112cf618c1f18f0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Mon, 28 Jun 2021 19:06:59 -0400
Subject: [PATCH] datatransfer: fix autoaccept

Change-Id: Ifb8b5566989e28efe4ba0ea5257018306830bf7a
---
 .../main/java/cx/ring/services/NotificationServiceImpl.java | 2 +-
 .../src/main/java/net/jami/facades/ConversationFacade.java  | 3 ++-
 .../src/main/java/net/jami/model/Interaction.java           | 6 +++---
 .../src/main/java/net/jami/services/AccountService.java     | 3 +++
 4 files changed, 9 insertions(+), 5 deletions(-)

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 9861ef901..649ca69c5 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
@@ -744,7 +744,7 @@ public class NotificationServiceImpl implements NotificationService {
             return;
         }
         InteractionStatus event = info.getStatus();
-        if (event == null) {
+        if (event == null || event == InteractionStatus.FILE_AVAILABLE) {
             return;
         }
         android.net.Uri path = ConversationPath.toUri(conversation);
diff --git a/ring-android/libringclient/src/main/java/net/jami/facades/ConversationFacade.java b/ring-android/libringclient/src/main/java/net/jami/facades/ConversationFacade.java
index bf4812873..fdcd012ab 100644
--- a/ring-android/libringclient/src/main/java/net/jami/facades/ConversationFacade.java
+++ b/ring-android/libringclient/src/main/java/net/jami/facades/ConversationFacade.java
@@ -590,7 +590,8 @@ public class ConversationFacade {
 
     private void handleDataTransferEvent(DataTransfer transfer) {
         Conversation conversation = mAccountService.getAccount(transfer.getAccount()).onDataTransferEvent(transfer);
-        if (transfer.getStatus() == Interaction.InteractionStatus.TRANSFER_CREATED && !transfer.isOutgoing()) {
+        Interaction.InteractionStatus status = transfer.getStatus();
+        if ((status == Interaction.InteractionStatus.TRANSFER_CREATED || status == Interaction.InteractionStatus.FILE_AVAILABLE) && !transfer.isOutgoing()) {
             if (transfer.canAutoAccept(mPreferencesService.getMaxFileAutoAccept(transfer.getAccount()))) {
                 mAccountService.acceptFileTransfer(conversation, transfer.getFileId(), transfer);
                 return;
diff --git a/ring-android/libringclient/src/main/java/net/jami/model/Interaction.java b/ring-android/libringclient/src/main/java/net/jami/model/Interaction.java
index d7f2c02dc..ddfa85cd5 100644
--- a/ring-android/libringclient/src/main/java/net/jami/model/Interaction.java
+++ b/ring-android/libringclient/src/main/java/net/jami/model/Interaction.java
@@ -66,9 +66,9 @@ public class Interaction {
     String mExtraFlag = new JsonObject().toString();
 
     // Swarm
-    private String mConversationId;
-    private String mMessageId;
-    private List<String> mParentIds;
+    private String mConversationId = null;
+    private String mMessageId = null;
+    private List<String> mParentIds = null;
 
     /* Needed by ORMLite */
     public Interaction() {
diff --git a/ring-android/libringclient/src/main/java/net/jami/services/AccountService.java b/ring-android/libringclient/src/main/java/net/jami/services/AccountService.java
index 15bae636b..e1217c961 100644
--- a/ring-android/libringclient/src/main/java/net/jami/services/AccountService.java
+++ b/ring-android/libringclient/src/main/java/net/jami/services/AccountService.java
@@ -1553,6 +1553,7 @@ public class AccountService {
         }
         interaction.setContact(contact);
         interaction.setSwarmInfo(conversation.getUri().getRawRingId(), id, parents);
+        interaction.setConversation(conversation);
         if (conversation.addSwarmElement(interaction)) {
             if (conversation.isVisible())
                 mHistoryService.setMessageRead(account.getAccountID(), conversation.getUri(), interaction.getMessageId());
@@ -1670,6 +1671,8 @@ public class AccountService {
             boolean isIncoming = !interaction.getContact().isUser();
             if (isIncoming) {
                 incomingSwarmMessageSubject.onNext(interaction);
+                if (interaction instanceof DataTransfer)
+                    dataTransferSubject.onNext((DataTransfer)interaction);
             }
         }
     }
-- 
GitLab