| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | const STORAGE_NAME = 'nginx-proxy-manager-tokens';/** * @returns {Array} */const getStorageTokens = function () {    let json = window.localStorage.getItem(STORAGE_NAME);    if (json) {        try {            return JSON.parse(json);        } catch (err) {            return [];        }    }    return [];};/** * @param  {Array}  tokens */const setStorageTokens = function (tokens) {    window.localStorage.setItem(STORAGE_NAME, JSON.stringify(tokens));};const Tokens = {    /**     * @returns {Number}     */    getTokenCount: () => {        return getStorageTokens().length;    },    /**     * @returns {Object}    t,n     */    getTopToken: () => {        let tokens = getStorageTokens();        if (tokens && tokens.length) {            return tokens[0];        }        return null;    },    /**     * @returns {String}     */    getNextTokenName: () => {        let tokens = getStorageTokens();        if (tokens && tokens.length > 1 && typeof tokens[1] !== 'undefined' && typeof tokens[1].n !== 'undefined') {            return tokens[1].n;        }        return null;    },    /**     *     * @param   {String}  token     * @param   {String}  [name]     * @returns {Number}     */    addToken: (token, name) => {        // Get top token and if it's the same, ignore this call        let top = Tokens.getTopToken();        if (!top || top.t !== token) {            let tokens = getStorageTokens();            tokens.unshift({t: token, n: name || null});            setStorageTokens(tokens);        }        return Tokens.getTokenCount();    },    /**     * @param   {String}  token     * @returns {Boolean}     */    setCurrentToken: token => {        let tokens = getStorageTokens();        if (tokens.length) {            tokens[0].t = token;            setStorageTokens(tokens);            return true;        }        return false;    },    /**     * @param   {String}  name     * @returns {Boolean}     */    setCurrentName: name => {        let tokens = getStorageTokens();        if (tokens.length) {            tokens[0].n = name;            setStorageTokens(tokens);            return true;        }        return false;    },    /**     * @returns {Number}     */    dropTopToken: () => {        let tokens = getStorageTokens();        tokens.shift();        setStorageTokens(tokens);        return tokens.length;    },    /**     *     */    clearTokens: () => {        window.localStorage.removeItem(STORAGE_NAME);    }};module.exports = Tokens;
 |