From ac71bb7372e550d5de63746d5b1fc0d263b6ea28 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Thu, 5 Sep 2024 08:47:36 +0000
Subject: [PATCH] fix handling of bound parameters of urlhelper in js, fixes
 #4564

Closes #4564

Merge request studip/studip!3376
---
 resources/assets/javascripts/lib/url_helper.ts | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/resources/assets/javascripts/lib/url_helper.ts b/resources/assets/javascripts/lib/url_helper.ts
index b9ebbf60d90..8815142ed69 100644
--- a/resources/assets/javascripts/lib/url_helper.ts
+++ b/resources/assets/javascripts/lib/url_helper.ts
@@ -16,7 +16,7 @@ class URLHelper {
     base_url: string;
     parameters: Record<string, string>;
 
-    constructor(base_url = "", parameters = {}) {
+    constructor(base_url: string = "", parameters: any = {}) {
         //the base url for all links
         this.base_url = base_url;
 
@@ -33,7 +33,7 @@ class URLHelper {
      * @param ignore_params boolean: ignore previously bound parameters
      * @return: url with all necessary and additional parameters, encoded
      */
-    getURL(url: string, param_object: any, ignore_params: boolean): string {
+    getURL(url: string, param_object: any = {}, ignore_params: boolean = false): string {
         let result;
 
         if (url === '' || url.match(/^[?#]/)) {
@@ -44,9 +44,11 @@ class URLHelper {
 
         if (!ignore_params) {
             for (const key in this.parameters) {
-                if (!result.searchParams.has(key)) {
-                    result.searchParams.set(key, this.parameters[key]);
+                if (result.searchParams.has(key) || this.parameters[key] === null) {
+                    continue;
                 }
+
+                result.searchParams.set(key, this.parameters[key]);
             }
         }
 
-- 
GitLab