import { css } from '@emotion/css'; import React, { useState } from 'react'; import { useAsync } from 'react-use'; import { GrafanaTheme2 } from '@grafana/data'; import { useStyles2, Icon } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { getTogglesAPI } from './AdminFeatureTogglesAPI'; import { AdminFeatureTogglesTable } from './AdminFeatureTogglesTable'; export default function AdminFeatureTogglesPage() { const [reload, setReload] = useState(1); const togglesApi = getTogglesAPI(); const featureState = useAsync(() => togglesApi.getFeatureToggles(), [reload]); const styles = useStyles2(getStyles); const handleUpdateSuccess = () => { setReload(reload + 1); }; const EditingAlert = () => { return (
{featureState.value?.restartRequired ? 'A restart is pending for your Grafana instance to apply the latest feature toggle changes' : 'Saving feature toggle changes will prompt a restart of the instance, which may take a few minutes'}
); }; const subTitle = (
View and edit feature toggles. Read more about feature toggles at{' '} grafana.com .
); return ( <> {featureState.error} {featureState.loading && 'Fetching feature toggles'} {featureState.value && ( )} ); } function getStyles(theme: GrafanaTheme2) { return { warning: css({ display: 'flex', marginTop: theme.spacing(0.25), marginBottom: theme.spacing(0.25), }), icon: css({ color: theme.colors.warning.main, paddingRight: theme.spacing(), }), message: css({ color: theme.colors.text.secondary, marginTop: theme.spacing(0.25), }), }; }