summaryrefslogtreecommitdiffstats
path: root/develop/cookie.js
blob: 53ad21d98119a04bd7f6e558e6a4a04364e2a1cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*!
 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);
    }
  },
}