2021-12-13 14:43:30 +00:00
|
|
|
import { MultiAutocompleteChoiceType } from "@saleor/components/MultiAutocompleteSelectField";
|
2022-08-02 12:50:37 +00:00
|
|
|
import PreviewPill from "@saleor/components/PreviewPill";
|
2021-12-13 14:43:30 +00:00
|
|
|
import {
|
2021-12-23 12:42:10 +00:00
|
|
|
WebhookEventTypeAsyncEnum,
|
2022-03-09 08:56:55 +00:00
|
|
|
WebhookEventTypeSyncEnum,
|
2022-06-21 09:36:55 +00:00
|
|
|
WebhookFragment,
|
2022-03-09 08:56:55 +00:00
|
|
|
} from "@saleor/graphql";
|
2022-08-02 12:50:37 +00:00
|
|
|
import React from "react";
|
2020-03-18 11:03:20 +00:00
|
|
|
|
|
|
|
export function isUnnamed(webhook: WebhookFragment): boolean {
|
|
|
|
return ["", null].includes(webhook?.name);
|
|
|
|
}
|
2021-12-13 14:43:30 +00:00
|
|
|
|
2022-08-02 12:50:37 +00:00
|
|
|
type WebhookEventType = WebhookEventTypeSyncEnum | WebhookEventTypeAsyncEnum;
|
|
|
|
|
|
|
|
const isWebhookInPreview = (webhook: WebhookEventType) =>
|
|
|
|
([
|
|
|
|
WebhookEventTypeSyncEnum.CHECKOUT_CALCULATE_TAXES,
|
|
|
|
WebhookEventTypeSyncEnum.ORDER_CALCULATE_TAXES,
|
|
|
|
] as WebhookEventType[]).includes(webhook);
|
|
|
|
|
2021-12-13 14:43:30 +00:00
|
|
|
export function mapSyncEventsToChoices(
|
2022-06-21 09:36:55 +00:00
|
|
|
events: WebhookEventTypeSyncEnum[],
|
2021-12-13 14:43:30 +00:00
|
|
|
): MultiAutocompleteChoiceType[] {
|
|
|
|
return events.map(event => ({
|
|
|
|
label: event,
|
2022-06-21 09:36:55 +00:00
|
|
|
value: event,
|
2022-08-02 12:50:37 +00:00
|
|
|
badge: isWebhookInPreview(event) ? <PreviewPill /> : undefined,
|
2021-12-13 14:43:30 +00:00
|
|
|
}));
|
|
|
|
}
|
|
|
|
|
|
|
|
export function mapAsyncEventsToChoices(
|
2021-12-23 12:42:10 +00:00
|
|
|
events: WebhookEventTypeAsyncEnum[],
|
2022-06-21 09:36:55 +00:00
|
|
|
selectedEvents: WebhookEventTypeAsyncEnum[],
|
2021-12-13 14:43:30 +00:00
|
|
|
): MultiAutocompleteChoiceType[] {
|
|
|
|
const isAnyAsyncEventSelected = selectedEvents.includes(
|
2022-06-21 09:36:55 +00:00
|
|
|
WebhookEventTypeAsyncEnum.ANY_EVENTS,
|
2021-12-13 14:43:30 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
return events.map(event => ({
|
|
|
|
label: event,
|
|
|
|
value: event,
|
|
|
|
disabled:
|
2022-06-21 09:36:55 +00:00
|
|
|
event !== WebhookEventTypeAsyncEnum.ANY_EVENTS && isAnyAsyncEventSelected,
|
2021-12-13 14:43:30 +00:00
|
|
|
}));
|
|
|
|
}
|
|
|
|
|
|
|
|
export const filterSelectedAsyncEvents = (
|
2022-06-21 09:36:55 +00:00
|
|
|
asyncEvents: WebhookEventTypeAsyncEnum[],
|
2021-12-13 14:43:30 +00:00
|
|
|
) => {
|
|
|
|
const anyEvent = asyncEvents.find(
|
2022-06-21 09:36:55 +00:00
|
|
|
event => event === WebhookEventTypeAsyncEnum.ANY_EVENTS,
|
2021-12-13 14:43:30 +00:00
|
|
|
);
|
|
|
|
if (anyEvent) {
|
|
|
|
return [anyEvent];
|
|
|
|
}
|
|
|
|
return asyncEvents;
|
|
|
|
};
|