--- 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'