2025-07-22 15:16:47 +08:00
|
|
|
import Storage, { LoadParams } from 'react-native-storage';
|
2025-07-14 17:27:00 +08:00
|
|
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
|
|
|
|
|
|
|
|
export const storageApp = new Storage({
|
|
|
|
|
size: 1000,
|
|
|
|
|
storageBackend: AsyncStorage,
|
2025-08-29 18:39:55 +08:00
|
|
|
defaultExpires: null, // 不过期
|
2025-07-14 17:27:00 +08:00
|
|
|
enableCache: true,
|
|
|
|
|
});
|
2025-07-22 15:16:47 +08:00
|
|
|
/**
|
|
|
|
|
* 缓存一个键值对
|
|
|
|
|
* @param key
|
|
|
|
|
* @param value
|
2025-07-22 15:31:41 +08:00
|
|
|
* @param expires
|
2025-07-22 15:16:47 +08:00
|
|
|
*/
|
2025-07-22 15:31:41 +08:00
|
|
|
export const saveItem = (key: string, value: any, expires?: number | null) =>
|
|
|
|
|
storageApp.save({ key, data: value, expires });
|
2025-07-22 15:16:47 +08:00
|
|
|
/**
|
|
|
|
|
* 获取一个键值对
|
|
|
|
|
* @param key
|
|
|
|
|
*/
|
2025-08-29 18:39:55 +08:00
|
|
|
export const getItem = (key: string) => {
|
|
|
|
|
return new Promise<string | undefined>(resolve => {
|
|
|
|
|
storageApp
|
|
|
|
|
.load<string>({ key, autoSync: true, syncInBackground: true })
|
|
|
|
|
.then(data => resolve(data))
|
|
|
|
|
.catch(() => resolve(undefined));
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-22 15:16:47 +08:00
|
|
|
/**
|
|
|
|
|
* 删除一个键值对
|
|
|
|
|
* @param key
|
|
|
|
|
*/
|
|
|
|
|
export const removeItem = (key: string) => storageApp.remove({ key });
|
|
|
|
|
/**
|
|
|
|
|
* 获取批量键值对
|
|
|
|
|
* @param params
|
|
|
|
|
*/
|
2025-08-29 18:39:55 +08:00
|
|
|
export const getAllItems = (params: LoadParams[]) =>{
|
|
|
|
|
return new Promise<string[]>(resolve => {
|
|
|
|
|
storageApp.getBatchData<string>(params)
|
|
|
|
|
.then(data => resolve(data))
|
|
|
|
|
.catch(() => resolve([]));
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-22 15:16:47 +08:00
|
|
|
|
|
|
|
|
export const saveAllItems = (
|
|
|
|
|
params: {
|
|
|
|
|
key: string;
|
|
|
|
|
id?: string;
|
|
|
|
|
data: any;
|
|
|
|
|
expires?: number | null;
|
|
|
|
|
}[],
|
|
|
|
|
) => Promise.all([params.map(item => storageApp.save(item))]);
|
2025-08-29 18:39:55 +08:00
|
|
|
|
2025-07-22 15:16:47 +08:00
|
|
|
export const removeAllItems = (params: string[]) =>
|
|
|
|
|
Promise.all([params.map(item => storageApp.remove({ key: item }))]);
|
2025-08-29 18:39:55 +08:00
|
|
|
|
|
|
|
|
export const getAllKeys = () => {
|
|
|
|
|
return AsyncStorage.getAllKeys();
|
|
|
|
|
};
|