import {type AppBskyGraphDefs} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {logger} from '#/logger' import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list' import {atoms as a} from '#/alf' import {Button, ButtonIcon, ButtonText} from '#/components/Button' import {Mute_Stroke2_Corner0_Rounded as MuteIcon} from '#/components/icons/Mute' import {PersonX_Stroke2_Corner0_Rounded as PersonXIcon} from '#/components/icons/Person' import {Loader} from '#/components/Loader' import * as Menu from '#/components/Menu' import * as Prompt from '#/components/Prompt' import * as Toast from '#/components/Toast' export function SubscribeMenu({list}: {list: AppBskyGraphDefs.ListView}) { const {_} = useLingui() const subscribeMutePromptControl = Prompt.usePromptControl() const subscribeBlockPromptControl = Prompt.usePromptControl() const {mutateAsync: muteList, isPending: isMutePending} = useListMuteMutation() const {mutateAsync: blockList, isPending: isBlockPending} = useListBlockMutation() const isPending = isMutePending || isBlockPending const onSubscribeMute = async () => { try { await muteList({uri: list.uri, mute: true}) Toast.show(_(msg({message: 'List muted', context: 'toast'}))) logger.metric( 'moderation:subscribedToList', {listType: 'mute'}, {statsig: true}, ) } catch { Toast.show( _( msg`There was an issue. Please check your internet connection and try again.`, ), {type: 'error'}, ) } } const onSubscribeBlock = async () => { try { await blockList({uri: list.uri, block: true}) Toast.show(_(msg({message: 'List blocked', context: 'toast'}))) logger.metric( 'moderation:subscribedToList', {listType: 'block'}, {statsig: true}, ) } catch { Toast.show( _( msg`There was an issue. Please check your internet connection and try again.`, ), {type: 'error'}, ) } } return ( <>