From e492945fcbb49ae5be4b8459e226643a405aca0c Mon Sep 17 00:00:00 2001 From: Dan Seripap Date: Wed, 17 Feb 2016 22:13:25 -0500 Subject: [PATCH] Abstracted some window events --- src/js/main.js | 23 ++++------------------- src/js/window.js | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 19 deletions(-) create mode 100644 src/js/window.js diff --git a/src/js/main.js b/src/js/main.js index c2f448e..dcda95f 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -1,18 +1,14 @@ import AudioHandler from './audio'; import CryptoUtil from './crypto'; +import WindowHandler from './window'; let fs = window.RequestFileSystem || window.webkitRequestFileSystem; -window.favicon = new Favico({ - animation:'pop', - type : 'rectangle' -}); - $(function() { const audio = new AudioHandler(); const cryptoUtil = new CryptoUtil(); + const windowHandler = new WindowHandler(); - let isActive = false; let newMessages = 0; let FADE_TIME = 150; // ms let TYPING_TIMER_LENGTH = 400; // ms @@ -428,9 +424,8 @@ $(function() { // Whenever the server emits 'new message', update the chat body socket.on('new message', function (data) { // Don't show messages if no key - if (!isActive) { - newMessages++; - favicon.badge(newMessages); + if (!windowHandler.isActive) { + windowHandler.notifyFavicon(); audio.play(); } @@ -505,16 +500,6 @@ $(function() { initChat(); - window.onfocus = function () { - isActive = true; - newMessages = 0; - favicon.reset(); - }; - - window.onblur = function () { - isActive = false; - }; - // Nav links $('a#settings-nav').click(function() { $('#settings-modal').modal('show'); diff --git a/src/js/window.js b/src/js/window.js new file mode 100644 index 0000000..88e217f --- /dev/null +++ b/src/js/window.js @@ -0,0 +1,40 @@ +export default class WindowHandler { + constructor() { + this._isActive = false; + + this.newMessages = 0; + this.favicon = new Favico({ + animation:'pop', + type : 'rectangle' + }); + + this.bindEvents(); + } + + get isActive() { + return this._isActive; + } + + set isActive(active) { + this._isActive = active; + return this; + } + + notifyFavicon() { + this.newMessages++; + this.favicon.badge(this.newMessages); + } + + bindEvents() { + window.onfocus = () => { + this._isActive = true; + this.newMessages = 0; + this.favicon.reset(); + }; + + window.onblur = () => { + this._isActive = false; + }; + } + +}