/* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ import * as Cookies from 'js-cookie'; export class CookieHandler { public constructor(private readonly widgetId: string, private readonly cookiePath?: string) { } public getLayout(): string { const oldCookie = this.getCookie('uhr-language'); if (oldCookie) { // aha, old cookie is set. migrate to new one! this.removeCookie('uhr-language'); this.setLayout(oldCookie); } return this.getCookie('uhr-layout'); } public setLayout(layout: string): void { this.setCookie('uhr-layout', layout); } public getMode(): string { return this.getCookie('uhr-mode'); } public setMode(mode: string): void { this.setCookie('uhr-mode', mode); } public getStatus(): string { return this.getCookie('uhr-status'); } public setStatus(status: string): void { this.setCookie('uhr-status', status); } public getTheme(): string { return this.getCookie('uhr-theme'); } public setTheme(theme: string): void { this.setCookie('uhr-theme', theme); } private getCookie(cookieName: string): string { return Cookies.get(cookieName + this.widgetId); } private setCookie(cookieName: string, cookieValue: string): void { let options; if (this.cookiePath) { options = {expires: 365, path: this.cookiePath}; } else { options = {expires: 365}; } Cookies.set(cookieName + this.widgetId, cookieValue, options); } private removeCookie(cookieName: string): void { if (this.cookiePath) { Cookies.remove(cookieName + this.widgetId, {path: this.cookiePath}); } else { Cookies.remove(cookieName + this.widgetId); } } }