From 2e5f73ff6149f9ac2834b0417c84b76763ef5ee2 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Thu, 28 Sep 2023 12:41:44 -0700 Subject: Account quick switch modal (#1567) * quick switch menu * Some small tweaks and fixes to the account switch modal * Factor out the account switcher logic to a hook * Add haptic feedback on account switcher open * Fix bad merge --------- Co-authored-by: Samuel Newman --- src/view/com/modals/SwitchAccount.tsx | 136 ++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 src/view/com/modals/SwitchAccount.tsx (limited to 'src/view/com/modals/SwitchAccount.tsx') diff --git a/src/view/com/modals/SwitchAccount.tsx b/src/view/com/modals/SwitchAccount.tsx new file mode 100644 index 000000000..51d75e3ef --- /dev/null +++ b/src/view/com/modals/SwitchAccount.tsx @@ -0,0 +1,136 @@ +import React from 'react' +import { + ActivityIndicator, + StyleSheet, + TouchableOpacity, + View, +} from 'react-native' +import {Text} from '../util/text/Text' +import {useStores} from 'state/index' +import {s} from 'lib/styles' +import {usePalette} from 'lib/hooks/usePalette' +import {useAnalytics} from 'lib/analytics/analytics' +import {useAccountSwitcher} from 'lib/hooks/useAccountSwitcher' +import {UserAvatar} from '../util/UserAvatar' +import {AccountDropdownBtn} from '../util/AccountDropdownBtn' +import {Link} from '../util/Link' +import {makeProfileLink} from 'lib/routes/links' +import {BottomSheetScrollView} from '@gorhom/bottom-sheet' +import {Haptics} from 'lib/haptics' + +export const snapPoints = ['40%', '90%'] + +export function Component({}: {}) { + const pal = usePalette('default') + const {track} = useAnalytics() + + const store = useStores() + const [isSwitching, _, onPressSwitchAccount] = useAccountSwitcher() + + React.useEffect(() => { + Haptics.default() + }) + + const onPressSignout = React.useCallback(() => { + track('Settings:SignOutButtonClicked') + store.session.logout() + }, [track, store]) + + return ( + + + Switch Account + + + {isSwitching ? ( + + + + ) : ( + + + + + + + + {store.me.displayName || store.me.handle} + + + {store.me.handle} + + + + + Sign out + + + + + )} + {store.session.switchableAccounts.map(account => ( + onPressSwitchAccount(account) + } + accessibilityRole="button" + accessibilityLabel={`Switch to ${account.handle}`} + accessibilityHint="Switches the account you are logged in to"> + + + + + + {account.displayName || account.handle} + + + {account.handle} + + + + + ))} + + + ) +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, + innerContainer: { + paddingBottom: 20, + }, + title: { + textAlign: 'center', + marginTop: 12, + marginBottom: 12, + }, + linkCard: { + flexDirection: 'row', + alignItems: 'center', + paddingVertical: 12, + paddingHorizontal: 18, + marginBottom: 1, + }, + avi: { + marginRight: 12, + }, + dimmed: { + opacity: 0.5, + }, +}) -- cgit 1.4.1