Fix settings snackbar positioning

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2023-07-13 22:32:45 +03:00
parent 4128b0df20
commit 498c3e77cc
2 changed files with 31 additions and 33 deletions

View File

@@ -15,6 +15,7 @@ import { FloatingActionButton } from './components';
const TabNavigator = () => { const TabNavigator = () => {
const dimensions = useDimensions(); const dimensions = useDimensions();
const [showFab, setShowFab] = React.useState(true);
const TabNavigatorBase = createBottomTabNavigator(); const TabNavigatorBase = createBottomTabNavigator();
return ( return (
@@ -41,6 +42,7 @@ const TabNavigator = () => {
target: state.key, target: state.key,
}); });
} }
setShowFab(route.name !== 'Settings');
}} }}
renderIcon={({ route, focused, color }) => { renderIcon={({ route, focused, color }) => {
const { options } = descriptors[route.key]; const { options } = descriptors[route.key];
@@ -86,7 +88,7 @@ const TabNavigator = () => {
}} }}
/> />
</TabNavigatorBase.Navigator> </TabNavigatorBase.Navigator>
<FloatingActionButton /> <FloatingActionButton visible={showFab} />
</> </>
); );
}; };

View File

@@ -1,13 +1,22 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { View } from 'react-native'; import { View } from 'react-native';
import { Button, List, Snackbar, Switch, Text } from 'react-native-paper'; import {
import { useRealm } from '@realm/react'; Button,
List,
Portal,
Snackbar,
Switch,
Text,
} from 'react-native-paper';
import { openDocumentTree } from 'react-native-scoped-storage'; import { openDocumentTree } from 'react-native-scoped-storage';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { RootScrollView } from '../components'; import { RootScrollView } from '../components';
import styles from '../styles'; import styles from '../styles';
import { Meme } from '../database'; import {
import { RootState, updateNoMedia, updateStorageUri } from '../state'; RootState,
updateNoMedia,
updateStorageUri,
} from '../state';
import type {} from 'redux-thunk/extend-redux'; import type {} from 'redux-thunk/extend-redux';
import { useDimensions } from '../contexts'; import { useDimensions } from '../contexts';
@@ -20,27 +29,11 @@ const SettingsScreen = () => {
const [snackbarVisible, setSnackbarVisible] = useState(false); const [snackbarVisible, setSnackbarVisible] = useState(false);
const [snackbarMessage, setSnackbarMessage] = useState(''); const [snackbarMessage, setSnackbarMessage] = useState('');
const realm = useRealm();
const optimizeDatabase = () => { const optimizeDatabase = () => {
setOptimizingDatabase(true); setOptimizingDatabase(true);
// TODO: clean up missing / extra files
const memes = realm.objects<Meme>('Meme'); setSnackbarMessage('Database optimized!');
realm.write(() => { setSnackbarVisible(true);
for (let index = memes.length - 1; index >= 0; index--) {
// TODO: stat the uri to see if it exists and remove entry if it doesn't
}
});
const success = realm.compact();
if (success) {
setSnackbarMessage('Database optimized!');
setSnackbarVisible(true);
} else {
setSnackbarMessage('Database optimization failed!');
setSnackbarVisible(true);
}
setOptimizingDatabase(false); setOptimizingDatabase(false);
}; };
@@ -92,15 +85,18 @@ const SettingsScreen = () => {
</List.Section> </List.Section>
</View> </View>
</RootScrollView> </RootScrollView>
<Snackbar <Portal>
visible={snackbarVisible} <Snackbar
onDismiss={() => setSnackbarVisible(false)} visible={snackbarVisible}
action={{ onDismiss={() => setSnackbarVisible(false)}
label: 'Dismiss', style={{ marginBottom: dimensions.static.verticalScale(75) }}
onPress: () => setSnackbarVisible(false), action={{
}}> label: 'Dismiss',
{snackbarMessage} onPress: () => setSnackbarVisible(false),
</Snackbar> }}>
{snackbarMessage}
</Snackbar>
</Portal>
</> </>
); );
}; };