From dceea2820566a0dd722584d172ec7d9ce1b77085 Mon Sep 17 00:00:00 2001 From: mesomerie <32880945+mesomerie@users.noreply.github.com> Date: Sat, 21 Oct 2017 19:56:38 +0200 Subject: [PATCH] Create remove folder for notes, if it doesn't exist --- .../asynctasks/SyncNotesAsyncTask.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/java/org/aykit/MyOwnNotes/asynctasks/SyncNotesAsyncTask.java b/app/src/main/java/org/aykit/MyOwnNotes/asynctasks/SyncNotesAsyncTask.java index 86f87b3..289dac1 100644 --- a/app/src/main/java/org/aykit/MyOwnNotes/asynctasks/SyncNotesAsyncTask.java +++ b/app/src/main/java/org/aykit/MyOwnNotes/asynctasks/SyncNotesAsyncTask.java @@ -15,6 +15,7 @@ import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.OwnCloudCredentialsFactory; import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.resources.files.CreateRemoteFolderOperation; import com.owncloud.android.lib.resources.files.DownloadRemoteFileOperation; import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; import com.owncloud.android.lib.resources.files.FileUtils; @@ -218,6 +219,11 @@ private void createNote(Note note) { // don't destroy anything, create a new entry and let the user resolve the conflict note.filename = generateNewFileName(note.filename); createNote(note); + } else if (result.getCode().equals(RemoteOperationResult.ResultCode.FILE_NOT_FOUND)) { + // target folder not found... create and retry + if (createFolder(remotePath.substring(0, remotePath.lastIndexOf("/")))) { + createNote(note); + } } else { handleError(result); } @@ -235,7 +241,17 @@ private void createNote(Note note) { } mContext.getContentResolver().update(NotesProvider.NOTES.withId(note.id), note.getContentValues(), null, null); + } + } + + private boolean createFolder(String folder) { + CreateRemoteFolderOperation createRemoteFolderOperation = new CreateRemoteFolderOperation(folder, false); + RemoteOperationResult result = createRemoteFolderOperation.execute(mClient); + if (!result.isSuccess()) { + handleError(result); + return false; } + return true; } private String generateNewFileName(String name) {