Update Storage URI settings

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2023-07-09 18:13:05 +03:00
parent a93630e1e9
commit 9ecc326008
14 changed files with 125 additions and 157 deletions

View File

@@ -1,16 +1,8 @@
import React, { useState } from 'react';
import { View } from 'react-native';
import {
Button,
Switch,
SegmentedButtons,
Text,
List,
Snackbar,
} from 'react-native-paper';
import { Button, List, Snackbar } from 'react-native-paper';
import { useRealm } from '@realm/react';
import { openDocumentTree } from 'react-native-scoped-storage';
import { DocumentDirectoryPath } from 'react-native-fs';
import { PaddedView } from '../components';
import styles from '../styles';
import { Meme } from '../database';
@@ -22,48 +14,7 @@ const SettingsScreen = () => {
const [snackbarVisible, setSnackbarVisible] = useState(false);
const [snackbarMessage, setSnackbarMessage] = useState('');
const { settings, setSettings } = useSettings();
const setUseInternalStorage = (use: boolean) => {
if (settings.useInternalStorage === use) {
return;
}
if (use) {
setSettings({
useInternalStorage: use,
storageUri: DocumentDirectoryPath,
});
} else {
openDocumentTree(true)
.then(uri => {
setSettings({
useInternalStorage: use,
storageUri: uri.uri,
});
})
.catch(() => {
setSnackbarMessage('Failed to select storage path!');
setSnackbarVisible(true);
});
}
};
const setStorageUri = (uri: string) => {
if (settings.storageUri === uri) {
return;
}
setSettings({ storageUri: uri });
};
const setAddNoMedia = (add: boolean) => {
if (settings.addNoMedia === add) {
return;
}
setSettings({ addNoMedia: add });
};
const { setSettings } = useSettings();
const realm = useRealm();
@@ -105,41 +56,16 @@ const SettingsScreen = () => {
</List.Section>
<List.Section>
<List.Subheader>Media Storage</List.Subheader>
<SegmentedButtons
style={styles.marginBottom}
buttons={[
{ label: 'Internal', value: 'interneal' },
{ label: 'External', value: 'external' },
]}
value={settings.useInternalStorage ? 'interneal' : 'external'}
onValueChange={value =>
setUseInternalStorage(value === 'interneal')
}
/>
<Button
mode="elevated"
style={styles.marginBottom}
disabled={settings.useInternalStorage}
onPress={() => {
openDocumentTree(true)
.then(uri => {
setStorageUri(uri.uri);
})
.catch(() => {
setSnackbarMessage('Failed to select storage path!');
setSnackbarVisible(true);
});
void openDocumentTree().then(uri => {
setSettings({ storageUri: uri.uri });
});
}}>
Change External Storage Path
</Button>
<View style={styles.spaceBetweenHorizontal}>
<Text>Hide media from Gallery</Text>
<Switch
value={settings.addNoMedia}
onValueChange={setAddNoMedia}
disabled={settings.useInternalStorage}
/>
</View>
</List.Section>
</View>
</PaddedView>