Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79d841fc authored by Vincent Bourgmayer's avatar Vincent Bourgmayer
Browse files

Merge branch '921-local-file-deletion' into 'v1-oreo'

prevent remote deletion after local deletion due to fileObserver

See merge request !190
parents 10c5956b 6f3b25af
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ public class SyncWrapper {
    public boolean equals(Object obj) {
        if (obj instanceof SyncRequest) {
            final SyncRequest objRequest = (SyncRequest) obj;
            return (objRequest.equals(this.request) && objRequest.getOperationType() == this.request.getOperationType());
            return (objRequest.equals(this.request));
        }
        return super.equals(obj);
    }
+19 −19
Original line number Diff line number Diff line
@@ -247,25 +247,14 @@ public class SynchronizationService extends Service implements OnRemoteOperation
    @Override
    public void onRemoteOperationFinish(RemoteOperation callerOperation, RemoteOperationResult result) {
        Timber.i("onRemoteOperationFinish()");
        SyncWrapper callerWrapper = null;
        for (Map.Entry<Integer, SyncWrapper> keyValue : startedSync.entrySet()) {
            if (keyValue.getValue().getRemoteOperation().equals(callerOperation)) {
                callerWrapper = keyValue.getValue();
                callerWrapper.setRunning(false);
                startWorker(keyValue.getKey());
                break;
            }
        }

        if (callerWrapper != null) {
            updateFailureCounter(callerWrapper.getRequest(), result.isSuccess());
        }

        if (callerOperation instanceof RemoveFileOperation) {
            if ( result.isSuccess() ) {
                DbHelper.manageSyncedFileStateDB( ( ( RemoveFileOperation ) callerOperation ).getSyncedFileState(),
                        "DELETE", this);
            }
        if (callerOperation instanceof RemoveFileOperation && result.isSuccess()) {
            DbHelper
                .manageSyncedFileStateDB(
                    ((RemoveFileOperation) callerOperation)
                        .getSyncedFileState(),
                    "DELETE", 
                    this
                );
        } else {
            final String operationClassName = callerOperation.getClass().getSimpleName();
            switch (result.getCode()) {
@@ -309,6 +298,17 @@ public class SynchronizationService extends Service implements OnRemoteOperation
                    break;
            }
        }

        for (Map.Entry<Integer, SyncWrapper> keyValue : startedSync.entrySet()) {
            final SyncWrapper wrapper = keyValue.getValue();
            final RemoteOperation wrapperOperation = wrapper.getRemoteOperation();
            if (wrapperOperation != null && wrapperOperation.equals(callerOperation)) {
                wrapper.setRunning(false);
                updateFailureCounter(wrapper.getRequest(), result.isSuccess());
                startWorker(keyValue.getKey());
                break;
            }
        }
    }

    private void updateFailureCounter(SyncRequest request, boolean success) {