in frontend/src/old-pages/Clusters/Costs/EnableCostMonitoringButton.tsx [24:114]
export function EnableCostMonitoringButton() {
const {t} = useTranslation()
const isCostMonitoringActive = useFeatureFlag('cost_monitoring')
const defaultRegion = useState(['aws', 'region'])
const region = useState(['app', 'selectedRegion']) || defaultRegion
const [modalVisible, setModalVisible] = React.useState(false)
const showModal = useCallback(() => {
setModalVisible(true)
}, [setModalVisible])
const dismissModal = useCallback(() => {
setModalVisible(false)
}, [setModalVisible])
const onActivationError = useCallback(
(kind: CostMonitoringActivationErrorKind, message?: string) => {
switch (kind) {
case 'costExplorerCannotBeAccessed':
showModal()
break
case 'genericError':
notify(message, 'error')
break
}
},
[showModal],
)
const onActivationSuccess = useCallback(() => {
notify(t('costMonitoring.activateButton.activationSuccess'))
}, [t])
const {data: costMonitoringStatus, isLoading} = useCostMonitoringStatus()
const costMonitoringStatusMutation = useActivateCostMonitoringMutation(
onActivationError,
onActivationSuccess,
)
const onClick = useCallback(() => {
costMonitoringStatusMutation.mutate()
}, [costMonitoringStatusMutation])
const domain = consoleDomain(region)
const costExplorerHref = `${domain}/cost-management/home#/cost-explorer`
if (isLoading || costMonitoringStatus || !isCostMonitoringActive) return null
return (
<>
<Button
onClick={onClick}
loading={costMonitoringStatusMutation.isLoading}
>
{t('costMonitoring.activateButton.label')}
</Button>
{modalVisible && (
<Modal
onDismiss={dismissModal}
visible={modalVisible}
closeAriaLabel={t(
'costMonitoring.enableCostExplorerModal.closeAriaLabel',
)}
footer={
<Box float="right">
<SpaceBetween direction="horizontal" size="xs">
<Button onClick={dismissModal} variant="link">
{t('costMonitoring.enableCostExplorerModal.actions.cancel')}
</Button>
<Button
variant="primary"
iconName="external"
target="_blank"
href={costExplorerHref}
onClick={dismissModal}
>
{t(
'costMonitoring.enableCostExplorerModal.actions.goToCostExplorer',
)}
</Button>
</SpaceBetween>
</Box>
}
header={t('costMonitoring.enableCostExplorerModal.title')}
>
<Trans i18nKey="costMonitoring.enableCostExplorerModal.description" />
</Modal>
)}
</>
)
}