Fix webhooks events

This commit is contained in:
Krzysztof Bialoglowicz 2019-10-16 14:03:14 +02:00
parent fd39ab1b85
commit 3b844eec0a
4 changed files with 63 additions and 7 deletions

View file

@ -11,7 +11,8 @@ import {
AuthorizationKeyType, AuthorizationKeyType,
OrderStatus, OrderStatus,
PaymentChargeStatusEnum, PaymentChargeStatusEnum,
TaxRateType TaxRateType,
WebhookEventTypeEnum
} from "./types/globalTypes"; } from "./types/globalTypes";
export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick< export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<
@ -333,6 +334,61 @@ export const translatedTaxRates = (intl: IntlShape) => ({
[TaxRateType.WATER]: intl.formatMessage(taxRatesMessages.water) [TaxRateType.WATER]: intl.formatMessage(taxRatesMessages.water)
}); });
const webhooksEventMessages = defineMessages({
anyEvents: {
defaultMessage: "Any events",
description: "event"
},
customerCreated: {
defaultMessage: "Customer created",
description: "event"
},
orderCancelled: {
defaultMessage: "Order cancelled",
description: "event"
},
orderCreated: {
defaultMessage: "Order created",
description: "event"
},
orderFullyPaid: {
defaultMessage: "Order fully paid",
description: "event"
},
orderUpdated: {
defaultMessage: "Order updated",
description: "event"
},
productCreated: {
defaultMessage: "Product created",
description: "event"
}
});
export const translatedWebhookEvents = (intl: IntlShape) => ({
[WebhookEventTypeEnum.ANY_EVENTS]: intl.formatMessage(
webhooksEventMessages.anyEvents
),
[WebhookEventTypeEnum.CUSTOMER_CREATED]: intl.formatMessage(
webhooksEventMessages.customerCreated
),
[WebhookEventTypeEnum.ORDER_CANCELLED]: intl.formatMessage(
webhooksEventMessages.orderCancelled
),
[WebhookEventTypeEnum.ORDER_CREATED]: intl.formatMessage(
webhooksEventMessages.orderCreated
),
[WebhookEventTypeEnum.ORDER_FULLY_PAID]: intl.formatMessage(
webhooksEventMessages.orderFullyPaid
),
[WebhookEventTypeEnum.ORDER_UPDATED]: intl.formatMessage(
webhooksEventMessages.orderUpdated
),
[WebhookEventTypeEnum.PRODUCT_CREATED]: intl.formatMessage(
webhooksEventMessages.productCreated
)
});
export const authorizationKeyTypes = { export const authorizationKeyTypes = {
[AuthorizationKeyType.FACEBOOK]: "Facebook", [AuthorizationKeyType.FACEBOOK]: "Facebook",
[AuthorizationKeyType.GOOGLE_OAUTH2]: "Google OAuth2" [AuthorizationKeyType.GOOGLE_OAUTH2]: "Google OAuth2"

View file

@ -5,6 +5,7 @@ import CardTitle from "@saleor/components/CardTitle";
import ControlledCheckbox from "@saleor/components/ControlledCheckbox"; import ControlledCheckbox from "@saleor/components/ControlledCheckbox";
import Hr from "@saleor/components/Hr"; import Hr from "@saleor/components/Hr";
import { ChangeEvent } from "@saleor/hooks/useForm"; import { ChangeEvent } from "@saleor/hooks/useForm";
import { translatedWebhookEvents } from "@saleor/misc";
import { WebhookEventTypeEnum } from "@saleor/types/globalTypes"; import { WebhookEventTypeEnum } from "@saleor/types/globalTypes";
import React from "react"; import React from "react";
import { useIntl } from "react-intl"; import { useIntl } from "react-intl";
@ -25,15 +26,14 @@ const WebhookEvents: React.StatelessComponent<WebhookEventsProps> = ({
}) => { }) => {
const intl = useIntl(); const intl = useIntl();
const eventsEnum = Object.values(WebhookEventTypeEnum); const eventsEnum = Object.values(WebhookEventTypeEnum);
const translatedEvents = translatedWebhookEvents(intl);
const handleAllEventsChange = (event: ChangeEvent) => const handleAllEventsChange = (event: ChangeEvent) =>
onChange(event, () => onChange(event, () =>
onChange({ onChange({
target: { target: {
name: "events", name: "events",
value: event.target.value value: event.target.value ? WebhookEventTypeEnum.ANY_EVENTS : []
? WebhookEventTypeEnum.ANY_EVENTS
: data.events
} }
} as any) } as any)
); );
@ -84,7 +84,7 @@ const WebhookEvents: React.StatelessComponent<WebhookEventsProps> = ({
<ControlledCheckbox <ControlledCheckbox
checked={data.events.includes(event)} checked={data.events.includes(event)}
disabled={disabled} disabled={disabled}
label={event.replace(/\./, "")} label={translatedEvents[event]}
name={event} name={event}
onChange={handleEventsChange} onChange={handleEventsChange}
/> />

View file

@ -69,7 +69,7 @@ const WebhooksDetailsPage: React.StatelessComponent<
isActive: maybe(() => webhook.isActive, false), isActive: maybe(() => webhook.isActive, false),
name: maybe(() => webhook.name, ""), name: maybe(() => webhook.name, ""),
secretKey: maybe(() => webhook.secretKey, ""), secretKey: maybe(() => webhook.secretKey, ""),
serviceAccount: maybe(() => webhook.serviceAccount.name, ""), serviceAccount: maybe(() => webhook.serviceAccount.id, ""),
targetUrl: maybe(() => webhook.targetUrl, "") targetUrl: maybe(() => webhook.targetUrl, "")
}; };
const [ const [

View file

@ -128,7 +128,7 @@ export const WebhooksDetails: React.StatelessComponent<
input: { input: {
events: data.allEvents events: data.allEvents
? [WebhookEventTypeEnum.ANY_EVENTS] ? [WebhookEventTypeEnum.ANY_EVENTS]
: data.events, : data.events.slice(1),
isActive: data.isActive, isActive: data.isActive,
name: data.name, name: data.name,
secretKey: data.secretKey, secretKey: data.secretKey,