Skip to content
Snippets Groups Projects
cookie.js 1.83 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jean-Marc's avatar
    Jean-Marc committed
    /*!
     Cookie helper functions
     Copyright (c) 2023 Dimitri van Heesch
     Released under MIT license.
    */
    let Cookie = {
      cookie_namespace: 'doxygen_',
    
      readSetting(cookie,defVal) {
        if (window.chrome) {
          const val = localStorage.getItem(this.cookie_namespace+cookie) ||
                      sessionStorage.getItem(this.cookie_namespace+cookie);
          if (val) return val;
        } else {
          let myCookie = this.cookie_namespace+cookie+"=";
          if (document.cookie) {
            const index = document.cookie.indexOf(myCookie);
            if (index != -1) {
              const valStart = index + myCookie.length;
              let valEnd = document.cookie.indexOf(";", valStart);
              if (valEnd == -1) {
                valEnd = document.cookie.length;
              }
              return document.cookie.substring(valStart, valEnd);
            }
          }
        }
        return defVal;
      },
    
      writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
        if (window.chrome) {
          if (days==0) {
            sessionStorage.setItem(this.cookie_namespace+cookie,val);
          } else {
            localStorage.setItem(this.cookie_namespace+cookie,val);
          }
        } else {
          let date = new Date();
          date.setTime(date.getTime()+(days*24*60*60*1000));
          const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
          document.cookie = this.cookie_namespace + cookie + "=" +
                            val + "; SameSite=Lax;" + expiration + "path=/";
        }
      },
    
      eraseSetting(cookie) {
        if (window.chrome) {
          if (localStorage.getItem(this.cookie_namespace+cookie)) {
            localStorage.removeItem(this.cookie_namespace+cookie);
          } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
            sessionStorage.removeItem(this.cookie_namespace+cookie);
          }
        } else {
          this.writeSetting(cookie,'',-1);
        }
      },
    }