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:
42
src/models/domain/domain.ts
Normal file
42
src/models/domain/domain.ts
Normal 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;
|
||||
}
|
||||
}
|
||||
35
src/models/domain/folder.ts
Normal file
35
src/models/domain/folder.ts
Normal 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;
|
||||
Reference in New Issue
Block a user