From 23d017d67f3120aa128a3c07d20104a2567585e1 Mon Sep 17 00:00:00 2001 From: Pavel Djundik Date: Thu, 18 Feb 2016 21:19:18 +0200 Subject: [PATCH] Replace cookies with localStorage --- client/js/libs/jquery/cookie.js | 117 -------------------------------- client/js/lounge.js | 46 +++---------- 2 files changed, 11 insertions(+), 152 deletions(-) delete mode 100644 client/js/libs/jquery/cookie.js diff --git a/client/js/libs/jquery/cookie.js b/client/js/libs/jquery/cookie.js deleted file mode 100644 index c7f3a59b..00000000 --- a/client/js/libs/jquery/cookie.js +++ /dev/null @@ -1,117 +0,0 @@ -/*! - * jQuery Cookie Plugin v1.4.1 - * https://github.com/carhartl/jquery-cookie - * - * Copyright 2013 Klaus Hartl - * Released under the MIT license - */ -(function (factory) { - if (typeof define === 'function' && define.amd) { - // AMD - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // CommonJS - factory(require('jquery')); - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - - var pluses = /\+/g; - - function encode(s) { - return config.raw ? s : encodeURIComponent(s); - } - - function decode(s) { - return config.raw ? s : decodeURIComponent(s); - } - - function stringifyCookieValue(value) { - return encode(config.json ? JSON.stringify(value) : String(value)); - } - - function parseCookieValue(s) { - if (s.indexOf('"') === 0) { - // This is a quoted cookie as according to RFC2068, unescape... - s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); - } - - try { - // Replace server-side written pluses with spaces. - // If we can't decode the cookie, ignore it, it's unusable. - // If we can't parse the cookie, ignore it, it's unusable. - s = decodeURIComponent(s.replace(pluses, ' ')); - return config.json ? JSON.parse(s) : s; - } catch(e) {} - } - - function read(s, converter) { - var value = config.raw ? s : parseCookieValue(s); - return $.isFunction(converter) ? converter(value) : value; - } - - var config = $.cookie = function (key, value, options) { - - // Write - - if (value !== undefined && !$.isFunction(value)) { - options = $.extend({}, config.defaults, options); - - if (typeof options.expires === 'number') { - var days = options.expires, t = options.expires = new Date(); - t.setTime(+t + days * 864e+5); - } - - return (document.cookie = [ - encode(key), '=', stringifyCookieValue(value), - options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE - options.path ? '; path=' + options.path : '', - options.domain ? '; domain=' + options.domain : '', - options.secure ? '; secure' : '' - ].join('')); - } - - // Read - - var result = key ? undefined : {}; - - // To prevent the for loop in the first place assign an empty array - // in case there are no cookies at all. Also prevents odd result when - // calling $.cookie(). - var cookies = document.cookie ? document.cookie.split('; ') : []; - - for (var i = 0, l = cookies.length; i < l; i++) { - var parts = cookies[i].split('='); - var name = decode(parts.shift()); - var cookie = parts.join('='); - - if (key && key === name) { - // If second argument (value) is a function it's a converter... - result = read(cookie, value); - break; - } - - // Prevent storing a cookie that we couldn't decode. - if (!key && (cookie = read(cookie)) !== undefined) { - result[name] = cookie; - } - } - - return result; - }; - - config.defaults = {}; - - $.removeCookie = function (key, options) { - if ($.cookie(key) === undefined) { - return false; - } - - // Must not alter options, thus extending a fresh object... - $.cookie(key, '', $.extend({}, options, { expires: -1 })); - return !$.cookie(key); - }; - -})); diff --git a/client/js/lounge.js b/client/js/lounge.js index 5be4bc22..daa2fb78 100644 --- a/client/js/lounge.js +++ b/client/js/lounge.js @@ -83,9 +83,9 @@ $(function() { return; } login.find(".btn").prop("disabled", false); - var token = $.cookie("token"); + var token = window.localStorage.getItem("token"); if (token) { - $.removeCookie("token"); + window.localStorage.removeItem("token"); socket.emit("auth", {token: token}); } if (body.hasClass("signed-out")) { @@ -99,7 +99,7 @@ $(function() { } var input = login.find("input[name='user']"); if (input.val() === "") { - input.val($.cookie("user") || ""); + input.val(window.localStorage.getItem("user") || ""); } if (token) { return; @@ -136,12 +136,7 @@ $(function() { } if (data.token) { - $.cookie( - "token", - data.token, { - expires: expire(30) - } - ); + window.localStorage.setItem("token", data.token); } $("body").removeClass("signed-out"); @@ -403,8 +398,6 @@ $(function() { users.data("nicks", nicks); }); - $.cookie.json = true; - var settings = $("#settings"); var options = $.extend({ badge: false, @@ -419,7 +412,7 @@ $(function() { thumbnails: true, quit: true, notifyAllMessages: false, - }, $.cookie("settings")); + }, JSON.parse(window.localStorage.getItem("settings"))); for (var i in options) { if (options[i]) { @@ -431,12 +424,7 @@ $(function() { var self = $(this); var name = self.attr("name"); options[name] = self.prop("checked"); - $.cookie( - "settings", - options, { - expires: expire(365) - } - ); + window.localStorage.setItem("settings", JSON.stringify(options)); if ([ "join", "mode", @@ -579,7 +567,7 @@ $(function() { }); sidebar.on("click", "#sign-out", function() { - $.removeCookie("token"); + window.localStorage.removeItem("token"); location.reload(); }); @@ -647,14 +635,13 @@ $(function() { var type = msg.type; var highlight = type.contains("highlight"); var message = type.contains("message"); - var settings = $.cookie("settings") || {}; - if (highlight || isQuery || (settings.notifyAllMessages && message)) { + if (highlight || isQuery || (options.notifyAllMessages && message)) { if (!document.hasFocus() || !$(target).hasClass("active")) { - if (settings.notification) { + if (options.notification) { pop.play(); } favico.badge("!"); - if (settings.badge && Notification.permission === "granted") { + if (options.badge && Notification.permission === "granted") { var notify = new Notification(msg.from + " says:", { body: msg.text.trim(), icon: "img/logo-64.png", @@ -763,12 +750,7 @@ $(function() { } }); if (values.user) { - $.cookie( - "user", - values.user, { - expires: expire(30) - } - ); + window.localStorage.setItem("user", values.user); } socket.emit( event, values @@ -875,12 +857,6 @@ $(function() { location.reload(); } - function expire(days) { - var date = new Date(); - date.setTime(date.getTime() + ((3600 * 1000 * 24) * days)); - return date; - } - function sortable() { sidebar.sortable({ axis: "y",