Current File : /home/digitaw/www/wp-content/plugins/ionos-journey/js/helpers/url-helper.js
export default class UrlHelper {

    static getUrl() {
        return new URL(window.location)
    }

    static getAllParams() {
        return Array.from(this.getUrl().searchParams.entries())
    }

    static getParam(name) {
        return this.getUrl().searchParams.get(name)
    }

    static addParam(key, value) {
        const url = this.getUrl()
        url.searchParams.append(key, value)
        window.history.pushState({}, '', url);
    }

    static deleteParam(key) {
        const url = this.getUrl()
        url.searchParams.delete(key)
        window.history.pushState({}, '', url);
    }

    static getPageName() {
        return window.location.pathname.split("/").pop() || 'index.php'
    }

    static convertToJson(urlParams){
        let params = {}
        for(const value in urlParams){
            params[urlParams[value][0]] = urlParams[value][1]
        }
        return params
    }

    static redirectToPage(page, urlParams) {
        let params = urlParams instanceof Array ? this.convertToJson(urlParams) : urlParams
        if(!params.hasOwnProperty('wp_tour')){
            params['wp_tour'] = 'started'
        }

        let pageName = page.includes(".php") ? page : page + ".php"
        let url = this.getUrl().toString().includes('?') ? new URL(this.getUrl().toString().split('?')[0]) : this.getUrl()

        if(window.location.pathname.split("/").pop().length > 1){
            url = new URL(url.toString().replace(this.getPageName(), pageName))
        }else{
            url = new URL(url.toString() + pageName)
        }

        for(const key in params){
            url.searchParams.append(key, params[key])
        }
        if(UrlHelper.getParam('autoplay') !== null){
            url.searchParams.append('autoplay', 'enabled')
        }

        window.location = url.toString()
    }
}


/*

        getUrlParam: function (url) {
            var vars = {};
            url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {
                vars[key] = value;
            });
            return vars;
        },
        changeQueryParameter: function (query, index, param) {
            let queryParams = new URLSearchParams(query);
            queryParams.delete(index);
            queryParams.set(index, param);
            return queryParams.toString();
        }
 */