mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 02:19:41 +02:00
Projects included: - maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing) - manacore (Expo mobile + SvelteKit web + Astro landing) - manadeck (NestJS backend + Expo mobile + SvelteKit web) - memoro (Expo mobile + SvelteKit web + Astro landing) This commit preserves the current state before monorepo restructuring. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
63 lines
No EOL
1.7 KiB
TypeScript
63 lines
No EOL
1.7 KiB
TypeScript
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
|
|
/**
|
|
* Wrapper für AsyncStorage mit Fehlerbehandlung und Typisierung
|
|
*/
|
|
export const safeStorage = {
|
|
/**
|
|
* Speichert einen Wert im AsyncStorage
|
|
* @param key Schlüssel unter dem der Wert gespeichert wird
|
|
* @param value Wert der gespeichert werden soll (wird automatisch zu JSON konvertiert)
|
|
*/
|
|
setItem: async <T>(key: string, value: T): Promise<void> => {
|
|
try {
|
|
// Skip saving if value is undefined
|
|
if (value === undefined) {
|
|
console.warn(`Attempted to save undefined value for key: ${key}. Skipping.`);
|
|
return;
|
|
}
|
|
const jsonValue = JSON.stringify(value);
|
|
await AsyncStorage.setItem(key, jsonValue);
|
|
} catch (e) {
|
|
console.error('Error saving data', e);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Holt einen Wert aus dem AsyncStorage
|
|
* @param key Schlüssel des zu holenden Werts
|
|
* @returns Der gespeicherte Wert oder null wenn nicht vorhanden
|
|
*/
|
|
getItem: async <T>(key: string): Promise<T | null> => {
|
|
try {
|
|
const jsonValue = await AsyncStorage.getItem(key);
|
|
return jsonValue != null ? JSON.parse(jsonValue) : null;
|
|
} catch (e) {
|
|
console.error('Error reading data', e);
|
|
return null;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Entfernt einen Wert aus dem AsyncStorage
|
|
* @param key Schlüssel des zu entfernenden Werts
|
|
*/
|
|
removeItem: async (key: string): Promise<void> => {
|
|
try {
|
|
await AsyncStorage.removeItem(key);
|
|
} catch (e) {
|
|
console.error('Error removing data', e);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Löscht alle Werte aus dem AsyncStorage
|
|
*/
|
|
clear: async (): Promise<void> => {
|
|
try {
|
|
await AsyncStorage.clear();
|
|
} catch (e) {
|
|
console.error('Error clearing data', e);
|
|
}
|
|
}
|
|
}; |