mirror of
https://github.com/bitwarden/desktop.git
synced 2024-09-19 02:41:35 +02:00
convert to using new sync api
This commit is contained in:
parent
d1fb388ea3
commit
fd538494c0
@ -166,3 +166,27 @@ var DomainsResponse = function (response) {
|
|||||||
this.globalEquivalentDomains.push(new GlobalDomainResponse(globalEquivalentDomains[i]));
|
this.globalEquivalentDomains.push(new GlobalDomainResponse(globalEquivalentDomains[i]));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var SyncResponse = function (response) {
|
||||||
|
if (response.Profile) {
|
||||||
|
this.profile = new ProfileResponse(response.Profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.folders = [];
|
||||||
|
if (response.Folders) {
|
||||||
|
for (var i = 0; i < response.Folders.length; i++) {
|
||||||
|
this.folders.push(new FolderResponse(response.Folders[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.ciphers = [];
|
||||||
|
if (response.Ciphers) {
|
||||||
|
for (var i = 0; i < response.Ciphers.length; i++) {
|
||||||
|
this.ciphers.push(new CipherResponse(response.Ciphers[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (response.Domains) {
|
||||||
|
this.domains = new DomainsResponse(response.Domains);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ -30,8 +30,8 @@ function initApiService() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Desktop
|
// Desktop
|
||||||
//self.baseUrl = 'http://localhost:4000';
|
self.baseUrl = 'http://localhost:4000';
|
||||||
//self.identityBaseUrl = 'http://localhost:33656';
|
self.identityBaseUrl = 'http://localhost:33656';
|
||||||
|
|
||||||
// Desktop HTTPS
|
// Desktop HTTPS
|
||||||
//self.baseUrl = 'https://localhost:44377';
|
//self.baseUrl = 'https://localhost:44377';
|
||||||
@ -46,8 +46,8 @@ function initApiService() {
|
|||||||
//self.identityBaseUrl = 'https://preview-identity.bitwarden.com';
|
//self.identityBaseUrl = 'https://preview-identity.bitwarden.com';
|
||||||
|
|
||||||
// Production
|
// Production
|
||||||
self.baseUrl = 'https://api.bitwarden.com';
|
//self.baseUrl = 'https://api.bitwarden.com';
|
||||||
self.identityBaseUrl = 'https://identity.bitwarden.com';
|
//self.identityBaseUrl = 'https://identity.bitwarden.com';
|
||||||
};
|
};
|
||||||
|
|
||||||
// Auth APIs
|
// Auth APIs
|
||||||
@ -138,26 +138,6 @@ function initApiService() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
ApiService.prototype.getProfile = function (success, error) {
|
|
||||||
var self = this;
|
|
||||||
handleTokenState(self).then(function (tokenHeader) {
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: self.baseUrl + '/accounts/profile',
|
|
||||||
dataType: 'json',
|
|
||||||
headers: tokenHeader,
|
|
||||||
success: function (response) {
|
|
||||||
success(new ProfileResponse(response));
|
|
||||||
},
|
|
||||||
error: function (jqXHR, textStatus, errorThrown) {
|
|
||||||
handleError(error, jqXHR, false, self);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, function (jqXHR) {
|
|
||||||
handleError(error, jqXHR, true, self);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
ApiService.prototype.getKeys = function (success, error) {
|
ApiService.prototype.getKeys = function (success, error) {
|
||||||
var self = this;
|
var self = this;
|
||||||
handleTokenState(self).then(function (tokenHeader) {
|
handleTokenState(self).then(function (tokenHeader) {
|
||||||
@ -212,28 +192,6 @@ function initApiService() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// Settings APIs
|
|
||||||
|
|
||||||
ApiService.prototype.getIncludedDomains = function (success, error) {
|
|
||||||
var self = this;
|
|
||||||
handleTokenState(self).then(function (tokenHeader) {
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: self.baseUrl + '/settings/domains?excluded=false',
|
|
||||||
dataType: 'json',
|
|
||||||
headers: tokenHeader,
|
|
||||||
success: function (response) {
|
|
||||||
success(new DomainsResponse(response));
|
|
||||||
},
|
|
||||||
error: function (jqXHR, textStatus, errorThrown) {
|
|
||||||
handleError(error, jqXHR, false, self);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, function (jqXHR) {
|
|
||||||
handleError(error, jqXHR, true, self);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// Login APIs
|
// Login APIs
|
||||||
|
|
||||||
ApiService.prototype.getLogin = function (id, success, error) {
|
ApiService.prototype.getLogin = function (id, success, error) {
|
||||||
@ -322,31 +280,6 @@ function initApiService() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
ApiService.prototype.getFolders = function (success, error) {
|
|
||||||
var self = this;
|
|
||||||
handleTokenState(self).then(function (tokenHeader) {
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: self.baseUrl + '/folders',
|
|
||||||
dataType: 'json',
|
|
||||||
headers: tokenHeader,
|
|
||||||
success: function (response) {
|
|
||||||
var data = [];
|
|
||||||
for (var i = 0; i < response.Data.length; i++) {
|
|
||||||
data.push(new FolderResponse(response.Data[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
success(new ListResponse(data));
|
|
||||||
},
|
|
||||||
error: function (jqXHR, textStatus, errorThrown) {
|
|
||||||
handleError(error, jqXHR, false, self);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, function (jqXHR) {
|
|
||||||
handleError(error, jqXHR, true, self);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
ApiService.prototype.postFolder = function (folderRequest, success, error) {
|
ApiService.prototype.postFolder = function (folderRequest, success, error) {
|
||||||
var self = this;
|
var self = this;
|
||||||
handleTokenState(self).then(function (tokenHeader) {
|
handleTokenState(self).then(function (tokenHeader) {
|
||||||
@ -433,31 +366,6 @@ function initApiService() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
ApiService.prototype.getCiphers = function (success, error) {
|
|
||||||
var self = this;
|
|
||||||
handleTokenState(self).then(function (tokenHeader) {
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: self.baseUrl + '/ciphers',
|
|
||||||
dataType: 'json',
|
|
||||||
headers: tokenHeader,
|
|
||||||
success: function (response) {
|
|
||||||
var data = [];
|
|
||||||
for (var i = 0; i < response.Data.length; i++) {
|
|
||||||
data.push(new CipherResponse(response.Data[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
success(new ListResponse(data));
|
|
||||||
},
|
|
||||||
error: function (jqXHR, textStatus, errorThrown) {
|
|
||||||
handleError(error, jqXHR, false, self);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, function (jqXHR) {
|
|
||||||
handleError(error, jqXHR, true, self);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
ApiService.prototype.deleteCipher = function (id, success, error) {
|
ApiService.prototype.deleteCipher = function (id, success, error) {
|
||||||
var self = this;
|
var self = this;
|
||||||
handleTokenState(self).then(function (tokenHeader) {
|
handleTokenState(self).then(function (tokenHeader) {
|
||||||
@ -521,6 +429,28 @@ function initApiService() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Sync APIs
|
||||||
|
|
||||||
|
ApiService.prototype.getSync = function (success, error) {
|
||||||
|
var self = this;
|
||||||
|
handleTokenState(self).then(function (tokenHeader) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: self.baseUrl + '/sync',
|
||||||
|
dataType: 'json',
|
||||||
|
headers: tokenHeader,
|
||||||
|
success: function (response) {
|
||||||
|
success(new SyncResponse(response));
|
||||||
|
},
|
||||||
|
error: function (jqXHR, textStatus, errorThrown) {
|
||||||
|
handleError(error, jqXHR, false, self);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, function (jqXHR) {
|
||||||
|
handleError(error, jqXHR, true, self);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
|
|
||||||
function handleError(errorCallback, jqXHR, tokenError, self) {
|
function handleError(errorCallback, jqXHR, tokenError, self) {
|
||||||
|
@ -53,16 +53,17 @@ function initSyncService() {
|
|||||||
|
|
||||||
log('starting sync');
|
log('starting sync');
|
||||||
self.userService.getUserId(function (userId) {
|
self.userService.getUserId(function (userId) {
|
||||||
|
self.apiService.getSync(function (response) {
|
||||||
log('sync profile');
|
log('sync profile');
|
||||||
syncProfile(self).then(function () {
|
syncProfile(self, response.profile).then(function () {
|
||||||
log('sync folders');
|
log('sync folders');
|
||||||
return syncFolders(self, userId);
|
return syncFolders(self, userId, response.folders);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
log('sync ciphers');
|
log('sync ciphers');
|
||||||
return syncCiphers(self, userId);
|
return syncCiphers(self, userId, response.ciphers);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
log('sync settings');
|
log('sync settings');
|
||||||
return syncSettings(self, userId);
|
return syncSettings(self, userId, response.domains);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
log('all done with the syncs - ' + now);
|
log('all done with the syncs - ' + now);
|
||||||
self.setLastSync(now, function () {
|
self.setLastSync(now, function () {
|
||||||
@ -77,6 +78,7 @@ function initSyncService() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function needsSyncing(self, forceSync, callback) {
|
function needsSyncing(self, forceSync, callback) {
|
||||||
@ -110,10 +112,9 @@ function initSyncService() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncProfile(self) {
|
function syncProfile(self, response) {
|
||||||
var deferred = Q.defer();
|
var deferred = Q.defer();
|
||||||
|
|
||||||
self.apiService.getProfile(function (response) {
|
|
||||||
self.userService.getSecurityStamp().then(function (stamp) {
|
self.userService.getSecurityStamp().then(function (stamp) {
|
||||||
if (stamp && stamp !== response.securityStamp) {
|
if (stamp && stamp !== response.securityStamp) {
|
||||||
if (self.logoutCallback) {
|
if (self.logoutCallback) {
|
||||||
@ -142,41 +143,33 @@ function initSyncService() {
|
|||||||
}, function () {
|
}, function () {
|
||||||
deferred.reject();
|
deferred.reject();
|
||||||
});
|
});
|
||||||
}, function () {
|
|
||||||
deferred.reject();
|
|
||||||
});
|
|
||||||
|
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncFolders(self, userId) {
|
function syncFolders(self, userId, response) {
|
||||||
var deferred = Q.defer();
|
var deferred = Q.defer();
|
||||||
|
|
||||||
self.apiService.getFolders(function (response) {
|
|
||||||
var folders = {};
|
var folders = {};
|
||||||
|
|
||||||
for (var i = 0; i < response.data.length; i++) {
|
for (var i = 0; i < response.length; i++) {
|
||||||
folders[response.data[i].id] = new FolderData(response.data[i], userId);
|
folders[response[i].id] = new FolderData(response[i], userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.folderService.replace(folders, function () {
|
self.folderService.replace(folders, function () {
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
});
|
});
|
||||||
}, function () {
|
|
||||||
deferred.reject();
|
|
||||||
});
|
|
||||||
|
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncCiphers(self, userId) {
|
function syncCiphers(self, userId, response) {
|
||||||
var deferred = Q.defer();
|
var deferred = Q.defer();
|
||||||
|
|
||||||
self.apiService.getCiphers(function (response) {
|
|
||||||
var logins = {};
|
var logins = {};
|
||||||
|
|
||||||
for (var i = 0; i < response.data.length; i++) {
|
for (var i = 0; i < response.length; i++) {
|
||||||
var data = response.data[i];
|
var data = response[i];
|
||||||
if (data.type === 1) {
|
if (data.type === 1) {
|
||||||
logins[data.id] = new LoginData(data, userId);
|
logins[data.id] = new LoginData(data, userId);
|
||||||
}
|
}
|
||||||
@ -185,17 +178,13 @@ function initSyncService() {
|
|||||||
self.loginService.replace(logins, function () {
|
self.loginService.replace(logins, function () {
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
});
|
});
|
||||||
}, function () {
|
|
||||||
deferred.reject();
|
|
||||||
});
|
|
||||||
|
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncSettings(self, userId) {
|
function syncSettings(self, userId, response) {
|
||||||
var deferred = Q.defer();
|
var deferred = Q.defer();
|
||||||
|
|
||||||
var ciphers = self.apiService.getIncludedDomains(function (response) {
|
|
||||||
var eqDomains = [];
|
var eqDomains = [];
|
||||||
if (response && response.equivalentDomains) {
|
if (response && response.equivalentDomains) {
|
||||||
eqDomains = eqDomains.concat(response.equivalentDomains);
|
eqDomains = eqDomains.concat(response.equivalentDomains);
|
||||||
@ -211,9 +200,6 @@ function initSyncService() {
|
|||||||
self.settingsService.setEquivalentDomains(eqDomains, function () {
|
self.settingsService.setEquivalentDomains(eqDomains, function () {
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
});
|
});
|
||||||
}, function () {
|
|
||||||
deferred.reject();
|
|
||||||
});
|
|
||||||
|
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user