Przeglądarkowy hash!
This commit is contained in:
parent
8569fc5310
commit
cb770a73c0
|
|
@ -11,6 +11,7 @@ import { format, parse } from 'date-fns';
|
||||||
import { createHash } from 'crypto';
|
import { createHash } from 'crypto';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class AssetLifeChangeWrapper {
|
class AssetLifeChangeWrapper {
|
||||||
when = signal<string>(YearMonth.todayTxt());
|
when = signal<string>(YearMonth.todayTxt());
|
||||||
initial = signal<number>(0);
|
initial = signal<number>(0);
|
||||||
|
|
@ -62,7 +63,7 @@ export class AssetCalculatorComponent {
|
||||||
this.saveState(this.controlsToAsset());
|
this.saveState(this.controlsToAsset());
|
||||||
}
|
}
|
||||||
|
|
||||||
private restoreState() {
|
private async restoreState() {
|
||||||
const savedAsset = localStorage.getItem(STORAGE_KEY);
|
const savedAsset = localStorage.getItem(STORAGE_KEY);
|
||||||
const savedResults = localStorage.getItem(CACHE_KEY);
|
const savedResults = localStorage.getItem(CACHE_KEY);
|
||||||
const savedHash = localStorage.getItem(HASH_KEY);
|
const savedHash = localStorage.getItem(HASH_KEY);
|
||||||
|
|
@ -71,10 +72,9 @@ export class AssetCalculatorComponent {
|
||||||
const asset: Asset = JSON.parse(savedAsset);
|
const asset: Asset = JSON.parse(savedAsset);
|
||||||
this.assetToControls(asset);
|
this.assetToControls(asset);
|
||||||
|
|
||||||
// Generujemy nowy hash
|
// 🛠️ Poczekaj na hash
|
||||||
const newHash = this.generateHash(asset);
|
const newHash = await this.generateHash(asset);
|
||||||
|
|
||||||
// Jeśli hash jest taki sam, ładujemy wyniki z cache
|
|
||||||
if (savedHash === newHash && savedResults) {
|
if (savedHash === newHash && savedResults) {
|
||||||
this.amortizationsSignal.set(JSON.parse(savedResults));
|
this.amortizationsSignal.set(JSON.parse(savedResults));
|
||||||
console.log("✅ Załadowano wyniki z cache – brak przeliczeń.");
|
console.log("✅ Załadowano wyniki z cache – brak przeliczeń.");
|
||||||
|
|
@ -86,9 +86,11 @@ export class AssetCalculatorComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private saveState(asset: Asset) {
|
|
||||||
|
private async saveState(asset: Asset) {
|
||||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(asset));
|
localStorage.setItem(STORAGE_KEY, JSON.stringify(asset));
|
||||||
localStorage.setItem(HASH_KEY, this.generateHash(asset)); // Zapisujemy nowy hash
|
const hash = await this.generateHash(asset);
|
||||||
|
localStorage.setItem(HASH_KEY, hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
private assetToControls(asset: Asset) {
|
private assetToControls(asset: Asset) {
|
||||||
|
|
@ -164,7 +166,8 @@ export class AssetCalculatorComponent {
|
||||||
datepicker.close();
|
datepicker.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private generateHash(asset: Asset): string {
|
|
||||||
|
private async generateHash(asset: Asset): Promise<string> {
|
||||||
const data = JSON.stringify({
|
const data = JSON.stringify({
|
||||||
initialValue: asset.life[0]?.initial,
|
initialValue: asset.life[0]?.initial,
|
||||||
rate: asset.depreciationMethods[0]?.rate,
|
rate: asset.depreciationMethods[0]?.rate,
|
||||||
|
|
@ -173,6 +176,13 @@ export class AssetCalculatorComponent {
|
||||||
lifeChanges: asset.life.map(lc => ({ when: lc.when, initial: lc.initial }))
|
lifeChanges: asset.life.map(lc => ({ when: lc.when, initial: lc.initial }))
|
||||||
});
|
});
|
||||||
|
|
||||||
return createHash('sha256').update(data).digest('hex');
|
const encoder = new TextEncoder();
|
||||||
|
const dataBuffer = encoder.encode(data);
|
||||||
|
const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);
|
||||||
|
|
||||||
|
return Array.from(new Uint8Array(hashBuffer))
|
||||||
|
.map(byte => byte.toString(16).padStart(2, '0'))
|
||||||
|
.join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue