Files
Dennis Hundertmark 6ed3300183 Initial commit
Generated by create-expo-app 3.3.0.
2025-04-04 08:33:13 +02:00

69 lines
1.7 KiB
TypeScript

import AsyncStorage from '@react-native-async-storage/async-storage';
import * as SecureStore from 'expo-secure-store';
import { Platform } from 'react-native';
/**
* Cross-platform storage utility that works on both web and native platforms.
* Uses SecureStore on native platforms and AsyncStorage on web.
*/
export const Storage = {
/**
* Store a value securely
*/
setItem: async (key: string, value: string): Promise<void> => {
try {
if (Platform.OS === 'web') {
await AsyncStorage.setItem(key, value);
} else {
await SecureStore.setItemAsync(key, value);
}
} catch (error) {
console.error('Error storing value:', error);
}
},
/**
* Retrieve a stored value
*/
getItem: async (key: string): Promise<string | null> => {
try {
if (Platform.OS === 'web') {
return await AsyncStorage.getItem(key);
} else {
return await SecureStore.getItemAsync(key);
}
} catch (error) {
console.error('Error retrieving value:', error);
return null;
}
},
/**
* Delete a stored value
*/
deleteItem: async (key: string): Promise<void> => {
try {
if (Platform.OS === 'web') {
await AsyncStorage.removeItem(key);
} else {
await SecureStore.deleteItemAsync(key);
}
} catch (error) {
console.error('Error deleting value:', error);
}
},
/**
* Check if a key exists in storage
*/
hasItem: async (key: string): Promise<boolean> => {
try {
const value = await Storage.getItem(key);
return value !== null;
} catch (error) {
console.error('Error checking for key:', error);
return false;
}
}
};