Selaa lähdekoodia

Refactor and fix the bad URL param substitution method

Kailash Nadh 6 vuotta sitten
vanhempi
commit
b70ceccd02
1 muutettua tiedostoa jossa 18 lisäystä ja 15 poistoa
  1. 18 15
      frontend/my/src/App.js

+ 18 - 15
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