diff options
Diffstat (limited to 'src/view/screens/Settings.tsx')
-rw-r--r-- | src/view/screens/Settings.tsx | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/src/view/screens/Settings.tsx b/src/view/screens/Settings.tsx index c2953b59d..94f5acd93 100644 --- a/src/view/screens/Settings.tsx +++ b/src/view/screens/Settings.tsx @@ -7,17 +7,20 @@ import { } from 'react-native' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {observer} from 'mobx-react-lite' -import {useStores} from '../../state' +import * as AppInfo from 'lib/app-info' +import {useStores} from 'state/index' import {ScreenParams} from '../routes' -import {s} from '../lib/styles' +import {s} from 'lib/styles' import {ScrollView} from '../com/util/Views' import {ViewHeader} from '../com/util/ViewHeader' import {Link} from '../com/util/Link' import {Text} from '../com/util/text/Text' import * as Toast from '../com/util/Toast' import {UserAvatar} from '../com/util/UserAvatar' -import {usePalette} from '../lib/hooks/usePalette' -import {AccountData} from '../../state/models/session' +import {usePalette} from 'lib/hooks/usePalette' +import {AccountData} from 'state/models/session' +import {useAnalytics} from 'lib/analytics' +import {DeleteAccountModal} from 'state/models/shell-ui' export const Settings = observer(function Settings({ navIdx, @@ -25,9 +28,14 @@ export const Settings = observer(function Settings({ }: ScreenParams) { const pal = usePalette('default') const store = useStores() + const {screen, track} = useAnalytics() const [isSwitching, setIsSwitching] = React.useState(false) useEffect(() => { + screen('Settings') + }, [screen]) + + useEffect(() => { if (!visible) { return } @@ -36,22 +44,30 @@ export const Settings = observer(function Settings({ }, [visible, store, navIdx]) const onPressSwitchAccount = async (acct: AccountData) => { + track('Settings:SwitchAccountButtonClicked') setIsSwitching(true) if (await store.session.resumeSession(acct)) { setIsSwitching(false) + store.nav.tab.fixedTabReset() Toast.show(`Signed in as ${acct.displayName || acct.handle}`) return } setIsSwitching(false) Toast.show('Sorry! We need you to enter your password.') + store.nav.tab.fixedTabReset() store.session.clear() } const onPressAddAccount = () => { + track('Settings:AddAccountButtonClicked') store.session.clear() } const onPressSignout = () => { + track('Settings:SignOutButtonClicked') store.session.logout() } + const onPressDeleteAccount = () => { + store.shell.openModal(new DeleteAccountModal()) + } return ( <View style={[s.h100pct]} testID="settingsScreen"> @@ -143,22 +159,34 @@ export const Settings = observer(function Settings({ </Text> </View> </TouchableOpacity> + <View style={styles.spacer} /> <Text type="sm-medium" style={[s.mb5]}> + Danger zone + </Text> + <TouchableOpacity + style={[pal.view, s.p10, s.mb10]} + onPress={onPressDeleteAccount}> + <Text style={pal.textLight}>Delete my account</Text> + </TouchableOpacity> + <Text type="sm-medium" style={[s.mt10, s.mb5]}> Developer tools </Text> <Link style={[pal.view, s.p10, s.mb2]} href="/sys/log" title="System log"> - <Text style={pal.link}>System log</Text> + <Text style={pal.textLight}>System log</Text> </Link> <Link style={[pal.view, s.p10, s.mb2]} href="/sys/debug" title="Debug tools"> - <Text style={pal.link}>Storybook</Text> + <Text style={pal.textLight}>Storybook</Text> </Link> + <Text type="sm" style={[s.mt10, pal.textLight]}> + Build version {AppInfo.appVersion} ({AppInfo.buildVersion}) + </Text> <View style={s.footerSpacer} /> </View> </ScrollView> |