saleor-app-sdk-REDIS_APL/src/handlers/next/saleor-webhooks/sync-webhook-response-builder.ts

40 lines
1.1 KiB
TypeScript
Raw Normal View History

import { SyncWebhookEventType } from "../../../types";
2023-03-07 10:04:58 +00:00
export type SyncWebhookResponsesMap = {
CHECKOUT_CALCULATE_TAXES: {
shipping_price_gross_amount: number;
shipping_price_net_amount: number;
2023-03-07 10:02:37 +00:00
shipping_tax_rate: number;
lines: Array<{
total_gross_amount: number;
total_net_amount: number;
2023-03-07 10:02:37 +00:00
tax_rate: number;
}>;
};
CHECKOUT_FILTER_SHIPPING_METHODS: {
excluded_methods: Array<{
id: string;
2023-03-07 10:02:37 +00:00
reason?: string;
}>;
};
ORDER_CALCULATE_TAXES: SyncWebhookResponsesMap["CHECKOUT_CALCULATE_TAXES"];
ORDER_FILTER_SHIPPING_METHODS: SyncWebhookResponsesMap["CHECKOUT_FILTER_SHIPPING_METHODS"];
SHIPPING_LIST_METHODS_FOR_CHECKOUT: Array<{
id: string;
2023-03-07 10:02:37 +00:00
name?: string;
amount: number;
currency: string; // or enum?
2023-03-07 10:06:03 +00:00
/**
* Integer
*/
maximum_delivery_days?: number;
}>;
};
/**
* Identity function, but it works on Typescript level to pick right payload based on first param
*/
export const buildSyncWebhookResponsePayload = <E extends SyncWebhookEventType>(
payload: SyncWebhookResponsesMap[E]
): SyncWebhookResponsesMap[E] => payload;