argo-cd
33 строки · 1.4 Кб
1import * as React from 'react';
2import {FormField} from 'argo-ui';
3import {FormApi} from 'react-form';
4import * as models from '../../../shared/models';
5import {MapInputField} from '../../../shared/components';
6import {notificationSubscriptionsParser} from './edit-notification-subscriptions';
7
8export const EditAnnotations = (props: {formApi: FormApi; app: models.Application}) => {
9const once = React.useRef(false);
10
11const removeNotificationSubscriptionRelatedAnnotations = () => {
12const notificationSubscriptions = notificationSubscriptionsParser.annotationsToSubscriptions(props.app.metadata.annotations);
13
14if (notificationSubscriptions.length > 0) {
15const annotationsWithoutNotificationSubscriptions = props.app.metadata.annotations || {};
16
17for (const notificationSubscriptionAnnotation of notificationSubscriptions) {
18const key = notificationSubscriptionsParser.subscriptionToAnnotationKey(notificationSubscriptionAnnotation);
19
20delete annotationsWithoutNotificationSubscriptions[key];
21}
22
23props.formApi.setValue('metadata.annotations', annotationsWithoutNotificationSubscriptions);
24}
25};
26
27if (!once.current) {
28once.current = true;
29removeNotificationSubscriptionRelatedAnnotations();
30}
31
32return <FormField formApi={props.formApi} field='metadata.annotations' component={MapInputField} />;
33};
34