From ca8e6c55ef0993e6ed3af75682e9787d86b1f3a9 Mon Sep 17 00:00:00 2001 From: korelstar Date: Thu, 27 Oct 2016 10:30:14 +0200 Subject: [PATCH 1/2] Bugfix: create was not possible, due to wrong HTTP-Method --- .../niedermann/owncloud/notes/util/NotesClient.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClient.java b/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClient.java index 843116159..c3068bc06 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClient.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/util/NotesClient.java @@ -1,6 +1,7 @@ package it.niedermann.owncloud.notes.util; import android.util.Base64; +import android.util.Log; import org.json.JSONArray; import org.json.JSONException; @@ -87,11 +88,11 @@ public OwnCloudNote getNoteById(long id) throws JSONException, IOException { return getNoteFromJSON(json); } - private OwnCloudNote putNote(OwnCloudNote note, String path) throws JSONException, IOException { + private OwnCloudNote putNote(OwnCloudNote note, String path, String method) throws JSONException, IOException { JSONObject paramObject = new JSONObject(); paramObject.accumulate(key_content, note.getContent()); paramObject.accumulate(key_modified, note.getModified().getTimeInMillis()/1000); - JSONObject json = new JSONObject(requestServer(path, METHOD_PUT, paramObject)); + JSONObject json = new JSONObject(requestServer(path, method, paramObject)); return getNoteFromJSON(json); } @@ -104,11 +105,11 @@ private OwnCloudNote putNote(OwnCloudNote note, String path) throws JSONExcepti * @throws IOException */ public OwnCloudNote createNote(OwnCloudNote note) throws JSONException, IOException { - return putNote(note, "notes"); + return putNote(note, "notes", METHOD_POST); } public OwnCloudNote editNote(OwnCloudNote note) throws JSONException, IOException { - return putNote(note, "notes/" + note.getRemoteId()); + return putNote(note, "notes/" + note.getRemoteId(), METHOD_PUT); } public void deleteNote(long noteId) throws @@ -139,7 +140,9 @@ private String requestServer(String target, String method, JSONObject params) + new String(Base64.encode((username + ":" + password).getBytes(), Base64.NO_WRAP))); con.setConnectTimeout(10 * 1000); // 10 seconds + Log.d(getClass().getSimpleName(), method + " " + targetURL); if (params != null) { + Log.d(getClass().getSimpleName(), "Params: "+params); con.setFixedLengthStreamingMode(params.toString().getBytes().length); con.setRequestProperty("Content-Type", application_json); con.setDoOutput(true); From f9b94caf8e21029fec82311b77f5150b29f579d0 Mon Sep 17 00:00:00 2001 From: korelstar Date: Thu, 27 Oct 2016 10:31:04 +0200 Subject: [PATCH 2/2] Fix wrong order after edit without changes --- .../android/activity/NotesListViewActivity.java | 12 ++++++++++-- .../niedermann/owncloud/notes/model/ItemAdapter.java | 10 ++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java index aa902e25e..7b1c1e702 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java @@ -371,10 +371,18 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { } else if (requestCode == show_single_note_cmd) { if (resultCode == RESULT_OK || resultCode == RESULT_FIRST_USER) { int notePosition = data.getExtras().getInt(EditNoteActivity.PARAM_NOTE_POSITION); - adapter.remove(adapter.getItem(notePosition)); + Item oldItem = adapter.getItem(notePosition); + if(resultCode == RESULT_FIRST_USER) { + adapter.remove(oldItem); + } if (resultCode == RESULT_OK) { DBNote editedNote = (DBNote) data.getExtras().getSerializable(EditNoteActivity.PARAM_NOTE); - adapter.add(editedNote); + if(oldItem instanceof DBNote && !editedNote.getModified().after(((DBNote)oldItem).getModified())) { + adapter.replace(editedNote, notePosition); + } else { + adapter.remove(oldItem); + adapter.add(editedNote); + } } } } else if (requestCode == server_settings) { diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java index f7a291049..01d7ad2ef 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java @@ -44,6 +44,16 @@ public void add(DBNote note) { notifyItemChanged(0); } + /** + * Replaces a note with an updated version + * @param note Note with the changes. + * @param position position in the list of the node + */ + public void replace(DBNote note, int position) { + itemList.set(position, note); + notifyItemChanged(position); + } + /** * Removes all items from the adapter. */