From f84bfcb19a6297b79e3f66919d539ee60f308932 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 17 Jan 2017 21:43:26 -0500 Subject: [PATCH] fix sync bugs on login/logout --- src/background.js | 2 +- src/popup/app/services/authService.js | 29 ++++++++++++--------- src/popup/app/services/backgroundService.js | 3 +++ src/popup/app/vault/vaultController.js | 2 +- src/services/loginService.js | 7 ++--- src/services/syncService.js | 4 --- 6 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/background.js b/src/background.js index 5ece7320cf..ae98520c81 100644 --- a/src/background.js +++ b/src/background.js @@ -622,7 +622,7 @@ function fullSync(override) { syncService.getLastSync(function (lastSync) { var now = new Date(); if (override || !lastSync || (now - lastSync) >= syncInternal) { - syncService.fullSync(override, function () { }); + syncService.fullSync(override || false, function () { }); } }); } diff --git a/src/popup/app/services/authService.js b/src/popup/app/services/authService.js index 1f7fd68f0b..d3b707b4a3 100644 --- a/src/popup/app/services/authService.js +++ b/src/popup/app/services/authService.js @@ -2,7 +2,7 @@ .module('bit.services') .factory('authService', function (cryptoService, apiService, userService, tokenService, $q, $rootScope, loginService, - folderService) { + folderService, settingsService, syncService) { var _service = {}; _service.logIn = function (email, masterPassword) { @@ -66,19 +66,24 @@ return deferred.promise; }; + // TODO: Fix callback hell by moving to promises _service.logOut = function (callback) { userService.getUserId(function (userId) { - tokenService.clearToken(function () { - cryptoService.clearKey(function () { - cryptoService.clearKeyHash(function () { - userService.clearUserId(function () { - userService.clearEmail(function () { - loginService.clear(userId, function () { - folderService.clear(userId, function () { - $rootScope.vaultLogins = null; - $rootScope.vaultFolders = null; - chrome.runtime.sendMessage({ command: 'loggedOut' }); - callback(); + syncService.setLastSync(new Date(0), function () { + settingsService.clear(function () { + tokenService.clearToken(function () { + cryptoService.clearKey(function () { + cryptoService.clearKeyHash(function () { + userService.clearUserId(function () { + userService.clearEmail(function () { + loginService.clear(userId, function () { + folderService.clear(userId, function () { + $rootScope.vaultLogins = null; + $rootScope.vaultFolders = null; + chrome.runtime.sendMessage({ command: 'loggedOut' }); + callback(); + }); + }); }); }); }); diff --git a/src/popup/app/services/backgroundService.js b/src/popup/app/services/backgroundService.js index 891abb4dd8..ccc6064c9b 100644 --- a/src/popup/app/services/backgroundService.js +++ b/src/popup/app/services/backgroundService.js @@ -42,4 +42,7 @@ }) .factory('constantsService', function () { return chrome.extension.getBackgroundPage().constantsService; + }) + .factory('settingsService', function () { + return chrome.extension.getBackgroundPage().settingsService; }); diff --git a/src/popup/app/vault/vaultController.js b/src/popup/app/vault/vaultController.js index f21bc1780b..6d11b49532 100644 --- a/src/popup/app/vault/vaultController.js +++ b/src/popup/app/vault/vaultController.js @@ -13,7 +13,7 @@ if (syncOnLoad) { $scope.$on('$viewContentLoaded', function () { $timeout(function () { - syncService.fullSync(function () { }); + syncService.fullSync(true, function () { }); }, 0); }); } diff --git a/src/services/loginService.js b/src/services/loginService.js index c18e168b18..2c45cef6c3 100644 --- a/src/services/loginService.js +++ b/src/services/loginService.js @@ -137,11 +137,8 @@ function initLoginService() { var eqDomainsPromise = self.settingsService.getEquivalentDomains().then(function (eqDomains) { var matchingDomains = []; for (var i = 0; i < eqDomains.length; i++) { - for (var j = 0; j < eqDomains[i].length; j++) { - if (eqDomains[i][j] === domain) { - matchingDomains = matchingDomains.concat(eqDomains[i]); - break; - } + if (eqDomains[i].length && eqDomains[i].indexOf(domain) >= 0) { + matchingDomains = matchingDomains.concat(eqDomains[i]); } } diff --git a/src/services/syncService.js b/src/services/syncService.js index fff916d1fc..567116c35b 100644 --- a/src/services/syncService.js +++ b/src/services/syncService.js @@ -230,10 +230,6 @@ function initSyncService() { throw 'callback function required'; } - if (!(date instanceof Date)) { - throw 'date must be a Date object'; - } - this.userService.getUserId(function (userId) { var lastSyncKey = 'lastSync_' + userId;