{% set options = {
}|merge(options|default({})) %}
class QueryConfigService {
constructor() {
this.logger = new Logger({ enabled: true, level: "debug", name: this.constructor.name });
}
parseAndSaveChanges(ignoreEmpty = true) {
let currentQueryConfig = this.get();
let queryConfig = this._parse();
{#alert("Query config: " + JSON.stringify(queryConfig, null, 2));#}
if (!currentQueryConfig) {
this.logger.debug("No current query config, saving new config:", queryConfig);
this._save(queryConfig);
} else if (this._hasChanges(currentQueryConfig, queryConfig, ignoreEmpty)) {
this.logger.debug("Query config has changes, saving new config:", queryConfig);
this._save(queryConfig);
} else {
this.logger.debug("Query config has no changes, not saving.", JSON.stringify(currentQueryConfig, null, 2));
queryConfig = currentQueryConfig;
}
return queryConfig;
}
_hasChanges(currentConfig, newConfig, ignoreEmpty = true) {
for (let key in newConfig) {
if ((!ignoreEmpty || newConfig[key]) && newConfig[key] !== currentConfig[key]) {
return true;
}
}
}
_parse() {
let queryParams = this._getQueryParams();
let platform = this._getQueryPlatform(queryParams);
let fcmToken = this._getQueryFcmToken(queryParams);
let queryConfig = {
platform: platform,
fcmToken: fcmToken
};
return queryConfig;
}
_save(queryConfig) {
localStorage.setItem("queryConfig", JSON.stringify(queryConfig));
}
get() {
let queryConfigStr = localStorage.getItem("queryConfig");
if (queryConfigStr) {
return JSON.parse(queryConfigStr);
}
return null;
}
_getQueryPlatform(queryParams) {
if (queryParams.platform) {
return queryParams.platform;
}
return null;
}
_getQueryFcmToken(queryParams) {
if (queryParams.fcmToken) {
return queryParams.fcmToken;
}
return null;
}
_getQueryParams() {
const urlParams = new URLSearchParams(window.location.search);
const params = {};
for (const [key, value] of urlParams.entries()) {
params[key] = value;
}
return params;
}
}