templates/components/messenger/js/service/config/query_config_service.js.twig line 1

Open in your IDE?
  1. {% set options = {
  2. }|merge(options|default({})) %}
  3. class QueryConfigService {
  4.     constructor() {
  5.         this.logger = new Logger({ enabled: true, level: "debug", name: this.constructor.name });
  6.     }
  7.     parseAndSaveChanges(ignoreEmpty = true) {
  8.         let currentQueryConfig = this.get();
  9.         let queryConfig = this._parse();
  10.         {#alert("Query config: " + JSON.stringify(queryConfig, null, 2));#}
  11.         if (!currentQueryConfig) {
  12.             this.logger.debug("No current query config, saving new config:", queryConfig);
  13.             this._save(queryConfig);
  14.         } else if (this._hasChanges(currentQueryConfig, queryConfig, ignoreEmpty)) {
  15.             this.logger.debug("Query config has changes, saving new config:", queryConfig);
  16.             this._save(queryConfig);
  17.         } else {
  18.             this.logger.debug("Query config has no changes, not saving.", JSON.stringify(currentQueryConfig, null, 2));
  19.             queryConfig = currentQueryConfig;
  20.         }
  21.         return queryConfig;
  22.     }
  23.     _hasChanges(currentConfig, newConfig, ignoreEmpty = true) {
  24.         for (let key in newConfig) {
  25.             if ((!ignoreEmpty || newConfig[key]) && newConfig[key] !== currentConfig[key]) {
  26.                 return true;
  27.             }
  28.         }
  29.     }
  30.     _parse() {
  31.         let queryParams = this._getQueryParams();
  32.         let platform = this._getQueryPlatform(queryParams);
  33.         let fcmToken = this._getQueryFcmToken(queryParams);
  34.         let queryConfig = {
  35.             platform: platform,
  36.             fcmToken: fcmToken
  37.         };
  38.         return queryConfig;
  39.     }
  40.     _save(queryConfig) {
  41.         localStorage.setItem("queryConfig", JSON.stringify(queryConfig));
  42.     }
  43.     get() {
  44.         let queryConfigStr = localStorage.getItem("queryConfig");
  45.         if (queryConfigStr) {
  46.             return JSON.parse(queryConfigStr);
  47.         }
  48.         return null;
  49.     }
  50.     _getQueryPlatform(queryParams) {
  51.         if (queryParams.platform) {
  52.             return queryParams.platform;
  53.         }
  54.         return null;
  55.     }
  56.     _getQueryFcmToken(queryParams) {
  57.         if (queryParams.fcmToken) {
  58.             return queryParams.fcmToken;
  59.         }
  60.         return null;
  61.     }
  62.     _getQueryParams() {
  63.         const urlParams = new URLSearchParams(window.location.search);
  64.         const params = {};
  65.         for (const [key, value] of urlParams.entries()) {
  66.             params[key] = value;
  67.         }
  68.         return params;
  69.     }
  70. }