don’t mark pgp encrypted files received from dino as deleted

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/crypto/PgpDecryptionService.java    | 3 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 9 
2 files changed, 12 insertions(+)

Detailed changes

src/main/java/eu/siacs/conversations/crypto/PgpDecryptionService.java 🔗

@@ -201,6 +201,9 @@ public class PgpDecryptionService {
 								if (fixedFile.getParentFile().mkdirs()) {
 									Log.d(Config.LOGTAG,"created parent directories for "+fixedFile.getAbsolutePath());
 								}
+								synchronized (mXmppConnectionService.FILENAMES_TO_IGNORE_DELETION) {
+									mXmppConnectionService.FILENAMES_TO_IGNORE_DELETION.add(outputFile.getAbsolutePath());
+								}
 								if (outputFile.renameTo(fixedFile)) {
 									Log.d(Config.LOGTAG, "renamed " + outputFile.getAbsolutePath() + " to " + fixedFile.getAbsolutePath());
 									message.setRelativeFilePath(path);

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -277,6 +277,9 @@ public class XmppConnectionService extends Service {
     private final Object LISTENER_LOCK = new Object();
 
 
+    public final Set<String> FILENAMES_TO_IGNORE_DELETION = new HashSet<>();
+
+
     private final OnBindListener mOnBindListener = new OnBindListener() {
 
         @Override
@@ -1831,6 +1834,12 @@ public class XmppConnectionService extends Service {
     }
 
     private void markFileDeleted(final String path) {
+        synchronized (FILENAMES_TO_IGNORE_DELETION) {
+            if (FILENAMES_TO_IGNORE_DELETION.remove(path)) {
+                Log.d(Config.LOGTAG,"ignored deletion of "+path);
+                return;
+            }
+        }
         final File file = new File(path);
         final boolean isInternalFile = fileBackend.isInternalFile(file);
         final List<String> uuids = databaseBackend.markFileAsDeleted(file, isInternalFile);