172145278f
Closes LNReader/lnreader-sources#146 Closes LNReader/lnreader-sources#172 Closes LNReader/lnreader-sources#150 Closes LNReader/lnreader-sources#319 Closes LNReader/lnreader-sources#397 Closes LNReader/lnreader-sources#404 Closes LNReader/lnreader-sources#406 Closes LNReader/lnreader-sources#407 Closes LNReader/lnreader-sources#411
63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
import { useMMKVObject } from 'react-native-mmkv';
|
|
import { MMKVStorage } from '@utils/mmkv/mmkv';
|
|
import { showToast } from './showToast';
|
|
|
|
export const SOURCE_STORAGE = 'SOURCE_STORAGE';
|
|
|
|
interface SourceStorage {
|
|
cookies?: any;
|
|
}
|
|
|
|
export type SourceStorageMap = Record<number, Partial<SourceStorage>>;
|
|
|
|
const useSourceStorage = ({ sourceId = -1 }: { sourceId?: number }) => {
|
|
const [values, setValues] = useMMKVObject<SourceStorageMap>(
|
|
SOURCE_STORAGE,
|
|
MMKVStorage,
|
|
);
|
|
|
|
const setSourceStorage = (key: keyof SourceStorage, value: any): void => {
|
|
setValues({
|
|
...values,
|
|
[sourceId]: {
|
|
...values?.[sourceId],
|
|
[key]: value,
|
|
},
|
|
});
|
|
};
|
|
|
|
const clearCookies = (): void => {
|
|
// let tempStorage = {};
|
|
|
|
// if (values) {
|
|
// tempStorage = Object.fromEntries(
|
|
// Object.entries(values).map(([id, sourceData]) => {
|
|
// delete sourceData.cookies;
|
|
|
|
// return [id, sourceData];
|
|
// }),
|
|
// );
|
|
// }
|
|
|
|
setValues({});
|
|
showToast('Cookies cleared');
|
|
};
|
|
|
|
const sourceStorage = values?.[sourceId];
|
|
|
|
return {
|
|
...sourceStorage,
|
|
setSourceStorage,
|
|
clearCookies,
|
|
};
|
|
};
|
|
|
|
export default useSourceStorage;
|
|
|
|
export const getSourceStorage = (sourceId: number) => {
|
|
const rawSettings = MMKVStorage.getString(SOURCE_STORAGE) || '{}';
|
|
const parsedSettings: Partial<SourceStorageMap> = JSON.parse(rawSettings);
|
|
|
|
return parsedSettings[sourceId] || {};
|
|
};
|