From 305ae573150dcbf9806e00815473c392b638d965 Mon Sep 17 00:00:00 2001
From: Chris Lawton <chris.lawton@torchbox.com>
Date: Tue, 14 May 2019 17:09:15 +0100
Subject: [PATCH] initial work on submitting an edited message

---
 opentech/static_src/src/app/src/api/index.js       |  3 ++-
 opentech/static_src/src/app/src/api/notes.js       | 10 ++++++++++
 .../src/app/src/containers/EditNoteForm.js         |  8 ++++----
 .../static_src/src/app/src/redux/actions/notes.js  | 14 ++++++++++++++
 .../static_src/src/app/src/redux/reducers/notes.js | 11 +++++++++++
 5 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/opentech/static_src/src/app/src/api/index.js b/opentech/static_src/src/app/src/api/index.js
index 8b12cba9e..d53e0261d 100644
--- a/opentech/static_src/src/app/src/api/index.js
+++ b/opentech/static_src/src/app/src/api/index.js
@@ -5,7 +5,7 @@ import {
     fetchSubmissionsByStatuses
 } from '@api/submissions';
 import { fetchRound, fetchRounds } from '@api/rounds';
-import { createNoteForSubmission, fetchNotesForSubmission, fetchNewNotesForSubmission } from '@api/notes';
+import { createNoteForSubmission, fetchNotesForSubmission, fetchNewNotesForSubmission, editNoteForSubmission } from '@api/notes';
 
 export default {
     executeSubmissionAction,
@@ -20,4 +20,5 @@ export default {
     fetchNotesForSubmission,
     fetchNewNotesForSubmission,
     createNoteForSubmission,
+    editNoteForSubmission,
 };
diff --git a/opentech/static_src/src/app/src/api/notes.js b/opentech/static_src/src/app/src/api/notes.js
index 436c45909..9e41fd1b4 100644
--- a/opentech/static_src/src/app/src/api/notes.js
+++ b/opentech/static_src/src/app/src/api/notes.js
@@ -30,3 +30,13 @@ export function createNoteForSubmission(submissionID, note) {
         }
     };
 }
+
+export function editNoteForSubmission(note) {
+    return {
+        path: `/apply/api/comments/${note.id}/edit/`,
+        method: 'POST',
+        options: {
+            body: JSON.stringify({ message: note.message }),
+        }
+    }
+}
diff --git a/opentech/static_src/src/app/src/containers/EditNoteForm.js b/opentech/static_src/src/app/src/containers/EditNoteForm.js
index 727efa6b8..d1d336bec 100644
--- a/opentech/static_src/src/app/src/containers/EditNoteForm.js
+++ b/opentech/static_src/src/app/src/containers/EditNoteForm.js
@@ -43,9 +43,9 @@ class EditNoteForm extends React.Component {
     }
 
     onSubmit = (message, resetEditor) => {
-        this.props.submitNote(this.props.submissionID, {
+        this.props.submitNote({
+            ...this.props.editing,
             message,
-            visibility: 'internal',
         }).then(() => resetEditor());
     }
 }
@@ -55,8 +55,8 @@ const mapStateToProps = (state, ownProps) => ({
     isCreating: getNoteCreatingStateForSubmission(ownProps.submissionID)(state),
 });
 
-const mapDispatchToProps = dispatch => ({
-    submitNote: (submissionID, note) => dispatch(createNoteForSubmission(submissionID, note)),
+const mapDispatchToProps = (dispatch, ownProps) => ({
+    submitNote: (note) => dispatch(editNoteForSubmission(note)),
 });
 
 export default connect(mapStateToProps, mapDispatchToProps)(EditNoteForm);
diff --git a/opentech/static_src/src/app/src/redux/actions/notes.js b/opentech/static_src/src/app/src/redux/actions/notes.js
index cc05d8eda..eec0ce80f 100644
--- a/opentech/static_src/src/app/src/redux/actions/notes.js
+++ b/opentech/static_src/src/app/src/redux/actions/notes.js
@@ -12,6 +12,10 @@ export const UPDATE_EDIT_NOTE = 'UPDATE_EDIT_NOTE';
 export const START_CREATING_NOTE_FOR_SUBMISSION = 'START_CREATING_NOTE_FOR_SUBMISSION';
 export const FAIL_CREATING_NOTE_FOR_SUBMISSION = 'FAIL_CREATING_NOTE_FOR_SUBMISSION';
 
+export const START_EDITING_NOTE_FOR_SUBMISSION = 'START_EDITING_NOTE_FOR_SUBMISSION';
+export const EDIT_NOTE = 'EDIT_NOTE';
+export const FAIL_EDITING_NOTE_FOR_SUBMISSION = 'FAIL_EDITING_NOTE_FOR_SUBMISSION';
+
 export const fetchNotesForSubmission = submissionID => (dispatch, getState) => {
     return dispatch(fetchNotes(submissionID))
 }
@@ -62,3 +66,13 @@ export const handleEditNote = (messageID, submissionID, message) => ({
     submissionID,
     message
 })
+
+export const editNoteForSubmission = (note) => (dispatch) => dispatch(editNote(note))
+
+const editNote = (note) => ({
+    [CALL_API]: {
+        types: [ START_EDITING_NOTE_FOR_SUBMISSION, EDIT_NOTE, FAIL_EDITING_NOTE_FOR_SUBMISSION ],
+        endpoint: api.editNoteForSubmission(note),
+    },
+    note
+})
diff --git a/opentech/static_src/src/app/src/redux/reducers/notes.js b/opentech/static_src/src/app/src/redux/reducers/notes.js
index a1ef3be28..c21046f1a 100644
--- a/opentech/static_src/src/app/src/redux/reducers/notes.js
+++ b/opentech/static_src/src/app/src/redux/reducers/notes.js
@@ -8,6 +8,10 @@ import {
     START_CREATING_NOTE_FOR_SUBMISSION,
     FAIL_CREATING_NOTE_FOR_SUBMISSION,
     UPDATE_EDIT_NOTE,
+    START_EDITING_NOTE_FOR_SUBMISSION,
+    EDIT_NOTE,
+    FAIL_EDITING_NOTE_FOR_SUBMISSION
+
 } from '@actions/notes';
 
 function notesFetching(state = false, action) {
@@ -125,6 +129,13 @@ function editingNote(state={}, action) {
                     message: action.message,
                 },
             };
+        case START_EDITING_NOTE_FOR_SUBMISSION:
+        case EDIT_NOTE:
+            return {
+                ...state,
+                ...action.data,
+            }
+        case FAIL_EDITING_NOTE_FOR_SUBMISSION:
         default:
             return state;
     }
-- 
GitLab