mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
import {Fragment} from 'react';
|
|
import {browserHistory} from 'react-router';
|
|
|
|
import {Breadcrumbs} from 'sentry/components/breadcrumbs';
|
|
import FeedbackWidgetButton from 'sentry/components/feedback/widget/feedbackWidgetButton';
|
|
import * as Layout from 'sentry/components/layouts/thirds';
|
|
import {t} from 'sentry/locale';
|
|
import HookStore from 'sentry/stores/hookStore';
|
|
import useOrganization from 'sentry/utils/useOrganization';
|
|
import usePageFilters from 'sentry/utils/usePageFilters';
|
|
import {normalizeUrl} from 'sentry/utils/withDomainRequired';
|
|
|
|
import MonitorForm from './components/monitorForm';
|
|
import type {Monitor} from './types';
|
|
|
|
function CreateMonitor() {
|
|
const organization = useOrganization();
|
|
const orgSlug = organization.slug;
|
|
const {selection} = usePageFilters();
|
|
|
|
const monitorCreationCallbacks = HookStore.get('callback:on-monitor-created');
|
|
|
|
function onSubmitSuccess(data: Monitor) {
|
|
const endpointOptions = {
|
|
query: {
|
|
project: selection.projects,
|
|
environment: selection.environments,
|
|
},
|
|
};
|
|
browserHistory.push(
|
|
normalizeUrl({
|
|
pathname: `/organizations/${orgSlug}/crons/${data.slug}/`,
|
|
query: endpointOptions.query,
|
|
})
|
|
);
|
|
monitorCreationCallbacks.map(cb => cb(organization));
|
|
}
|
|
|
|
return (
|
|
<Fragment>
|
|
<Layout.Header>
|
|
<Layout.HeaderContent>
|
|
<Breadcrumbs
|
|
crumbs={[
|
|
{
|
|
label: t('Crons'),
|
|
to: `/organizations/${orgSlug}/crons/`,
|
|
},
|
|
{
|
|
label: t('Add Monitor'),
|
|
},
|
|
]}
|
|
/>
|
|
<Layout.Title>{t('Add Monitor')}</Layout.Title>
|
|
</Layout.HeaderContent>
|
|
<Layout.HeaderActions>
|
|
<FeedbackWidgetButton />
|
|
</Layout.HeaderActions>
|
|
</Layout.Header>
|
|
<Layout.Body>
|
|
<Layout.Main fullWidth>
|
|
<MonitorForm
|
|
apiMethod="POST"
|
|
apiEndpoint={`/organizations/${orgSlug}/monitors/`}
|
|
onSubmitSuccess={onSubmitSuccess}
|
|
submitLabel={t('Create')}
|
|
/>
|
|
</Layout.Main>
|
|
</Layout.Body>
|
|
</Fragment>
|
|
);
|
|
}
|
|
|
|
export default CreateMonitor;
|