1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 08:13:42 +00:00

folder service to ts

This commit is contained in:
Kyle Spearrin
2017-11-04 21:09:26 -04:00
parent b1da228c36
commit 11edb0261b
6 changed files with 235 additions and 1 deletions

View File

@@ -0,0 +1,42 @@
import { CipherString } from '../domain/cipherString';
export default abstract class Domain {
protected buildDomainModel(model: any, obj: any, map: any, alreadyEncrypted: boolean, notEncList: any = []) {
for (var prop in map) {
if (map.hasOwnProperty(prop)) {
var objProp = obj[(map[prop] || prop)];
if (alreadyEncrypted === true || notEncList.indexOf(prop) > -1) {
model[prop] = objProp ? objProp : null;
} else {
model[prop] = objProp ? new CipherString(objProp) : null;
}
}
}
}
protected async decryptObj(model: any, self: any, map: any, orgId: string) {
var promises = [];
for (let prop in map) {
if (!map.hasOwnProperty(prop)) {
continue;
}
(function (theProp) {
let promise = Promise.resolve().then(function () {
var mapProp = map[theProp] || theProp;
if (self[mapProp]) {
return self[mapProp].decrypt(orgId);
}
return null;
}).then(function (val) {
model[theProp] = val;
return;
});
promises.push(promise);
})(prop);
}
await Promise.all(promises);
return model;
}
}

View File

@@ -0,0 +1,35 @@
import { CipherString } from './cipherString';
import { FolderData } from '../data/folderData'
import Domain from './domain'
class Folder extends Domain {
id: string;
name: CipherString;
constructor(obj?: FolderData, alreadyEncrypted: boolean = false) {
super();
if(obj == null) {
return;
}
this.buildDomainModel(this, obj, {
id: null,
name: null
}, alreadyEncrypted, ['id']);
}
async decrypt(): Promise<any> {
var self = this;
var model = {
id: self.id
};
return await this.decryptObj(model, this, {
name: null
}, null);
}
}
export { Folder };
(window as any).Folder = Folder;