UNPKG

@jsxc/jsxc

Version:

Real-time XMPP chat application with video calls, file transfer and encrypted communication

41 lines (32 loc) 1.1 kB
import Hash from '@util/Hash'; import { IAvatar } from './Avatar.interface'; import Client from './Client'; import PersistentMap from './util/PersistentMap'; export default class implements IAvatar { private properties: PersistentMap; constructor(private sha1Hash: string, type?: string, data?: string) { let storage = Client.getStorage(); this.properties = new PersistentMap(storage, sha1Hash); if (!this.properties.get('data')) { if (data && type) { let expectedHash = Hash.SHA1FromBase64(data.replace(/^.+;base64,/, '')); if (expectedHash !== sha1Hash) { throw new Error('SHA-1 hash doesnt match'); } this.properties.set('data', data); this.properties.set('type', type); } else { throw new Error('Avatar not found'); } } } public getData(): string { return this.properties.get('data'); } public getType(): string { return this.properties.get('type'); } public getHash(): string { return this.sha1Hash; } }