From 5547016d350c9925e36c961ecff7f4f2e02b9da6 Mon Sep 17 00:00:00 2001
From: Tomasz Knapik <hi@tmkn.org>
Date: Wed, 30 Jan 2019 13:56:52 +0000
Subject: [PATCH] Decamelize JSON body on fetch

---
 opentech/static_src/src/app/src/api/notes.js           |  2 +-
 opentech/static_src/src/app/src/api/utils.js           | 10 +++++++++-
 .../static_src/src/app/src/redux/middleware/api.js     |  3 +--
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/opentech/static_src/src/app/src/api/notes.js b/opentech/static_src/src/app/src/api/notes.js
index 20dda85cb..ec431cf28 100644
--- a/opentech/static_src/src/app/src/api/notes.js
+++ b/opentech/static_src/src/app/src/api/notes.js
@@ -14,7 +14,7 @@ export function createNoteForSubmission(submissionID, note) {
         path: `/apply/api/submissions/${submissionID}/comments/`,
         method: 'POST',
         options: {
-            body: JSON.stringify(note),
+            body: note,
         }
     };
 }
diff --git a/opentech/static_src/src/app/src/api/utils.js b/opentech/static_src/src/app/src/api/utils.js
index 5894f783e..ac316ae6a 100644
--- a/opentech/static_src/src/app/src/api/utils.js
+++ b/opentech/static_src/src/app/src/api/utils.js
@@ -1,10 +1,11 @@
+import { decamelizeKeys } from 'humps';
 import Cookies from 'js-cookie';
 
 const getBaseUrl = () => {
     return process.env.API_BASE_URL;
 };
 
-export async function apiFetch({path, method = 'GET', params = {}, options = {}}) {
+export function apiFetch({path, method = 'GET', params = {}, options = {}, decamelizeJSON = true}) {
     const url = new URL(getBaseUrl());
     url.pathname = path;
 
@@ -22,6 +23,13 @@ export async function apiFetch({path, method = 'GET', params = {}, options = {}}
         };
     }
 
+    if (decamelizeJSON === true && options.body !== undefined) {
+        options = {
+            ...options,
+            body: JSON.stringify(decamelizeKeys(options.body))
+        }
+    }
+
     return fetch(url, {
         ...options,
         headers: {
diff --git a/opentech/static_src/src/app/src/redux/middleware/api.js b/opentech/static_src/src/app/src/redux/middleware/api.js
index 0d61e341c..04a4de9ab 100644
--- a/opentech/static_src/src/app/src/redux/middleware/api.js
+++ b/opentech/static_src/src/app/src/redux/middleware/api.js
@@ -9,8 +9,7 @@ const callApi = (endpoint) => {
                   if (!response.ok) {
                       return Promise.reject({message: json.error})
                   }
-                  const camelizedJson = camelizeKeys(json)
-                  return camelizedJson
+                  return camelizeKeys(json)
               })
              )
 }
-- 
GitLab