mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-11-04 02:53:06 +00:00 
			
		
		
		
	Improve update_query_string with enum action
This commit is contained in:
		@@ -69,20 +69,35 @@ function getCSRFToken() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const initialUrlParams = new URLSearchParams(window.location.search);
 | 
					const initialUrlParams = new URLSearchParams(window.location.search);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_query_string(key, value, push = true) {
 | 
					/**
 | 
				
			||||||
 | 
					 * @readonly
 | 
				
			||||||
 | 
					 * @enum {number}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					const History = {
 | 
				
			||||||
 | 
					    PUSH: 1,
 | 
				
			||||||
 | 
					    REPLACE: 2,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @param {string} key
 | 
				
			||||||
 | 
					 * @param {string | string[] | null} value
 | 
				
			||||||
 | 
					 * @param {History} action
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function update_query_string(key, value, action = History.REPLACE) {
 | 
				
			||||||
    const url = new URL(window.location.href);
 | 
					    const url = new URL(window.location.href);
 | 
				
			||||||
    if (!value) {
 | 
					    if (!value) {
 | 
				
			||||||
        // If the value is null, undefined or empty => delete it
 | 
					        // If the value is null, undefined or empty => delete it
 | 
				
			||||||
        url.searchParams.delete(key)
 | 
					        url.searchParams.delete(key)
 | 
				
			||||||
    } else if (Array.isArray(value)) {
 | 
					    } else if (Array.isArray(value)) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
        url.searchParams.delete(key)
 | 
					        url.searchParams.delete(key)
 | 
				
			||||||
        value.forEach((v) => url.searchParams.append(key, v))
 | 
					        value.forEach((v) => url.searchParams.append(key, v))
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        url.searchParams.set(key, value);
 | 
					        url.searchParams.set(key, value);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (push){
 | 
					    if (action === History.PUSH) {
 | 
				
			||||||
        history.pushState(null, document.title, url.toString());
 | 
					        history.pushState(null, document.title, url.toString());
 | 
				
			||||||
 | 
					    } else if (action === History.REPLACE) {
 | 
				
			||||||
 | 
					        history.replaceState(null, document.title, url.toString());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -129,7 +129,7 @@
 | 
				
			|||||||
      Alpine.data("pictures", () => ({
 | 
					      Alpine.data("pictures", () => ({
 | 
				
			||||||
        pictures: {},
 | 
					        pictures: {},
 | 
				
			||||||
        page: parseInt(initialUrlParams.get("page")) || 1,
 | 
					        page: parseInt(initialUrlParams.get("page")) || 1,
 | 
				
			||||||
        pushstate: true, /* Used to avoid pushing a state on a back action */
 | 
					        pushstate: History.PUSH, /* Used to avoid pushing a state on a back action */
 | 
				
			||||||
        loading: false,
 | 
					        loading: false,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async init() {
 | 
					        async init() {
 | 
				
			||||||
@@ -139,12 +139,12 @@
 | 
				
			|||||||
              this.page === 1 ? null : this.page,
 | 
					              this.page === 1 ? null : this.page,
 | 
				
			||||||
              this.pushstate
 | 
					              this.pushstate
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
            this.pushstate = true;
 | 
					            this.pushstate = History.PUSH;
 | 
				
			||||||
            this.fetch_pictures();
 | 
					            this.fetch_pictures();
 | 
				
			||||||
          });
 | 
					          });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          window.addEventListener("popstate", () => {
 | 
					          window.addEventListener("popstate", () => {
 | 
				
			||||||
            this.pushstate = false;
 | 
					            this.pushstate = History.REPLACE;
 | 
				
			||||||
            this.page = parseInt(
 | 
					            this.page = parseInt(
 | 
				
			||||||
              new URLSearchParams(window.location.search).get("page")
 | 
					              new URLSearchParams(window.location.search).get("page")
 | 
				
			||||||
            ) || 1;
 | 
					            ) || 1;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user