Massive/file.ts

27 lines
934 B
TypeScript

import {useContext} from 'react';
import {PermissionsAndroid} from 'react-native';
import {Dirs, FileSystem} from 'react-native-file-access';
import {SnackbarContext} from './App';
export const useWrite = () => {
const {toast} = useContext(SnackbarContext);
return {
write: async (name: string, data: string) => {
const filePath = `${Dirs.DocumentDir}/${name}`;
const permission = async () => {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
);
return granted === PermissionsAndroid.RESULTS.GRANTED;
};
const granted = await permission();
if (!granted) return;
await FileSystem.writeFile(filePath, data);
if (!FileSystem.exists(filePath)) return;
await FileSystem.cpExternal(filePath, name, 'downloads');
toast(`Saved "${name}" in your downloads folder.`, 6000);
},
};
};