respira/src/platform/browser/BrowserStorageService.ts
Jan-Henrik Bruhn 2b5e1d763b fix: Store original and uploaded pattern data to prevent rotation inconsistencies
Store both original unrotated pesData and uploaded rotated pesData in cache
to ensure exact consistency on resume and prevent issues from algorithm changes
between versions. This fixes rotation/position reset issues after page reload.

- Cache original unrotated pattern + rotation angle for editing
- Cache exact uploaded pattern data sent to machine
- Restore original offset after loading cached pattern
- Use cached uploaded data on resume instead of recalculating

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-26 22:48:25 +01:00

52 lines
1.4 KiB
TypeScript

import { PatternCacheService } from "../../services/PatternCacheService";
import type {
IStorageService,
ICachedPattern,
} from "../interfaces/IStorageService";
import type { PesPatternData } from "../../formats/import/pesImporter";
/**
* Browser implementation of storage service using localStorage
* Wraps the existing PatternCacheService
*/
export class BrowserStorageService implements IStorageService {
async savePattern(
uuid: string,
pesData: PesPatternData,
fileName: string,
patternOffset?: { x: number; y: number },
patternRotation?: number,
uploadedPesData?: PesPatternData,
): Promise<void> {
PatternCacheService.savePattern(uuid, pesData, fileName, patternOffset, patternRotation, uploadedPesData);
}
async getPatternByUUID(uuid: string): Promise<ICachedPattern | null> {
return PatternCacheService.getPatternByUUID(uuid);
}
async getMostRecentPattern(): Promise<ICachedPattern | null> {
return PatternCacheService.getMostRecentPattern();
}
async hasPattern(uuid: string): Promise<boolean> {
return PatternCacheService.hasPattern(uuid);
}
async deletePattern(uuid: string): Promise<void> {
PatternCacheService.deletePattern(uuid);
}
async clearCache(): Promise<void> {
PatternCacheService.clearCache();
}
async getCacheInfo(): Promise<{
hasCache: boolean;
fileName?: string;
uuid?: string;
age?: number;
}> {
return PatternCacheService.getCacheInfo();
}
}