Files
doneit-web/src/app/store/localstore.service.ts
T
Peter Maquiran a0a63383c6 Fix
2021-08-19 18:56:08 +01:00

77 lines
1.6 KiB
TypeScript

import { Injectable } from '@angular/core';
import { AES, enc, SHA1 } from 'crypto-js'
@Injectable({
providedIn: 'root'
})
export class LocalstoreService {
private prefix = 'v14-'
constructor() {
const key = SHA1('version').toString()
this.set(key, this.prefix)
}
getKey(keyName) {
return this.prefix + keyName
}
get( keyName, safe) {
keyName = this.getKey(keyName)
const ciphertext = localStorage.getItem(keyName)
const hashKey = SHA1(keyName).toString()
if(ciphertext) {
const bytes = AES.decrypt(ciphertext, hashKey)
var decryptedData = bytes.toString(enc.Utf8);
try {
return JSON.parse(decryptedData)
} catch {
return decryptedData;
}
} else {
return safe
}
}
set(keyName, value) {
keyName = this.getKey(keyName)
if(typeof(value) != 'string') {
value = JSON.stringify(value)
}
const hashKey = SHA1(keyName).toString()
const data = value
const encoded = AES.encrypt( data, hashKey).toString();
localStorage.setItem(keyName, encoded)
}
}
export const localstoreService = new LocalstoreService()
console.log( AES.encrypt( 'pode ser qualquer', 'ayrton').toString() )
// // Create WebSocket connection.
// const socket = new WebSocket('ws://localhost:8080');
// // Listen for messages
// socket.addEventListener('message', function (event) {
// console.log('Message from server ', event.data); // Message from server mobile first é fraco
// var p = Promise.resolve(event.data);
// p.then(function(v) {
// console.log(v); // mobile first é fraco
// });
// });