2021-01-30 01:29:15 +01:00
|
|
|
import analytics from '@components/analytics'
|
|
|
|
import MenuContainer from '@components/Menu/Container'
|
|
|
|
import MenuHeader from '@components/Menu/Header'
|
|
|
|
import MenuRow from '@components/Menu/Row'
|
2021-02-28 22:49:55 +01:00
|
|
|
import { displayMessage } from '@components/Message'
|
2021-01-30 01:29:15 +01:00
|
|
|
import {
|
|
|
|
QueryKeyTimeline,
|
|
|
|
useTimelineMutation
|
|
|
|
} from '@utils/queryHooks/timeline'
|
2021-02-28 22:49:55 +01:00
|
|
|
import { useTheme } from '@utils/styles/ThemeManager'
|
2021-01-30 01:29:15 +01:00
|
|
|
import React from 'react'
|
|
|
|
import { useTranslation } from 'react-i18next'
|
|
|
|
import { Alert } from 'react-native'
|
|
|
|
import { useQueryClient } from 'react-query'
|
|
|
|
|
|
|
|
export interface Props {
|
|
|
|
queryKey: QueryKeyTimeline
|
2021-02-13 01:26:02 +01:00
|
|
|
rootQueryKey?: QueryKeyTimeline
|
2021-01-30 01:29:15 +01:00
|
|
|
domain: string
|
|
|
|
dismiss: () => void
|
|
|
|
}
|
|
|
|
|
2021-02-13 01:26:02 +01:00
|
|
|
const ActionsDomain: React.FC<Props> = ({
|
|
|
|
queryKey,
|
|
|
|
rootQueryKey,
|
|
|
|
domain,
|
|
|
|
dismiss
|
|
|
|
}) => {
|
2022-02-12 14:51:01 +01:00
|
|
|
const { theme } = useTheme()
|
2021-01-30 01:29:15 +01:00
|
|
|
const { t } = useTranslation('componentTimeline')
|
|
|
|
const queryClient = useQueryClient()
|
|
|
|
const mutation = useTimelineMutation({
|
|
|
|
onSettled: () => {
|
2021-02-28 22:49:55 +01:00
|
|
|
displayMessage({
|
2022-02-12 14:51:01 +01:00
|
|
|
theme,
|
2021-01-30 01:29:15 +01:00
|
|
|
type: 'success',
|
2021-03-28 23:31:10 +02:00
|
|
|
message: t('common:message.success.message', {
|
2021-01-30 01:29:15 +01:00
|
|
|
function: t(`shared.header.actions.domain.block.function`)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
queryClient.invalidateQueries(queryKey)
|
2021-02-13 01:26:02 +01:00
|
|
|
rootQueryKey && queryClient.invalidateQueries(rootQueryKey)
|
2021-01-30 01:29:15 +01:00
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
return (
|
|
|
|
<MenuContainer>
|
|
|
|
<MenuHeader heading={t(`shared.header.actions.domain.heading`)} />
|
|
|
|
<MenuRow
|
|
|
|
onPress={() => {
|
|
|
|
analytics('timeline_shared_headeractions_domain_block_press', {
|
|
|
|
page: queryKey[1].page
|
|
|
|
})
|
|
|
|
Alert.alert(
|
|
|
|
t('shared.header.actions.domain.alert.title', { domain }),
|
|
|
|
t('shared.header.actions.domain.alert.message'),
|
|
|
|
[
|
|
|
|
{
|
|
|
|
text: t('shared.header.actions.domain.alert.buttons.cancel'),
|
|
|
|
style: 'cancel'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
text: t('shared.header.actions.domain.alert.buttons.confirm'),
|
|
|
|
style: 'destructive',
|
|
|
|
onPress: () => {
|
|
|
|
analytics(
|
|
|
|
'timeline_shared_headeractions_domain_block_confirm',
|
|
|
|
{
|
|
|
|
page: queryKey && queryKey[1].page
|
|
|
|
}
|
|
|
|
)
|
|
|
|
dismiss()
|
|
|
|
mutation.mutate({
|
|
|
|
type: 'domainBlock',
|
|
|
|
queryKey,
|
|
|
|
domain: domain
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
)
|
|
|
|
}}
|
|
|
|
iconFront='CloudOff'
|
|
|
|
title={t(`shared.header.actions.domain.block.button`, {
|
|
|
|
domain
|
|
|
|
})}
|
|
|
|
/>
|
|
|
|
</MenuContainer>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default ActionsDomain
|