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

Commit ee30d44f authored by Mario Đanić's avatar Mario Đanić Committed by GitHub
Browse files

Merge branch 'master' into fix_file_modification_date_on_upload

parents 25ccc8bd c6b05823
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.util.Calendar;
import java.util.LinkedHashSet;
import java.util.Set;

@@ -77,7 +78,8 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation
        RandomAccessFile raf = null;

        File file = new File(mLocalPath);
        SharedPreferences sharedPref = mContext.getApplicationContext().getSharedPreferences("com.nextcloud.PREFERENCE_upload", Context.MODE_PRIVATE);
        SharedPreferences sharedPref = mContext.getApplicationContext().
                getSharedPreferences("com.nextcloud.PREFERENCE_upload", Context.MODE_PRIVATE);
        String chunkId = String.format("%08d", Math.abs(file.getName().hashCode()));
        Set<String> successfulChunks = sharedPref.getStringSet(chunkId, new LinkedHashSet<String>());

@@ -98,7 +100,7 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation
            String chunkSizeStr = String.valueOf(CHUNK_SIZE);
            String totalLengthStr = String.valueOf(file.length());
            for (int chunkIndex = 0; chunkIndex < chunkCount ; chunkIndex++, offset += CHUNK_SIZE) {
                if (successfulChunks.contains(String.valueOf(chunkIndex))){
                if (successfulChunks.contains(String.valueOf(chunkIndex + "_" + getDateAsString()))){
                    ((ChunkFromFileChannelRequestEntity) mEntity).setmTransferred(offset);
                    continue;
                }
@@ -156,23 +158,21 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation
                        ", HTTP result status " + status);

                if (isSuccess(status)){
                  successfulChunks.add(String.valueOf(chunkIndex));

                  successfulChunks.add(String.valueOf(chunkIndex) + "_" + getDateAsString());
                } else {
                    SharedPreferences.Editor editor = sharedPref.edit();
                    editor.putStringSet(chunkId, successfulChunks).apply();

                    break;
                }
            }

            if (isSuccess(status)){
                SharedPreferences.Editor editor = sharedPref.edit();
                editor.remove(chunkId).apply();
            }

        } finally {
            SharedPreferences.Editor editor = sharedPref.edit();
            if (this.isSuccess(status)) {
                editor.remove(chunkId).apply();
            } else {
                editor.putStringSet(chunkId, successfulChunks).apply();
            }

            if (channel != null)
                channel.close();
@@ -184,4 +184,11 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation
        return status;
    }

    private String getDateAsString() {
        Calendar calendar = Calendar.getInstance();
        return calendar.get(Calendar.YEAR) + "-"
             + calendar.get(Calendar.MONTH) + "-"
             + calendar.get(Calendar.DAY_OF_MONTH);
    }

}