]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/core/rest/rest.service.ts
Don't display account setup modal on signup
[github/Chocobozzz/PeerTube.git] / client / src / app / core / rest / rest.service.ts
index c12b6bd41c22849a06263a2a6bbd18498c572328..98e45ffc00dfd4909fb5aeb56cb87bae8f024ea1 100644 (file)
@@ -9,11 +9,12 @@ interface QueryStringFilterPrefixes {
     prefix: string
     handler?: (v: string) => string | number
     multiple?: boolean
+    isBoolean?: boolean
   }
 }
 
 type ParseQueryStringFilterResult = {
-  [key: string]: string | number | (string | number)[]
+  [key: string]: string | number | boolean | (string | number | boolean)[]
 }
 
 @Injectable()
@@ -43,13 +44,21 @@ export class RestService {
     return newParams
   }
 
+  addArrayParams (params: HttpParams, name: string, values: (string | number)[]) {
+    for (const v of values) {
+      params = params.append(name, v)
+    }
+
+    return params
+  }
+
   addObjectParams (params: HttpParams, object: { [ name: string ]: any }) {
     for (const name of Object.keys(object)) {
       const value = object[name]
       if (value === undefined || value === null) continue
 
-      if (Array.isArray(value) && value.length !== 0) {
-        for (const v of value) params = params.append(name, v)
+      if (Array.isArray(value)) {
+        params = this.addArrayParams(params, name, value)
       } else {
         params = params.append(name, value)
       }
@@ -89,13 +98,20 @@ export class RestService {
 
       const matchedTokens = tokens.filter(t => t.startsWith(prefix))
                                   .map(t => t.slice(prefix.length)) // Keep the value filter
-                                  .map(t => t.replace(/^"|"$/g, ''))
+                                  .map(t => t.replace(/^"|"$/g, '')) // Remove ""
                                   .map(t => {
                                     if (prefixObj.handler) return prefixObj.handler(t)
 
+                                    if (prefixObj.isBoolean) {
+                                      if (t === 'true') return true
+                                      if (t === 'false') return false
+
+                                      return undefined
+                                    }
+
                                     return t
                                   })
-                                  .filter(t => !!t || t === 0)
+                                  .filter(t => t !== null && t !== undefined)
 
       if (matchedTokens.length === 0) continue