notificationSettingsByOrganization.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import Form from 'sentry/components/forms/form';
  2. import {t} from 'sentry/locale';
  3. import {OrganizationSummary} from 'sentry/types';
  4. import withOrganizations from 'sentry/utils/withOrganizations';
  5. import {
  6. NotificationSettingsByProviderObject,
  7. NotificationSettingsObject,
  8. } from 'sentry/views/settings/account/notifications/constants';
  9. import {StyledJsonForm} from 'sentry/views/settings/account/notifications/notificationSettingsByProjects';
  10. import {
  11. getParentData,
  12. getParentField,
  13. } from 'sentry/views/settings/account/notifications/utils';
  14. type Props = {
  15. notificationSettings: NotificationSettingsObject;
  16. notificationType: string;
  17. onChange: (
  18. changedData: NotificationSettingsByProviderObject,
  19. parentId: string
  20. ) => NotificationSettingsObject;
  21. onSubmitSuccess: () => void;
  22. organizations: OrganizationSummary[];
  23. };
  24. function NotificationSettingsByOrganization({
  25. notificationType,
  26. notificationSettings,
  27. onChange,
  28. onSubmitSuccess,
  29. organizations,
  30. }: Props) {
  31. return (
  32. <Form
  33. saveOnBlur
  34. apiMethod="PUT"
  35. apiEndpoint="/users/me/notification-settings/"
  36. initialData={getParentData(notificationType, notificationSettings, organizations)}
  37. onSubmitSuccess={onSubmitSuccess}
  38. >
  39. <StyledJsonForm
  40. title={t('Organizations')}
  41. fields={organizations.map(organization => {
  42. return getParentField(
  43. notificationType,
  44. notificationSettings,
  45. organization,
  46. onChange
  47. );
  48. })}
  49. />
  50. </Form>
  51. );
  52. }
  53. export default withOrganizations(NotificationSettingsByOrganization);