From b70ceccd02d2db30234d1f5054d2d0bd6e7b1970 Mon Sep 17 00:00:00 2001 From: Kailash Nadh Date: Mon, 29 Oct 2018 15:16:53 +0530 Subject: [PATCH] Refactor and fix the bad URL param substitution method --- frontend/my/src/App.js | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/frontend/my/src/App.js b/frontend/my/src/App.js index f8f94e8..81c86e1 100644 --- a/frontend/my/src/App.js +++ b/frontend/my/src/App.js @@ -47,18 +47,7 @@ class App extends React.PureComponent { // modelRequest is an opinionated wrapper for model specific HTTP requests, // including setting model states. modelRequest = async (model, route, method, params) => { - let url = route - - // Replace :params in the URL with params in the array. - let uriParams = route.match(/:([a-z0-9\-_]+)/ig) - if(uriParams && uriParams.length > 0) { - uriParams.forEach((p) => { - let pName = p.slice(1) // Lose the ":" prefix - if(params && params.hasOwnProperty(pName)) { - url = url.replace(p, params[pName]) - } - }) - } + let url = replaceParams(route, params) this.setState({ reqStates: { ...this.state.reqStates, [model]: cs.StatePending } }) try { @@ -97,9 +86,7 @@ class App extends React.PureComponent { // request is a wrapper for generic HTTP requests. request = async (url, method, params, headers) => { - if (params && params.hasOwnProperty("id") && typeof params["id"] === "number") { - url += "/" + params["id"] - } + url = replaceParams(url, params) this.setState({ reqStates: { ...this.state.reqStates, [url]: cs.StatePending } }) try { @@ -137,4 +124,20 @@ class App extends React.PureComponent { } } +function replaceParams (route, params) { + console.log(route, params) + // Replace :params in the URL with params in the array. + let uriParams = route.match(/:([a-z0-9\-_]+)/ig) + if(uriParams && uriParams.length > 0) { + uriParams.forEach((p) => { + let pName = p.slice(1) // Lose the ":" prefix + if(params && params.hasOwnProperty(pName)) { + route = route.replace(p, params[pName]) + } + }) + } + + return route +} + export default App