mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-23 11:56:00 +01:00
poll new revision date instead of full sync each time
This commit is contained in:
parent
c18cdd6206
commit
bb56f9ee47
@ -618,10 +618,11 @@ setInterval(fullSync, 5 * 60 * 1000); // check every 5 minutes
|
||||
var syncInternal = 6 * 60 * 60 * 1000; // 6 hours
|
||||
|
||||
function fullSync(override) {
|
||||
override = override || false;
|
||||
syncService.getLastSync(function (lastSync) {
|
||||
var now = new Date();
|
||||
if (override || !lastSync || (now - lastSync) >= syncInternal) {
|
||||
syncService.fullSync(function () { });
|
||||
syncService.fullSync(override, function () { });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
$scope.sync = function () {
|
||||
$scope.loading = true;
|
||||
syncService.fullSync(function () {
|
||||
syncService.fullSync(true, function () {
|
||||
$analytics.eventTrack('Synced Full');
|
||||
$scope.loading = false;
|
||||
toastr.success(i18nService.syncingComplete);
|
||||
|
@ -46,6 +46,23 @@ function initApiService() {
|
||||
|
||||
// Account APIs
|
||||
|
||||
ApiService.prototype.getAccountRevisionDate = function (success, error) {
|
||||
var self = this;
|
||||
this.tokenService.getToken(function (token) {
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: self.baseUrl + '/accounts/revision-date?access_token=' + token,
|
||||
dataType: 'json',
|
||||
success: function (response) {
|
||||
success(response);
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
handleError(error, jqXHR, textStatus, errorThrown);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
ApiService.prototype.getProfile = function (success, error) {
|
||||
var self = this;
|
||||
this.tokenService.getToken(function (token) {
|
||||
|
@ -10,7 +10,7 @@
|
||||
};
|
||||
|
||||
function initSyncService() {
|
||||
SyncService.prototype.fullSync = function (callback) {
|
||||
SyncService.prototype.fullSync = function (forceSync, callback) {
|
||||
if (!callback || typeof callback !== 'function') {
|
||||
throw 'callback function required';
|
||||
}
|
||||
@ -27,24 +27,56 @@ function initSyncService() {
|
||||
|
||||
self.userService.getUserId(function (userId) {
|
||||
var now = new Date();
|
||||
needsSyncing(self, forceSync, function (needsSync) {
|
||||
if (!needsSync) {
|
||||
self.syncCompleted(false);
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
|
||||
var promises = [];
|
||||
promises.push(syncVault(userId));
|
||||
promises.push(syncSettings(userId));
|
||||
var promises = [];
|
||||
promises.push(syncVault(userId));
|
||||
promises.push(syncSettings(userId));
|
||||
|
||||
Q.all(promises).then(function () {
|
||||
self.setLastSync(now, function () {
|
||||
self.syncCompleted(true);
|
||||
callback(true);
|
||||
Q.all(promises).then(function () {
|
||||
self.setLastSync(now, function () {
|
||||
self.syncCompleted(true);
|
||||
callback(true);
|
||||
});
|
||||
}, function () {
|
||||
self.syncCompleted(false);
|
||||
callback(false);
|
||||
});
|
||||
}, function () {
|
||||
self.syncCompleted(false);
|
||||
callback(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
function needsSyncing(self, forceSync, callback) {
|
||||
if (!callback || typeof callback !== 'function') {
|
||||
throw 'callback function required';
|
||||
}
|
||||
|
||||
if (forceSync) {
|
||||
callback(true);
|
||||
return;
|
||||
}
|
||||
|
||||
self.getLastSync(function (lastSync) {
|
||||
var now = new Date();
|
||||
|
||||
self.apiService.getAccountRevisionDate(function (response) {
|
||||
var accountRevisionDate = new Date(response);
|
||||
if (accountRevisionDate <= lastSync) {
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
|
||||
callback(true);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function syncVault(userId) {
|
||||
var deferred = Q.defer();
|
||||
var self = this;
|
||||
|
Loading…
Reference in New Issue
Block a user