import React, {useCallback} from 'react' import { ActivityIndicator, StyleSheet, useWindowDimensions, View, } from 'react-native' import {AppBskyGraphDefs as GraphDefs} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {cleanError} from '#/lib/strings/errors' import {useModalControls} from '#/state/modals' import { getMembership, ListMembersip, useDangerousListMembershipsQuery, useListMembershipAddMutation, useListMembershipRemoveMutation, } from '#/state/queries/list-memberships' import {useSession} from '#/state/session' import {usePalette} from 'lib/hooks/usePalette' import {sanitizeDisplayName} from 'lib/strings/display-names' import {sanitizeHandle} from 'lib/strings/handles' import {s} from 'lib/styles' import {isAndroid, isMobileWeb, isWeb} from 'platform/detection' import {MyLists} from '../lists/MyLists' import {Button} from '../util/forms/Button' import {Text} from '../util/text/Text' import * as Toast from '../util/Toast' import {UserAvatar} from '../util/UserAvatar' export const snapPoints = ['fullscreen'] export function Component({ subject, handle, displayName, onAdd, onRemove, }: { subject: string handle: string displayName: string onAdd?: (listUri: string) => void onRemove?: (listUri: string) => void }) { const {closeModal} = useModalControls() const pal = usePalette('default') const {height: screenHeight} = useWindowDimensions() const {_} = useLingui() const {data: memberships} = useDangerousListMembershipsQuery() const onPressDone = useCallback(() => { closeModal() }, [closeModal]) const listStyle = React.useMemo(() => { if (isMobileWeb) { return [pal.border, {height: screenHeight / 2}] } else if (isWeb) { return [pal.border, {height: screenHeight / 1.5}] } return [pal.border, {flex: 1, borderTopWidth: StyleSheet.hairlineWidth}] }, [pal.border, screenHeight]) return ( Update {displayName} in Lists ( )} style={listStyle} />