convert data models to jslib
This commit is contained in:
parent
a78b8ec79c
commit
5d39030e05
|
@ -1,20 +0,0 @@
|
||||||
import { Response } from '@bitwarden/jslib';
|
|
||||||
|
|
||||||
class AttachmentData {
|
|
||||||
id: string;
|
|
||||||
url: string;
|
|
||||||
fileName: string;
|
|
||||||
size: number;
|
|
||||||
sizeName: string;
|
|
||||||
|
|
||||||
constructor(response: Response.Attachment) {
|
|
||||||
this.id = response.id;
|
|
||||||
this.url = response.url;
|
|
||||||
this.fileName = response.fileName;
|
|
||||||
this.size = response.size;
|
|
||||||
this.sizeName = response.sizeName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { AttachmentData };
|
|
||||||
(window as any).AttachmentData = AttachmentData;
|
|
|
@ -1,20 +0,0 @@
|
||||||
class CardData {
|
|
||||||
cardholderName: string;
|
|
||||||
brand: string;
|
|
||||||
number: string;
|
|
||||||
expMonth: string;
|
|
||||||
expYear: string;
|
|
||||||
code: string;
|
|
||||||
|
|
||||||
constructor(data: any) {
|
|
||||||
this.cardholderName = data.CardholderName;
|
|
||||||
this.brand = data.Brand;
|
|
||||||
this.number = data.Number;
|
|
||||||
this.expMonth = data.ExpMonth;
|
|
||||||
this.expYear = data.ExpYear;
|
|
||||||
this.code = data.Code;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { CardData };
|
|
||||||
(window as any).CardData = CardData;
|
|
|
@ -1,85 +0,0 @@
|
||||||
import { Data, Enums, Response } from '@bitwarden/jslib';
|
|
||||||
|
|
||||||
import { AttachmentData } from './attachmentData';
|
|
||||||
import { CardData } from './cardData';
|
|
||||||
import { FieldData } from './fieldData';
|
|
||||||
import { IdentityData } from './identityData';
|
|
||||||
import { LoginData } from './loginData';
|
|
||||||
import { SecureNoteData } from './secureNoteData';
|
|
||||||
|
|
||||||
class CipherData {
|
|
||||||
id: string;
|
|
||||||
organizationId: string;
|
|
||||||
folderId: string;
|
|
||||||
userId: string;
|
|
||||||
edit: boolean;
|
|
||||||
organizationUseTotp: boolean;
|
|
||||||
favorite: boolean;
|
|
||||||
revisionDate: string;
|
|
||||||
type: Enums.CipherType;
|
|
||||||
sizeName: string;
|
|
||||||
name: string;
|
|
||||||
notes: string;
|
|
||||||
login?: LoginData;
|
|
||||||
secureNote?: SecureNoteData;
|
|
||||||
card?: CardData;
|
|
||||||
identity?: IdentityData;
|
|
||||||
fields?: FieldData[];
|
|
||||||
attachments?: AttachmentData[];
|
|
||||||
collectionIds?: string[];
|
|
||||||
|
|
||||||
constructor(response: Response.Cipher, userId: string, collectionIds?: string[]) {
|
|
||||||
this.id = response.id;
|
|
||||||
this.organizationId = response.organizationId;
|
|
||||||
this.folderId = response.folderId;
|
|
||||||
this.userId = userId;
|
|
||||||
this.edit = response.edit;
|
|
||||||
this.organizationUseTotp = response.organizationUseTotp;
|
|
||||||
this.favorite = response.favorite;
|
|
||||||
this.revisionDate = response.revisionDate;
|
|
||||||
this.type = response.type;
|
|
||||||
|
|
||||||
if (collectionIds != null) {
|
|
||||||
this.collectionIds = collectionIds;
|
|
||||||
} else {
|
|
||||||
this.collectionIds = response.collectionIds;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.name = response.data.Name;
|
|
||||||
this.notes = response.data.Notes;
|
|
||||||
|
|
||||||
switch (this.type) {
|
|
||||||
case Enums.CipherType.Login:
|
|
||||||
this.login = new LoginData(response.data);
|
|
||||||
break;
|
|
||||||
case Enums.CipherType.SecureNote:
|
|
||||||
this.secureNote = new SecureNoteData(response.data);
|
|
||||||
break;
|
|
||||||
case Enums.CipherType.Card:
|
|
||||||
this.card = new CardData(response.data);
|
|
||||||
break;
|
|
||||||
case Enums.CipherType.Identity:
|
|
||||||
this.identity = new IdentityData(response.data);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response.data.Fields != null) {
|
|
||||||
this.fields = [];
|
|
||||||
response.data.Fields.forEach((field: any) => {
|
|
||||||
this.fields.push(new FieldData(field));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response.attachments != null) {
|
|
||||||
this.attachments = [];
|
|
||||||
response.attachments.forEach((attachment) => {
|
|
||||||
this.attachments.push(new AttachmentData(attachment));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { CipherData };
|
|
||||||
(window as any).CipherData = CipherData;
|
|
|
@ -1,16 +0,0 @@
|
||||||
import { Response } from '@bitwarden/jslib';
|
|
||||||
|
|
||||||
class CollectionData {
|
|
||||||
id: string;
|
|
||||||
organizationId: string;
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
constructor(response: Response.Collection) {
|
|
||||||
this.id = response.id;
|
|
||||||
this.organizationId = response.organizationId;
|
|
||||||
this.name = response.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { CollectionData };
|
|
||||||
(window as any).CollectionData = CollectionData;
|
|
|
@ -1,16 +0,0 @@
|
||||||
import { Enums } from '@bitwarden/jslib';
|
|
||||||
|
|
||||||
class FieldData {
|
|
||||||
type: Enums.FieldType;
|
|
||||||
name: string;
|
|
||||||
value: string;
|
|
||||||
|
|
||||||
constructor(response: any) {
|
|
||||||
this.type = response.Type;
|
|
||||||
this.name = response.Name;
|
|
||||||
this.value = response.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { FieldData };
|
|
||||||
(window as any).FieldData = FieldData;
|
|
|
@ -1,18 +0,0 @@
|
||||||
import { Response } from '@bitwarden/jslib';
|
|
||||||
|
|
||||||
class FolderData {
|
|
||||||
id: string;
|
|
||||||
userId: string;
|
|
||||||
name: string;
|
|
||||||
revisionDate: string;
|
|
||||||
|
|
||||||
constructor(response: Response.Folder, userId: string) {
|
|
||||||
this.userId = userId;
|
|
||||||
this.name = response.name;
|
|
||||||
this.id = response.id;
|
|
||||||
this.revisionDate = response.revisionDate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { FolderData };
|
|
||||||
(window as any).FolderData = FolderData;
|
|
|
@ -1,44 +0,0 @@
|
||||||
class IdentityData {
|
|
||||||
title: string;
|
|
||||||
firstName: string;
|
|
||||||
middleName: string;
|
|
||||||
lastName: string;
|
|
||||||
address1: string;
|
|
||||||
address2: string;
|
|
||||||
address3: string;
|
|
||||||
city: string;
|
|
||||||
state: string;
|
|
||||||
postalCode: string;
|
|
||||||
country: string;
|
|
||||||
company: string;
|
|
||||||
email: string;
|
|
||||||
phone: string;
|
|
||||||
ssn: string;
|
|
||||||
username: string;
|
|
||||||
passportNumber: string;
|
|
||||||
licenseNumber: string;
|
|
||||||
|
|
||||||
constructor(data: any) {
|
|
||||||
this.title = data.Title;
|
|
||||||
this.firstName = data.FirstName;
|
|
||||||
this.middleName = data.MiddleName;
|
|
||||||
this.lastName = data.LastName;
|
|
||||||
this.address1 = data.Address1;
|
|
||||||
this.address2 = data.Address2;
|
|
||||||
this.address3 = data.Address3;
|
|
||||||
this.city = data.City;
|
|
||||||
this.state = data.State;
|
|
||||||
this.postalCode = data.PostalCode;
|
|
||||||
this.country = data.Country;
|
|
||||||
this.company = data.Company;
|
|
||||||
this.email = data.Email;
|
|
||||||
this.phone = data.Phone;
|
|
||||||
this.ssn = data.SSN;
|
|
||||||
this.username = data.Username;
|
|
||||||
this.passportNumber = data.PassportNumber;
|
|
||||||
this.licenseNumber = data.LicenseNumber;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { IdentityData };
|
|
||||||
(window as any).IdentityData = IdentityData;
|
|
|
@ -1,16 +0,0 @@
|
||||||
class LoginData {
|
|
||||||
uri: string;
|
|
||||||
username: string;
|
|
||||||
password: string;
|
|
||||||
totp: string;
|
|
||||||
|
|
||||||
constructor(data: any) {
|
|
||||||
this.uri = data.Uri;
|
|
||||||
this.username = data.Username;
|
|
||||||
this.password = data.Password;
|
|
||||||
this.totp = data.Totp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { LoginData };
|
|
||||||
(window as any).LoginData = LoginData;
|
|
|
@ -1,12 +0,0 @@
|
||||||
import { Enums } from '@bitwarden/jslib';
|
|
||||||
|
|
||||||
class SecureNoteData {
|
|
||||||
type: Enums.SecureNoteType;
|
|
||||||
|
|
||||||
constructor(data: any) {
|
|
||||||
this.type = data.Type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { SecureNoteData };
|
|
||||||
(window as any).SecureNoteData = SecureNoteData;
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { AttachmentData } from '../data/attachmentData';
|
import { Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { CipherString } from './cipherString';
|
import { CipherString } from './cipherString';
|
||||||
import Domain from './domain';
|
import Domain from './domain';
|
||||||
|
@ -10,7 +10,7 @@ class Attachment extends Domain {
|
||||||
sizeName: string;
|
sizeName: string;
|
||||||
fileName: CipherString;
|
fileName: CipherString;
|
||||||
|
|
||||||
constructor(obj?: AttachmentData, alreadyEncrypted: boolean = false) {
|
constructor(obj?: Data.Attachment, alreadyEncrypted: boolean = false) {
|
||||||
super();
|
super();
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { CardData } from '../data/cardData';
|
import { Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { CipherString } from './cipherString';
|
import { CipherString } from './cipherString';
|
||||||
import Domain from './domain';
|
import Domain from './domain';
|
||||||
|
@ -11,7 +11,7 @@ class Card extends Domain {
|
||||||
expYear: CipherString;
|
expYear: CipherString;
|
||||||
code: CipherString;
|
code: CipherString;
|
||||||
|
|
||||||
constructor(obj?: CardData, alreadyEncrypted: boolean = false) {
|
constructor(obj?: Data.Card, alreadyEncrypted: boolean = false) {
|
||||||
super();
|
super();
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
import { Abstractions, Enums } from '@bitwarden/jslib';
|
import { Abstractions, Enums, Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { CipherData } from '../data/cipherData';
|
|
||||||
|
|
||||||
import { Attachment } from './attachment';
|
import { Attachment } from './attachment';
|
||||||
import { Card } from './card';
|
import { Card } from './card';
|
||||||
|
@ -30,7 +28,7 @@ class Cipher extends Domain {
|
||||||
fields: Field[];
|
fields: Field[];
|
||||||
collectionIds: string[];
|
collectionIds: string[];
|
||||||
|
|
||||||
constructor(obj?: CipherData, alreadyEncrypted: boolean = false, localData: any = null) {
|
constructor(obj?: Data.Cipher, alreadyEncrypted: boolean = false, localData: any = null) {
|
||||||
super();
|
super();
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { CollectionData } from '../data/collectionData';
|
import { Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { CipherString } from './cipherString';
|
import { CipherString } from './cipherString';
|
||||||
import Domain from './domain';
|
import Domain from './domain';
|
||||||
|
@ -8,7 +8,7 @@ class Collection extends Domain {
|
||||||
organizationId: string;
|
organizationId: string;
|
||||||
name: CipherString;
|
name: CipherString;
|
||||||
|
|
||||||
constructor(obj?: CollectionData, alreadyEncrypted: boolean = false) {
|
constructor(obj?: Data.Collection, alreadyEncrypted: boolean = false) {
|
||||||
super();
|
super();
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
import { Enums } from '@bitwarden/jslib';
|
import { Enums, Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { FieldData } from '../data/fieldData';
|
|
||||||
|
|
||||||
import { CipherString } from './cipherString';
|
import { CipherString } from './cipherString';
|
||||||
import Domain from './domain';
|
import Domain from './domain';
|
||||||
|
@ -10,7 +8,7 @@ class Field extends Domain {
|
||||||
vault: CipherString;
|
vault: CipherString;
|
||||||
type: Enums.FieldType;
|
type: Enums.FieldType;
|
||||||
|
|
||||||
constructor(obj?: FieldData, alreadyEncrypted: boolean = false) {
|
constructor(obj?: Data.Field, alreadyEncrypted: boolean = false) {
|
||||||
super();
|
super();
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { IdentityData } from '../data/identityData';
|
import { Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { CipherString } from './cipherString';
|
import { CipherString } from './cipherString';
|
||||||
import Domain from './domain';
|
import Domain from './domain';
|
||||||
|
@ -23,7 +23,7 @@ class Identity extends Domain {
|
||||||
passportNumber: CipherString;
|
passportNumber: CipherString;
|
||||||
licenseNumber: CipherString;
|
licenseNumber: CipherString;
|
||||||
|
|
||||||
constructor(obj?: IdentityData, alreadyEncrypted: boolean = false) {
|
constructor(obj?: Data.Identity, alreadyEncrypted: boolean = false) {
|
||||||
super();
|
super();
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { LoginData } from '../data/loginData';
|
import { Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { CipherString } from './cipherString';
|
import { CipherString } from './cipherString';
|
||||||
import Domain from './domain';
|
import Domain from './domain';
|
||||||
|
@ -9,7 +9,7 @@ class Login extends Domain {
|
||||||
password: CipherString;
|
password: CipherString;
|
||||||
totp: CipherString;
|
totp: CipherString;
|
||||||
|
|
||||||
constructor(obj?: LoginData, alreadyEncrypted: boolean = false) {
|
constructor(obj?: Data.Login, alreadyEncrypted: boolean = false) {
|
||||||
super();
|
super();
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
import { Enums } from '@bitwarden/jslib';
|
import { Enums, Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { SecureNoteData } from '../data/secureNoteData';
|
|
||||||
|
|
||||||
import Domain from './domain';
|
import Domain from './domain';
|
||||||
|
|
||||||
class SecureNote extends Domain {
|
class SecureNote extends Domain {
|
||||||
type: Enums.SecureNoteType;
|
type: Enums.SecureNoteType;
|
||||||
|
|
||||||
constructor(obj?: SecureNoteData, alreadyEncrypted: boolean = false) {
|
constructor(obj?: Data.SecureNote, alreadyEncrypted: boolean = false) {
|
||||||
super();
|
super();
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -38,18 +38,9 @@ import { Identity } from '../../models/domain/identity';
|
||||||
import { Login } from '../../models/domain/login';
|
import { Login } from '../../models/domain/login';
|
||||||
import { SecureNote } from '../../models/domain/secureNote';
|
import { SecureNote } from '../../models/domain/secureNote';
|
||||||
|
|
||||||
import { AttachmentData } from '../../models/data/attachmentData';
|
|
||||||
import { CardData } from '../../models/data/cardData';
|
|
||||||
import { CipherData } from '../../models/data/cipherData';
|
|
||||||
import { FieldData } from '../../models/data/fieldData';
|
|
||||||
import { FolderData } from '../../models/data/folderData';
|
|
||||||
import { IdentityData } from '../../models/data/identityData';
|
|
||||||
import { LoginData } from '../../models/data/loginData';
|
|
||||||
import { SecureNoteData } from '../../models/data/secureNoteData';
|
|
||||||
|
|
||||||
import { CipherString } from '../../models/domain/cipherString';
|
import { CipherString } from '../../models/domain/cipherString';
|
||||||
|
|
||||||
import { Domain, Request, Response } from '@bitwarden/jslib';
|
import { Data, Domain, Request, Response } from '@bitwarden/jslib';
|
||||||
|
|
||||||
angular
|
angular
|
||||||
.module('bit', [
|
.module('bit', [
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
import { Abstractions, Enums, Request, Response } from '@bitwarden/jslib';
|
import { Abstractions, Data, Enums, Request, Response } from '@bitwarden/jslib';
|
||||||
|
|
||||||
import { Cipher } from '../models/domain/cipher';
|
import { Cipher } from '../models/domain/cipher';
|
||||||
import { CipherString } from '../models/domain/cipherString';
|
import { CipherString } from '../models/domain/cipherString';
|
||||||
import { Field } from '../models/domain/field';
|
import { Field } from '../models/domain/field';
|
||||||
import SymmetricCryptoKey from '../models/domain/symmetricCryptoKey';
|
import SymmetricCryptoKey from '../models/domain/symmetricCryptoKey';
|
||||||
|
|
||||||
import { CipherData } from '../models/data/cipherData';
|
|
||||||
|
|
||||||
import ApiService from './api.service';
|
import ApiService from './api.service';
|
||||||
import ConstantsService from './constants.service';
|
import ConstantsService from './constants.service';
|
||||||
import CryptoService from './crypto.service';
|
import CryptoService from './crypto.service';
|
||||||
|
@ -128,7 +126,7 @@ export default class CipherService {
|
||||||
async get(id: string): Promise<Cipher> {
|
async get(id: string): Promise<Cipher> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const localData = await this.storageService.get<any>(Keys.localData);
|
const localData = await this.storageService.get<any>(Keys.localData);
|
||||||
const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(
|
const ciphers = await this.storageService.get<{ [id: string]: Data.Cipher; }>(
|
||||||
Keys.ciphersPrefix + userId);
|
Keys.ciphersPrefix + userId);
|
||||||
if (ciphers == null || !ciphers.hasOwnProperty(id)) {
|
if (ciphers == null || !ciphers.hasOwnProperty(id)) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -140,7 +138,7 @@ export default class CipherService {
|
||||||
async getAll(): Promise<Cipher[]> {
|
async getAll(): Promise<Cipher[]> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const localData = await this.storageService.get<any>(Keys.localData);
|
const localData = await this.storageService.get<any>(Keys.localData);
|
||||||
const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(
|
const ciphers = await this.storageService.get<{ [id: string]: Data.Cipher; }>(
|
||||||
Keys.ciphersPrefix + userId);
|
Keys.ciphersPrefix + userId);
|
||||||
const response: Cipher[] = [];
|
const response: Cipher[] = [];
|
||||||
for (const id in ciphers) {
|
for (const id in ciphers) {
|
||||||
|
@ -292,7 +290,7 @@ export default class CipherService {
|
||||||
}
|
}
|
||||||
|
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const data = new CipherData(response, userId, cipher.collectionIds);
|
const data = new Data.Cipher(response, userId, cipher.collectionIds);
|
||||||
await this.upsert(data);
|
await this.upsert(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,7 +319,7 @@ export default class CipherService {
|
||||||
}
|
}
|
||||||
|
|
||||||
const userId = await self.userService.getUserId();
|
const userId = await self.userService.getUserId();
|
||||||
const data = new CipherData(response, userId, cipher.collectionIds);
|
const data = new Data.Cipher(response, userId, cipher.collectionIds);
|
||||||
this.upsert(data);
|
this.upsert(data);
|
||||||
resolve(new Cipher(data));
|
resolve(new Cipher(data));
|
||||||
|
|
||||||
|
@ -333,19 +331,19 @@ export default class CipherService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async upsert(cipher: CipherData | CipherData[]): Promise<any> {
|
async upsert(cipher: Data.Cipher | Data.Cipher[]): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(
|
let ciphers = await this.storageService.get<{ [id: string]: Data.Cipher; }>(
|
||||||
Keys.ciphersPrefix + userId);
|
Keys.ciphersPrefix + userId);
|
||||||
if (ciphers == null) {
|
if (ciphers == null) {
|
||||||
ciphers = {};
|
ciphers = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cipher instanceof CipherData) {
|
if (cipher instanceof Data.Cipher) {
|
||||||
const c = cipher as CipherData;
|
const c = cipher as Data.Cipher;
|
||||||
ciphers[c.id] = c;
|
ciphers[c.id] = c;
|
||||||
} else {
|
} else {
|
||||||
(cipher as CipherData[]).forEach((c) => {
|
(cipher as Data.Cipher[]).forEach((c) => {
|
||||||
ciphers[c.id] = c;
|
ciphers[c.id] = c;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -354,7 +352,7 @@ export default class CipherService {
|
||||||
this.decryptedCipherCache = null;
|
this.decryptedCipherCache = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async replace(ciphers: { [id: string]: CipherData; }): Promise<any> {
|
async replace(ciphers: { [id: string]: Data.Cipher; }): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);
|
await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);
|
||||||
this.decryptedCipherCache = null;
|
this.decryptedCipherCache = null;
|
||||||
|
@ -367,7 +365,7 @@ export default class CipherService {
|
||||||
|
|
||||||
async delete(id: string | string[]): Promise<any> {
|
async delete(id: string | string[]): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(
|
const ciphers = await this.storageService.get<{ [id: string]: Data.Cipher; }>(
|
||||||
Keys.ciphersPrefix + userId);
|
Keys.ciphersPrefix + userId);
|
||||||
if (ciphers == null) {
|
if (ciphers == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -393,7 +391,7 @@ export default class CipherService {
|
||||||
|
|
||||||
async deleteAttachment(id: string, attachmentId: string): Promise<void> {
|
async deleteAttachment(id: string, attachmentId: string): Promise<void> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(
|
const ciphers = await this.storageService.get<{ [id: string]: Data.Cipher; }>(
|
||||||
Keys.ciphersPrefix + userId);
|
Keys.ciphersPrefix + userId);
|
||||||
|
|
||||||
if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {
|
if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
import { CipherString } from '../models/domain/cipherString';
|
import { CipherString } from '../models/domain/cipherString';
|
||||||
import { Collection } from '../models/domain/collection';
|
import { Collection } from '../models/domain/collection';
|
||||||
|
|
||||||
import { CollectionData } from '../models/data/collectionData';
|
|
||||||
|
|
||||||
import CryptoService from './crypto.service';
|
import CryptoService from './crypto.service';
|
||||||
import UserService from './user.service';
|
import UserService from './user.service';
|
||||||
|
|
||||||
import { Abstractions } from '@bitwarden/jslib';
|
import { Abstractions, Data } from '@bitwarden/jslib';
|
||||||
|
|
||||||
const Keys = {
|
const Keys = {
|
||||||
collectionsPrefix: 'collections_',
|
collectionsPrefix: 'collections_',
|
||||||
|
@ -25,7 +23,7 @@ export default class CollectionService {
|
||||||
|
|
||||||
async get(id: string): Promise<Collection> {
|
async get(id: string): Promise<Collection> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(
|
const collections = await this.storageService.get<{ [id: string]: Data.Collection; }>(
|
||||||
Keys.collectionsPrefix + userId);
|
Keys.collectionsPrefix + userId);
|
||||||
if (collections == null || !collections.hasOwnProperty(id)) {
|
if (collections == null || !collections.hasOwnProperty(id)) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -36,7 +34,7 @@ export default class CollectionService {
|
||||||
|
|
||||||
async getAll(): Promise<Collection[]> {
|
async getAll(): Promise<Collection[]> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(
|
const collections = await this.storageService.get<{ [id: string]: Data.Collection; }>(
|
||||||
Keys.collectionsPrefix + userId);
|
Keys.collectionsPrefix + userId);
|
||||||
const response: Collection[] = [];
|
const response: Collection[] = [];
|
||||||
for (const id in collections) {
|
for (const id in collections) {
|
||||||
|
@ -71,19 +69,19 @@ export default class CollectionService {
|
||||||
return this.decryptedCollectionCache;
|
return this.decryptedCollectionCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
async upsert(collection: CollectionData | CollectionData[]): Promise<any> {
|
async upsert(collection: Data.Collection | Data.Collection[]): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
let collections = await this.storageService.get<{ [id: string]: CollectionData; }>(
|
let collections = await this.storageService.get<{ [id: string]: Data.Collection; }>(
|
||||||
Keys.collectionsPrefix + userId);
|
Keys.collectionsPrefix + userId);
|
||||||
if (collections == null) {
|
if (collections == null) {
|
||||||
collections = {};
|
collections = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (collection instanceof CollectionData) {
|
if (collection instanceof Data.Collection) {
|
||||||
const c = collection as CollectionData;
|
const c = collection as Data.Collection;
|
||||||
collections[c.id] = c;
|
collections[c.id] = c;
|
||||||
} else {
|
} else {
|
||||||
(collection as CollectionData[]).forEach((c) => {
|
(collection as Data.Collection[]).forEach((c) => {
|
||||||
collections[c.id] = c;
|
collections[c.id] = c;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -92,7 +90,7 @@ export default class CollectionService {
|
||||||
this.decryptedCollectionCache = null;
|
this.decryptedCollectionCache = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async replace(collections: { [id: string]: CollectionData; }): Promise<any> {
|
async replace(collections: { [id: string]: Data.Collection; }): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
await this.storageService.save(Keys.collectionsPrefix + userId, collections);
|
await this.storageService.save(Keys.collectionsPrefix + userId, collections);
|
||||||
this.decryptedCollectionCache = null;
|
this.decryptedCollectionCache = null;
|
||||||
|
@ -105,7 +103,7 @@ export default class CollectionService {
|
||||||
|
|
||||||
async delete(id: string | string[]): Promise<any> {
|
async delete(id: string | string[]): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(
|
const collections = await this.storageService.get<{ [id: string]: Data.Collection; }>(
|
||||||
Keys.collectionsPrefix + userId);
|
Keys.collectionsPrefix + userId);
|
||||||
if (collections == null) {
|
if (collections == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
import { CipherString } from '../models/domain/cipherString';
|
import { CipherString } from '../models/domain/cipherString';
|
||||||
|
|
||||||
import { FolderData } from '../models/data/folderData';
|
|
||||||
|
|
||||||
import ApiService from './api.service';
|
import ApiService from './api.service';
|
||||||
import CryptoService from './crypto.service';
|
import CryptoService from './crypto.service';
|
||||||
import UserService from './user.service';
|
import UserService from './user.service';
|
||||||
|
|
||||||
import { Abstractions, Domain, Request, Response } from '@bitwarden/jslib';
|
import { Abstractions, Data, Domain, Request, Response } from '@bitwarden/jslib';
|
||||||
|
|
||||||
const Keys = {
|
const Keys = {
|
||||||
foldersPrefix: 'folders_',
|
foldersPrefix: 'folders_',
|
||||||
|
@ -33,7 +31,7 @@ export default class FolderService {
|
||||||
|
|
||||||
async get(id: string): Promise<Domain.Folder> {
|
async get(id: string): Promise<Domain.Folder> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const folders = await this.storageService.get<{ [id: string]: FolderData; }>(
|
const folders = await this.storageService.get<{ [id: string]: Data.Folder; }>(
|
||||||
Keys.foldersPrefix + userId);
|
Keys.foldersPrefix + userId);
|
||||||
if (folders == null || !folders.hasOwnProperty(id)) {
|
if (folders == null || !folders.hasOwnProperty(id)) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -44,7 +42,7 @@ export default class FolderService {
|
||||||
|
|
||||||
async getAll(): Promise<Domain.Folder[]> {
|
async getAll(): Promise<Domain.Folder[]> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const folders = await this.storageService.get<{ [id: string]: FolderData; }>(
|
const folders = await this.storageService.get<{ [id: string]: Data.Folder; }>(
|
||||||
Keys.foldersPrefix + userId);
|
Keys.foldersPrefix + userId);
|
||||||
const response: Domain.Folder[] = [];
|
const response: Domain.Folder[] = [];
|
||||||
for (const id in folders) {
|
for (const id in folders) {
|
||||||
|
@ -95,23 +93,23 @@ export default class FolderService {
|
||||||
}
|
}
|
||||||
|
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const data = new FolderData(response, userId);
|
const data = new Data.Folder(response, userId);
|
||||||
await this.upsert(data);
|
await this.upsert(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async upsert(folder: FolderData | FolderData[]): Promise<any> {
|
async upsert(folder: Data.Folder | Data.Folder[]): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
let folders = await this.storageService.get<{ [id: string]: FolderData; }>(
|
let folders = await this.storageService.get<{ [id: string]: Data.Folder; }>(
|
||||||
Keys.foldersPrefix + userId);
|
Keys.foldersPrefix + userId);
|
||||||
if (folders == null) {
|
if (folders == null) {
|
||||||
folders = {};
|
folders = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (folder instanceof FolderData) {
|
if (folder instanceof Data.Folder) {
|
||||||
const f = folder as FolderData;
|
const f = folder as Data.Folder;
|
||||||
folders[f.id] = f;
|
folders[f.id] = f;
|
||||||
} else {
|
} else {
|
||||||
(folder as FolderData[]).forEach((f) => {
|
(folder as Data.Folder[]).forEach((f) => {
|
||||||
folders[f.id] = f;
|
folders[f.id] = f;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -120,7 +118,7 @@ export default class FolderService {
|
||||||
this.decryptedFolderCache = null;
|
this.decryptedFolderCache = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async replace(folders: { [id: string]: FolderData; }): Promise<any> {
|
async replace(folders: { [id: string]: Data.Folder; }): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
await this.storageService.save(Keys.foldersPrefix + userId, folders);
|
await this.storageService.save(Keys.foldersPrefix + userId, folders);
|
||||||
this.decryptedFolderCache = null;
|
this.decryptedFolderCache = null;
|
||||||
|
@ -133,7 +131,7 @@ export default class FolderService {
|
||||||
|
|
||||||
async delete(id: string | string[]): Promise<any> {
|
async delete(id: string | string[]): Promise<any> {
|
||||||
const userId = await this.userService.getUserId();
|
const userId = await this.userService.getUserId();
|
||||||
const folders = await this.storageService.get<{ [id: string]: FolderData; }>(
|
const folders = await this.storageService.get<{ [id: string]: Data.Folder; }>(
|
||||||
Keys.foldersPrefix + userId);
|
Keys.foldersPrefix + userId);
|
||||||
if (folders == null) {
|
if (folders == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
import { CipherData } from '../models/data/cipherData';
|
|
||||||
import { CollectionData } from '../models/data/collectionData';
|
|
||||||
import { FolderData } from '../models/data/folderData';
|
|
||||||
|
|
||||||
import ApiService from './api.service';
|
import ApiService from './api.service';
|
||||||
import CipherService from './cipher.service';
|
import CipherService from './cipher.service';
|
||||||
import CollectionService from './collection.service';
|
import CollectionService from './collection.service';
|
||||||
|
@ -10,7 +6,7 @@ import FolderService from './folder.service';
|
||||||
import SettingsService from './settings.service';
|
import SettingsService from './settings.service';
|
||||||
import UserService from './user.service';
|
import UserService from './user.service';
|
||||||
|
|
||||||
import { Abstractions, Response } from '@bitwarden/jslib';
|
import { Abstractions, Data, Response } from '@bitwarden/jslib';
|
||||||
|
|
||||||
const Keys = {
|
const Keys = {
|
||||||
lastSyncPrefix: 'lastSync_',
|
lastSyncPrefix: 'lastSync_',
|
||||||
|
@ -132,25 +128,25 @@ export default class SyncService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private async syncFolders(userId: string, response: Response.Folder[]) {
|
private async syncFolders(userId: string, response: Response.Folder[]) {
|
||||||
const folders: { [id: string]: FolderData; } = {};
|
const folders: { [id: string]: Data.Folder; } = {};
|
||||||
response.forEach((f) => {
|
response.forEach((f) => {
|
||||||
folders[f.id] = new FolderData(f, userId);
|
folders[f.id] = new Data.Folder(f, userId);
|
||||||
});
|
});
|
||||||
return await this.folderService.replace(folders);
|
return await this.folderService.replace(folders);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async syncCollections(response: Response.Collection[]) {
|
private async syncCollections(response: Response.Collection[]) {
|
||||||
const collections: { [id: string]: CollectionData; } = {};
|
const collections: { [id: string]: Data.Collection; } = {};
|
||||||
response.forEach((c) => {
|
response.forEach((c) => {
|
||||||
collections[c.id] = new CollectionData(c);
|
collections[c.id] = new Data.Collection(c);
|
||||||
});
|
});
|
||||||
return await this.collectionService.replace(collections);
|
return await this.collectionService.replace(collections);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async syncCiphers(userId: string, response: Response.Cipher[]) {
|
private async syncCiphers(userId: string, response: Response.Cipher[]) {
|
||||||
const ciphers: { [id: string]: CipherData; } = {};
|
const ciphers: { [id: string]: Data.Cipher; } = {};
|
||||||
response.forEach((c) => {
|
response.forEach((c) => {
|
||||||
ciphers[c.id] = new CipherData(c, userId);
|
ciphers[c.id] = new Data.Cipher(c, userId);
|
||||||
});
|
});
|
||||||
return await this.cipherService.replace(ciphers);
|
return await this.cipherService.replace(ciphers);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue