code-craft-studio
Version:
A comprehensive QR code and barcode scanning/generation library for React. Works with or without Capacitor. Supports 22+ QR data types and 14+ barcode formats (EAN, UPC, Code 128, etc.), with customizable designs, analytics, and React components. Provider
78 lines • 2.62 kB
JavaScript
import { logger } from '../../utils/logger';
export class CapacitorStorageAdapter {
constructor(prefix = 'code-craft-studio-') {
this.prefix = prefix;
this.loadPreferences();
}
async loadPreferences() {
try {
const { Preferences } = await import('@capacitor/preferences');
this.preferences = Preferences;
}
catch (_error) {
logger.warn('CapacitorStorageAdapter: @capacitor/preferences not available, falling back to localStorage');
}
}
async get(key) {
if (!this.preferences) {
return localStorage.getItem(this.prefix + key);
}
try {
const result = await this.preferences.get({ key: this.prefix + key });
return result.value || null;
}
catch (error) {
logger.error('CapacitorStorageAdapter: Error getting item', error);
return null;
}
}
async set(key, value) {
if (!this.preferences) {
localStorage.setItem(this.prefix + key, value);
return;
}
try {
await this.preferences.set({ key: this.prefix + key, value });
}
catch (error) {
logger.error('CapacitorStorageAdapter: Error setting item', error);
throw error;
}
}
async remove(key) {
if (!this.preferences) {
localStorage.removeItem(this.prefix + key);
return;
}
try {
await this.preferences.remove({ key: this.prefix + key });
}
catch (error) {
logger.error('CapacitorStorageAdapter: Error removing item', error);
throw error;
}
}
async clear() {
if (!this.preferences) {
const keysToRemove = [];
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
if (key && key.startsWith(this.prefix)) {
keysToRemove.push(key);
}
}
keysToRemove.forEach(key => localStorage.removeItem(key));
return;
}
try {
const { keys } = await this.preferences.keys();
const keysToRemove = keys.filter((key) => key.startsWith(this.prefix));
await Promise.all(keysToRemove.map((key) => this.preferences.remove({ key })));
}
catch (error) {
logger.error('CapacitorStorageAdapter: Error clearing storage', error);
throw error;
}
}
}
//# sourceMappingURL=capacitor-storage.js.map