Fix settings snackbar positioning
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -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} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@@ -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>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user