From 9bc0a2b764c53d620afbb47982ae506502b46886 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Sat, 20 May 2017 10:35:21 -0500 Subject: [PATCH] private browsing error alert --- .../javascripts/app/services/authManager.js | 30 ++++++++++++------- .../javascripts/app/services/dbManager.js | 11 +++++-- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/app/services/authManager.js b/app/assets/javascripts/app/services/authManager.js index b972ea0b1..c83b06116 100644 --- a/app/assets/javascripts/app/services/authManager.js +++ b/app/assets/javascripts/app/services/authManager.js @@ -7,11 +7,11 @@ angular.module('app.frontend') return domain; } - this.$get = function($rootScope, httpManager, modelManager) { - return new AuthManager($rootScope, httpManager, modelManager); + this.$get = function($rootScope, httpManager, modelManager, dbManager) { + return new AuthManager($rootScope, httpManager, modelManager, dbManager); } - function AuthManager($rootScope, httpManager, modelManager) { + function AuthManager($rootScope, httpManager, modelManager, dbManager) { var userData = localStorage.getItem("user"); if(userData) { @@ -41,7 +41,11 @@ angular.module('app.frontend') } this.keys = function() { - var keys = {mk: localStorage.getItem("mk")}; + var mk = localStorage.getItem("mk"); + if(!mk) { + return null; + } + var keys = {mk: mk}; if(!localStorage.getItem("encryptionKey")) { _.merge(keys, Neeto.crypto.generateKeysFromMasterKey(keys.mk)); localStorage.setItem("encryptionKey", keys.encryptionKey); @@ -106,14 +110,18 @@ angular.module('app.frontend') } this.handleAuthResponse = function(response, email, url, authParams, mk, pw) { - if(url) { - localStorage.setItem("server", url); + try { + if(url) { + localStorage.setItem("server", url); + } + localStorage.setItem("user", JSON.stringify(response.user)); + localStorage.setItem("auth_params", JSON.stringify(_.omit(authParams, ["pw_nonce"]))); + localStorage.setItem("mk", mk); + localStorage.setItem("pw", pw); + localStorage.setItem("jwt", response.token); + } catch(e) { + dbManager.displayOfflineAlert(); } - localStorage.setItem("user", JSON.stringify(response.user)); - localStorage.setItem("auth_params", JSON.stringify(_.omit(authParams, ["pw_nonce"]))); - localStorage.setItem("mk", mk); - localStorage.setItem("pw", pw); - localStorage.setItem("jwt", response.token); } this.register = function(url, email, password, callback) { diff --git a/app/assets/javascripts/app/services/dbManager.js b/app/assets/javascripts/app/services/dbManager.js index e60a61ceb..063e1e080 100644 --- a/app/assets/javascripts/app/services/dbManager.js +++ b/app/assets/javascripts/app/services/dbManager.js @@ -1,5 +1,12 @@ class DBManager { + displayOfflineAlert() { + var message = "There was an issue loading your offline database. This could happen for two reasons:"; + message += "\n\n1. You're in a private window in your browser. We can't save your data without access to the local database. Please use a non-private window."; + message += "\n\n2. You have two windows of the app open at the same time. Please close any other app instances and reload the page."; + alert(message); + } + openDatabase(callback, onUgradeNeeded) { var request = window.indexedDB.open("standardnotes", 1); @@ -7,13 +14,13 @@ class DBManager { if(event.target.errorCode) { alert("Offline database issue: " + event.target.errorCode); } else { - alert("There was an issue loading your offline database. This usually happens when you have two windows of the app open at the same time. Please close any other app instances and reload the page."); + this.displayOfflineAlert(); } console.error("Offline database issue:", event); if(callback) { callback(null); } - }; + }.bind(this); request.onsuccess = (event) => { var db = event.target.result;