add server request for note update and delete
authorymh <ymh.work@gmail.com>
Fri, 23 Jun 2017 17:58:21 +0200
changeset 83 76a4e4b11762
parent 82 6f2999873343
child 84 bf35a7737f94
add server request for note update and delete
client/src/actions/notesActions.js
client/src/api/APIClient.js
src/notes/api/serializers/core.py
src/notes/api/views/core.py
--- a/client/src/actions/notesActions.js	Fri Jun 23 15:57:35 2017 +0200
+++ b/client/src/actions/notesActions.js	Fri Jun 23 17:58:21 2017 +0200
@@ -47,14 +47,42 @@
 export const deleteNote = (note) => {
   return {
     type: types.DELETE_NOTE,
-    note
+    note,
+    meta: {
+      offline: {
+        effect: {
+          url: `/api/notes/sessions/${note.get('session')}/notes/${note.get('_id')}/`,
+          method: 'DELETE'
+        },
+        commit: { type: types.NOOP },
+        rollback: { type: types.NOOP }
+      }
+    }
   };
 }
 
 export const updateNote = (note, data) => {
+  const noteSrvr = {
+    raw: JSON.stringify(data.raw),
+    plain: data.plain,
+    html: data.html,
+    categorization: JSON.stringify(data.categories),
+  }
+
   return {
     type: types.UPDATE_NOTE,
     note,
-    data
+    data,
+    meta: {
+      offline: {
+        effect: {
+          url: `/api/notes/sessions/${note.get('session')}/notes/${note.get('_id')}/`,
+          method: 'PUT',
+          data: noteSrvr
+        },
+        commit: { type: types.NOOP },
+        rollback: { type: types.NOOP }
+      }
+    }
   };
 }
--- a/client/src/api/APIClient.js	Fri Jun 23 15:57:35 2017 +0200
+++ b/client/src/api/APIClient.js	Fri Jun 23 17:58:21 2017 +0200
@@ -68,7 +68,14 @@
       fetch(req)
         .then((response) => {
           if (response.ok) {
-            return response.json().then((data) => resolve(data));
+            let resJsonPromise;
+            if(response.status === 204) {
+              resJsonPromise = Promise.resolve({});
+            } else {
+              resJsonPromise = response.json();
+            }
+            return resJsonPromise.then((data) => resolve(data));
+
           } else {
             return response.json().then((data) => reject(data));
           }
--- a/src/notes/api/serializers/core.py	Fri Jun 23 15:57:35 2017 +0200
+++ b/src/notes/api/serializers/core.py	Fri Jun 23 17:58:21 2017 +0200
@@ -19,6 +19,16 @@
         )
         read_only_fields = ('ext_id', 'version', 'created', 'updated')
 
+class UpdateNoteSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Note
+        fields = (
+            'ext_id', 'version', 'created', 'updated',
+            'plain', 'html', 'raw',
+            'categorization', 'margin_note', 'tc_start', 'tc_end'
+        )
+        read_only_fields = ('ext_id', 'version', 'created', 'updated', 'tc_start', 'tc_end')
+
 class CreateNoteSerializer(serializers.ModelSerializer):
     class Meta:
         model = Note
--- a/src/notes/api/views/core.py	Fri Jun 23 15:57:35 2017 +0200
+++ b/src/notes/api/views/core.py	Fri Jun 23 17:58:21 2017 +0200
@@ -4,7 +4,7 @@
 from rest_framework import viewsets
 
 from ..permissions import NotePermission, SessionPermission
-from ..serializers.core import (DetailNoteSerializer, DetailSessionSerializer, CreateNoteSerializer,
+from ..serializers.core import (DetailNoteSerializer, UpdateNoteSerializer, DetailSessionSerializer, CreateNoteSerializer,
                                 ListNoteSerializer, ListSessionSerializer, CreateSessionSerializer)
 
 logger = logging.getLogger(__name__)
@@ -38,7 +38,7 @@
         'list': ListNoteSerializer,
         'retrieve': DetailNoteSerializer,
         'create': CreateNoteSerializer,
-        'update': DetailNoteSerializer,
+        'update': UpdateNoteSerializer,
     }
     lookup_field = 'ext_id'