From da4fd99a8ca849c65af1475162a6aaebde93d43e Mon Sep 17 00:00:00 2001 From: Piotr Grundas Date: Thu, 10 Oct 2024 14:41:14 +0200 Subject: [PATCH] [MS-760] feat: More emails --- src/api/rest/saleor/webhooks.ts | 5 + src/emails/components/LinesSection.tsx | 2 +- src/emails/components/SubHeader.tsx | 2 +- .../AccountChangeEmailRequestedEmail.tsx | 2 +- .../AccountConfirmationRequestedEmail.tsx | 2 +- .../templates/AccountConfirmedEmail.tsx | 2 +- .../templates/AccountDeleteRequestedEmail.tsx | 2 +- src/emails/templates/AccountDeletedEmail.tsx | 2 +- .../AccountSetPasswordRequestedEmail.tsx | 2 +- .../templates/FulfillmentCreatedEmail.tsx | 137 ++++++++ .../FulfillmentTrackingNumberUpdatedEmail.tsx | 156 ++++++--- src/emails/templates/GiftCardSentEmail.tsx | 2 +- src/emails/templates/OrderRefundedEmail.tsx | 119 ++++++- .../fragments/OrderBaseFragment.graphql | 15 + .../fragments/OrderFragment.graphql | 14 +- src/graphql/operations/fragments/generated.ts | 39 ++- .../FulfillmentCreatedSubscription.graphql | 17 + ...tTrackingNumberUpdatedSubscription.graphql | 11 +- .../OrderRefundedSubscription.graphql | 7 +- .../operations/subscriptions/generated.ts | 321 ++++++++++++++---- src/lib/utils.ts | 8 + tailwind.config.ts | 11 +- 22 files changed, 716 insertions(+), 162 deletions(-) create mode 100644 src/emails/templates/FulfillmentCreatedEmail.tsx create mode 100644 src/graphql/operations/fragments/OrderBaseFragment.graphql create mode 100644 src/graphql/operations/subscriptions/FulfillmentCreatedSubscription.graphql create mode 100644 src/lib/utils.ts diff --git a/src/api/rest/saleor/webhooks.ts b/src/api/rest/saleor/webhooks.ts index 2ac3714..9f767f9 100644 --- a/src/api/rest/saleor/webhooks.ts +++ b/src/api/rest/saleor/webhooks.ts @@ -12,6 +12,7 @@ import { AccountDeleteRequestedSubscriptionDocument, AccountEmailChangedSubscriptionDocument, AccountSetPasswordRequestedSubscriptionDocument, + FulfillmentCreatedSubscriptionDocument, FulfillmentTrackingNumberUpdatedSubscriptionDocument, GiftCardSentSubscriptionDocument, OrderCancelledSubscriptionDocument, @@ -72,6 +73,10 @@ export const EVENT_HANDLERS: { event: "FULFILLMENT_TRACKING_NUMBER_UPDATED", query: FulfillmentTrackingNumberUpdatedSubscriptionDocument.toString(), }, + { + event: "FULFILLMENT_CREATED", + query: FulfillmentCreatedSubscriptionDocument.toString(), + }, { event: "GIFT_CARD_SENT", query: GiftCardSentSubscriptionDocument.toString(), diff --git a/src/emails/components/LinesSection.tsx b/src/emails/components/LinesSection.tsx index 8e3aead..69dbdb4 100644 --- a/src/emails/components/LinesSection.tsx +++ b/src/emails/components/LinesSection.tsx @@ -12,8 +12,8 @@ const LinsSection = ({ header: string; }) => ( <> - {header}
+ {header}
diff --git a/src/emails/components/SubHeader.tsx b/src/emails/components/SubHeader.tsx index d6ad8bf..9fae42d 100644 --- a/src/emails/components/SubHeader.tsx +++ b/src/emails/components/SubHeader.tsx @@ -8,7 +8,7 @@ import { cn } from "@/lib/emails/helpers"; const SubHeader = ({ className, ...props }: HeadingProps) => ( ); diff --git a/src/emails/templates/AccountChangeEmailRequestedEmail.tsx b/src/emails/templates/AccountChangeEmailRequestedEmail.tsx index c943204..05ba403 100644 --- a/src/emails/templates/AccountChangeEmailRequestedEmail.tsx +++ b/src/emails/templates/AccountChangeEmailRequestedEmail.tsx @@ -23,7 +23,7 @@ const AccountChangeEmailRequestedEmail = ({
Change the mail diff --git a/src/emails/templates/AccountConfirmationRequestedEmail.tsx b/src/emails/templates/AccountConfirmationRequestedEmail.tsx index d3d8c7b..206bfc7 100644 --- a/src/emails/templates/AccountConfirmationRequestedEmail.tsx +++ b/src/emails/templates/AccountConfirmationRequestedEmail.tsx @@ -22,7 +22,7 @@ const AccountConfirmationRequestedEmail = ({
Activate the account diff --git a/src/emails/templates/AccountConfirmedEmail.tsx b/src/emails/templates/AccountConfirmedEmail.tsx index 9bc185b..49a4c6e 100644 --- a/src/emails/templates/AccountConfirmedEmail.tsx +++ b/src/emails/templates/AccountConfirmedEmail.tsx @@ -8,7 +8,7 @@ const AccountConfirmedEmail = ({ data, }: EventData) => { return ( - + {() => ( <>
Hi {data.user?.firstName}!
diff --git a/src/emails/templates/AccountDeleteRequestedEmail.tsx b/src/emails/templates/AccountDeleteRequestedEmail.tsx index da81134..4bb1db9 100644 --- a/src/emails/templates/AccountDeleteRequestedEmail.tsx +++ b/src/emails/templates/AccountDeleteRequestedEmail.tsx @@ -18,7 +18,7 @@ const AccountDeleteRequestedEmail = ({
Delete account diff --git a/src/emails/templates/AccountDeletedEmail.tsx b/src/emails/templates/AccountDeletedEmail.tsx index 5048429..912ca95 100644 --- a/src/emails/templates/AccountDeletedEmail.tsx +++ b/src/emails/templates/AccountDeletedEmail.tsx @@ -8,7 +8,7 @@ const AccountDeletedEmail = ({ data, }: EventData) => { return ( - + {() => ( <>
Hi {data.user?.firstName}!
diff --git a/src/emails/templates/AccountSetPasswordRequestedEmail.tsx b/src/emails/templates/AccountSetPasswordRequestedEmail.tsx index 9172185..ced2028 100644 --- a/src/emails/templates/AccountSetPasswordRequestedEmail.tsx +++ b/src/emails/templates/AccountSetPasswordRequestedEmail.tsx @@ -23,7 +23,7 @@ const AccountSetPasswordRequestedEmail = ({
Reset the password diff --git a/src/emails/templates/FulfillmentCreatedEmail.tsx b/src/emails/templates/FulfillmentCreatedEmail.tsx new file mode 100644 index 0000000..bbe1e9d --- /dev/null +++ b/src/emails/templates/FulfillmentCreatedEmail.tsx @@ -0,0 +1,137 @@ +import { Hr } from "@react-email/components"; + +import AddressSection from "@/emails/components/AddressSection"; +import Header from "@/emails/components/Header"; +import Layout from "@/emails/components/Layout"; +import LinsSection from "@/emails/components/LinesSection"; +import { type Line } from "@/emails/components/LinesSummary"; +import Text from "@/emails/components/Text"; +import { type FulfillmentCreatedSubscription } from "@/graphql/operations/subscriptions/generated"; +import { orderLinetoLine } from "@/lib/saleor/utils"; +import { type EventData } from "@/lib/types"; + +const FulfillmentCreatedEmail = ({ + data, +}: EventData) => { + const order = data!.order!; + + return ( + + {({ formatter, paths }) => { + const lines = order.fulfillments + .map(({ lines }) => + lines?.map( + ({ orderLine, quantity }) => + orderLine && { + ...orderLinetoLine({ + line: orderLine, + formatter, + displayGrossPrices: order.displayGrossPrices, + }), + quantity, + } + ) + ) + .filter(Boolean) + .flat() as Line[]; + + return ( + <> +
Hello!
+ + Fulfillment for the order {order.number} has been + updated. + +
+ + Thank you for placing your order! You will soon receive further + details regarding processing and shipping. If you have any + questions, feel free to reach out to us. + + + {order.shippingAddress && ( + + )} + +
+ + + + ); + }} +
+ ); +}; + +const previewProps: EventData = { + data: { + order: { + number: "941", + displayGrossPrices: true, + languageCodeEnum: "EN_US", + channel: { + slug: "channel-us", + }, + userEmail: "kacper.machel+test@mirumee.com", + user: { + firstName: "Machelunio", + }, + shippingAddress: { + id: "QWRkcmVzczoyODE3", + firstName: "Machelunio", + lastName: "Macheluino", + companyName: "", + streetAddress1: "testowe", + streetAddress2: "", + city: "AAAA", + postalCode: "35004", + country: { + code: "US", + }, + countryArea: "AL", + phone: "+12034668960", + }, + fulfillments: [ + { + lines: [ + { + quantity: 1, + orderLine: { + quantity: 1, + variantName: "MP3", + productName: "Classical Gems Damian", + thumbnail: { + url: "https://marina-dev.eu.saleor.cloud/media/thumbnails/products/11_1ac623f7_95ba9540_thumbnail_256.png", + }, + unitPrice: { + gross: { + amount: 15.99, + currency: "USD", + }, + net: { + amount: 15.99, + currency: "USD", + }, + }, + variant: { + product: { + slug: "aa-classical-gems", + }, + }, + }, + }, + ], + }, + ], + }, + }, +}; + +FulfillmentCreatedEmail.PreviewProps = previewProps; +FulfillmentCreatedEmail.Subject = "Fulfillment updated"; + +export default FulfillmentCreatedEmail; diff --git a/src/emails/templates/FulfillmentTrackingNumberUpdatedEmail.tsx b/src/emails/templates/FulfillmentTrackingNumberUpdatedEmail.tsx index a225b1e..f541ea6 100644 --- a/src/emails/templates/FulfillmentTrackingNumberUpdatedEmail.tsx +++ b/src/emails/templates/FulfillmentTrackingNumberUpdatedEmail.tsx @@ -1,6 +1,16 @@ +import { Hr } from "@react-email/components"; + +import AddressSection from "@/emails/components/AddressSection"; +import Header from "@/emails/components/Header"; import Layout from "@/emails/components/Layout"; +import LinsSection from "@/emails/components/LinesSection"; +import { type Line } from "@/emails/components/LinesSummary"; +import Link from "@/emails/components/Link"; +import Text from "@/emails/components/Text"; import { type FulfillmentTrackingNumberUpdatedSubscription } from "@/graphql/operations/subscriptions/generated"; +import { orderLinetoLine } from "@/lib/saleor/utils"; import { type EventData } from "@/lib/types"; +import { isURL } from "@/lib/utils"; const FulfillmentTrackingNumberUpdatedEmail = ({ data, @@ -8,11 +18,65 @@ const FulfillmentTrackingNumberUpdatedEmail = ({ const order = data!.order!; return ( - - {() => <>FulfillmentTrackingNumberUpdatedEmail #{order.number}} + + {({ paths, formatter }) => { + const lines = order.fulfillments + .map(({ lines }) => + lines?.map( + ({ orderLine, quantity }) => + orderLine && { + ...orderLinetoLine({ + line: orderLine, + formatter, + displayGrossPrices: order.displayGrossPrices, + }), + quantity, + } + ) + ) + .filter(Boolean) + .flat() as Line[]; + const tracking = order.fulfillments.find( + ({ trackingNumber }) => trackingNumber + )?.trackingNumber; + const isTrackingURL = isURL(tracking ?? ""); + + return ( + <> +
Hello!
+ + Fulfillment for the order {order.number} has been + updated. +
+ {isTrackingURL ? ( + <> + Tracking url:{" "} + + {tracking} + + + ) : ( + <> + Tracking number:{" "} + {tracking} + + )} +
+ + {order.shippingAddress && ( + + )} + +
+ + + + ); + }}
); }; @@ -20,18 +84,18 @@ const FulfillmentTrackingNumberUpdatedEmail = ({ const previewProps: EventData = { data: { order: { - number: "939", - userEmail: "kacper.machel+test@mirumee.com", - user: { - firstName: "Name", - }, + number: "941", displayGrossPrices: true, + languageCodeEnum: "EN_US", channel: { slug: "channel-us", }, - languageCodeEnum: "EN_US", + userEmail: "kacper.machel+test@mirumee.com", + user: { + firstName: "Machelunio", + }, shippingAddress: { - id: "QWRkcmVzczoyODEx", + id: "QWRkcmVzczoyODE3", firstName: "Machelunio", lastName: "Macheluino", companyName: "", @@ -45,47 +109,37 @@ const previewProps: EventData = { countryArea: "AL", phone: "+12034668960", }, - shippingPrice: { - net: { - amount: 2, - currency: "USD", - }, - }, - subtotal: { - net: { - amount: 15.99, - currency: "USD", - }, - }, - total: { - gross: { - amount: 17.99, - currency: "USD", - }, - }, - lines: [ + fulfillments: [ { - quantity: 1, - variantName: "MP3", - productName: "Classical Gems Damian", - thumbnail: { - url: "https://marina-dev.eu.saleor.cloud/media/thumbnails/products/11_1ac623f7_95ba9540_thumbnail_256.png", - }, - unitPrice: { - gross: { - amount: 15.99, - currency: "USD", - }, - net: { - amount: 15.99, - currency: "USD", - }, - }, - variant: { - product: { - slug: "aa-classical-gems", + trackingNumber: "123", + lines: [ + { + quantity: 1, + orderLine: { + quantity: 1, + variantName: "MP3", + productName: "Classical Gems Damian", + thumbnail: { + url: "https://marina-dev.eu.saleor.cloud/media/thumbnails/products/11_1ac623f7_95ba9540_thumbnail_256.png", + }, + unitPrice: { + gross: { + amount: 15.99, + currency: "USD", + }, + net: { + amount: 15.99, + currency: "USD", + }, + }, + variant: { + product: { + slug: "aa-classical-gems", + }, + }, + }, }, - }, + ], }, ], }, diff --git a/src/emails/templates/GiftCardSentEmail.tsx b/src/emails/templates/GiftCardSentEmail.tsx index 61a11ff..4e9a227 100644 --- a/src/emails/templates/GiftCardSentEmail.tsx +++ b/src/emails/templates/GiftCardSentEmail.tsx @@ -9,7 +9,7 @@ import { type EventData } from "@/lib/types"; const GiftCardSentEmail = ({ data }: EventData) => { return ( - + {() => ( <>
Hi {data.sentToEmail}!
diff --git a/src/emails/templates/OrderRefundedEmail.tsx b/src/emails/templates/OrderRefundedEmail.tsx index d8825f8..268fb0e 100644 --- a/src/emails/templates/OrderRefundedEmail.tsx +++ b/src/emails/templates/OrderRefundedEmail.tsx @@ -1,13 +1,61 @@ +import AddressSection from "@/emails/components/AddressSection"; +import CostSummary from "@/emails/components/CostSummary"; +import Header from "@/emails/components/Header"; import Layout from "@/emails/components/Layout"; +import LinsSection from "@/emails/components/LinesSection"; +import Text from "@/emails/components/Text"; import { type OrderRefundedSubscription } from "@/graphql/operations/subscriptions/generated"; +import { orderLinetoLine } from "@/lib/saleor/utils"; import { type EventData } from "@/lib/types"; const OrderRefundedEmail = ({ data }: EventData) => { const order = data!.order!; return ( - - {() => <>OrderRefundedEmail #{order.number}} + + {({ formatter, paths }) => ( + <> +
Hello!
+ + Your order {order.number} has been refunded. + +
+ + You will receive further details regarding the refund of your order + shortly. If you have any questions, feel free to reach out to us. + + + {order.shippingAddress && ( + + )} + + + orderLinetoLine({ + line, + formatter, + displayGrossPrices: order.displayGrossPrices, + }) + )} + /> + + + + )}
); }; @@ -15,11 +63,74 @@ const OrderRefundedEmail = ({ data }: EventData) => { const previewProps: EventData = { data: { order: { + number: "939", + userEmail: "kacper.machel+test@mirumee.com", + user: { + firstName: "Name", + }, + displayGrossPrices: true, channel: { slug: "channel-us", }, - number: "1", - userEmail: "user@example.com", + languageCodeEnum: "EN_US", + shippingAddress: { + id: "QWRkcmVzczoyODEx", + firstName: "Machelunio", + lastName: "Macheluino", + companyName: "", + streetAddress1: "testowe", + streetAddress2: "", + city: "AAAA", + postalCode: "35004", + country: { + code: "US", + }, + countryArea: "AL", + phone: "+12034668960", + }, + shippingPrice: { + net: { + amount: 2, + currency: "USD", + }, + }, + subtotal: { + net: { + amount: 15.99, + currency: "USD", + }, + }, + total: { + gross: { + amount: 17.99, + currency: "USD", + }, + }, + lines: [ + { + quantity: 1, + variantName: "MP3", + productName: "Classical Gems Damian", + thumbnail: { + url: "https://marina-dev.eu.saleor.cloud/media/thumbnails/products/11_1ac623f7_95ba9540_thumbnail_256.png", + }, + unitPrice: { + gross: { + amount: 15.99, + currency: "USD", + }, + net: { + amount: 15.99, + currency: "USD", + }, + }, + variant: { + product: { + slug: "aa-classical-gems", + }, + }, + }, + ], }, }, }; diff --git a/src/graphql/operations/fragments/OrderBaseFragment.graphql b/src/graphql/operations/fragments/OrderBaseFragment.graphql new file mode 100644 index 0000000..6c2a669 --- /dev/null +++ b/src/graphql/operations/fragments/OrderBaseFragment.graphql @@ -0,0 +1,15 @@ +fragment OrderBaseFragment on Order { + number + displayGrossPrices + languageCodeEnum + channel { + ...ChannelFragment + } + userEmail + user { + firstName + } + shippingAddress { + ...AddressFragment + } +} diff --git a/src/graphql/operations/fragments/OrderFragment.graphql b/src/graphql/operations/fragments/OrderFragment.graphql index 233ccab..f1b7ba8 100644 --- a/src/graphql/operations/fragments/OrderFragment.graphql +++ b/src/graphql/operations/fragments/OrderFragment.graphql @@ -1,17 +1,5 @@ fragment OrderFragment on Order { - number - displayGrossPrices - languageCodeEnum - channel { - ...ChannelFragment - } - userEmail - user { - firstName - } - shippingAddress { - ...AddressFragment - } + ...OrderBaseFragment shippingPrice { net { ...MoneyFragment diff --git a/src/graphql/operations/fragments/generated.ts b/src/graphql/operations/fragments/generated.ts index 82597ca..4366953 100644 --- a/src/graphql/operations/fragments/generated.ts +++ b/src/graphql/operations/fragments/generated.ts @@ -17,11 +17,13 @@ export type ImageFragment = { url: string }; export type MoneyFragment = { amount: number, currency: string }; -export type OrderFragment_Order_channel_Channel = { slug: string }; +export type OrderBaseFragment_Order_channel_Channel = { slug: string }; -export type OrderFragment_Order_user_User = { firstName: string }; +export type OrderBaseFragment_Order_user_User = { firstName: string }; -export type OrderFragment_Order_shippingAddress_Address = { id: string, firstName: string, lastName: string, companyName: string, streetAddress1: string, streetAddress2: string, city: string, postalCode: string, countryArea: string, phone: string | null, country: AddressFragment_Address_country_CountryDisplay }; +export type OrderBaseFragment_Order_shippingAddress_Address = { id: string, firstName: string, lastName: string, companyName: string, streetAddress1: string, streetAddress2: string, city: string, postalCode: string, countryArea: string, phone: string | null, country: AddressFragment_Address_country_CountryDisplay }; + +export type OrderBaseFragment = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, channel: OrderBaseFragment_Order_channel_Channel, user: OrderBaseFragment_Order_user_User | null, shippingAddress: OrderBaseFragment_Order_shippingAddress_Address | null }; export type OrderFragment_Order_shippingPrice_TaxedMoney_net_Money = { amount: number, currency: string }; @@ -49,7 +51,7 @@ export type OrderFragment_Order_lines_OrderLine_variant_ProductVariant = { produ export type OrderFragment_Order_lines_OrderLine = { quantity: number, variantName: string, productName: string, thumbnail: OrderFragment_Order_lines_OrderLine_thumbnail_Image | null, unitPrice: OrderFragment_Order_lines_OrderLine_unitPrice_TaxedMoney, variant: OrderFragment_Order_lines_OrderLine_variant_ProductVariant | null }; -export type OrderFragment = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, channel: OrderFragment_Order_channel_Channel, user: OrderFragment_Order_user_User | null, shippingAddress: OrderFragment_Order_shippingAddress_Address | null, shippingPrice: OrderFragment_Order_shippingPrice_TaxedMoney, subtotal: OrderFragment_Order_subtotal_TaxedMoney, total: OrderFragment_Order_total_TaxedMoney, lines: Array }; +export type OrderFragment = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, shippingPrice: OrderFragment_Order_shippingPrice_TaxedMoney, subtotal: OrderFragment_Order_subtotal_TaxedMoney, total: OrderFragment_Order_total_TaxedMoney, lines: Array, channel: OrderBaseFragment_Order_channel_Channel, user: OrderBaseFragment_Order_user_User | null, shippingAddress: OrderBaseFragment_Order_shippingAddress_Address | null }; export type OrderLineFragment = { quantity: number, variantName: string, productName: string, thumbnail: OrderFragment_Order_lines_OrderLine_thumbnail_Image | null, unitPrice: OrderFragment_Order_lines_OrderLine_unitPrice_TaxedMoney, variant: OrderFragment_Order_lines_OrderLine_variant_ProductVariant | null }; @@ -71,19 +73,7 @@ export class TypedDocumentString } export const OrderFragment = new TypedDocumentString(` fragment OrderFragment on Order { - number - displayGrossPrices - languageCodeEnum - channel { - ...ChannelFragment - } - userEmail - user { - firstName - } - shippingAddress { - ...AddressFragment - } + ...OrderBaseFragment shippingPrice { net { ...MoneyFragment @@ -131,6 +121,21 @@ fragment MoneyFragment on Money { amount currency } +fragment OrderBaseFragment on Order { + number + displayGrossPrices + languageCodeEnum + channel { + ...ChannelFragment + } + userEmail + user { + firstName + } + shippingAddress { + ...AddressFragment + } +} fragment OrderLineFragment on OrderLine { quantity variantName diff --git a/src/graphql/operations/subscriptions/FulfillmentCreatedSubscription.graphql b/src/graphql/operations/subscriptions/FulfillmentCreatedSubscription.graphql new file mode 100644 index 0000000..7b0a42c --- /dev/null +++ b/src/graphql/operations/subscriptions/FulfillmentCreatedSubscription.graphql @@ -0,0 +1,17 @@ +subscription FulfillmentCreatedSubscription { + event { + ... on FulfillmentCreated { + order { + ...OrderBaseFragment + fulfillments { + lines { + quantity + orderLine { + ...OrderLineFragment + } + } + } + } + } + } +} diff --git a/src/graphql/operations/subscriptions/FulfillmentTrackingNumberUpdatedSubscription.graphql b/src/graphql/operations/subscriptions/FulfillmentTrackingNumberUpdatedSubscription.graphql index a5eb2c5..a0042ce 100644 --- a/src/graphql/operations/subscriptions/FulfillmentTrackingNumberUpdatedSubscription.graphql +++ b/src/graphql/operations/subscriptions/FulfillmentTrackingNumberUpdatedSubscription.graphql @@ -2,7 +2,16 @@ subscription FulfillmentTrackingNumberUpdatedSubscription { event { ... on FulfillmentTrackingNumberUpdated { order { - ...OrderFragment + ...OrderBaseFragment + fulfillments { + trackingNumber + lines { + quantity + orderLine { + ...OrderLineFragment + } + } + } } } } diff --git a/src/graphql/operations/subscriptions/OrderRefundedSubscription.graphql b/src/graphql/operations/subscriptions/OrderRefundedSubscription.graphql index 8088deb..2ae1bb6 100644 --- a/src/graphql/operations/subscriptions/OrderRefundedSubscription.graphql +++ b/src/graphql/operations/subscriptions/OrderRefundedSubscription.graphql @@ -2,11 +2,10 @@ subscription OrderRefundedSubscription { event { ... on OrderCancelled { order { - channel { - ...ChannelFragment + ...OrderFragment + lines { + ...OrderLineFragment } - number - userEmail } } } diff --git a/src/graphql/operations/subscriptions/generated.ts b/src/graphql/operations/subscriptions/generated.ts index 7f3414f..b2c3a6e 100644 --- a/src/graphql/operations/subscriptions/generated.ts +++ b/src/graphql/operations/subscriptions/generated.ts @@ -103,41 +103,51 @@ export type AccountSetPasswordRequestedSubscriptionVariables = Types.Exact<{ [ke export type AccountSetPasswordRequestedSubscription = AccountSetPasswordRequestedSubscription_Subscription; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_channel_Channel = { slug: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_thumbnail_Image = { url: string }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_user_User = { firstName: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_unitPrice_TaxedMoney_gross_Money = { amount: number, currency: string }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingAddress_Address_country_CountryDisplay = { code: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_unitPrice_TaxedMoney_net_Money = { amount: number, currency: string }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingAddress_Address = { id: string, firstName: string, lastName: string, companyName: string, streetAddress1: string, streetAddress2: string, city: string, postalCode: string, countryArea: string, phone: string | null, country: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingAddress_Address_country_CountryDisplay }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_unitPrice_TaxedMoney = { gross: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_unitPrice_TaxedMoney_gross_Money, net: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_unitPrice_TaxedMoney_net_Money }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingPrice_TaxedMoney_net_Money = { amount: number, currency: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_variant_ProductVariant_product_Product = { slug: string }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingPrice_TaxedMoney = { net: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingPrice_TaxedMoney_net_Money }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_variant_ProductVariant = { product: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_variant_ProductVariant_product_Product }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_subtotal_TaxedMoney_net_Money = { amount: number, currency: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine = { quantity: number, variantName: string, productName: string, thumbnail: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_thumbnail_Image | null, unitPrice: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_unitPrice_TaxedMoney, variant: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_variant_ProductVariant | null }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_subtotal_TaxedMoney = { net: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_subtotal_TaxedMoney_net_Money }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine = { quantity: number, orderLine: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine | null }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_total_TaxedMoney_gross_Money = { amount: number, currency: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment = { lines: Array | null }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_total_TaxedMoney = { gross: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_total_TaxedMoney_gross_Money }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_channel_Channel = { slug: string }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_thumbnail_Image = { url: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_user_User = { firstName: string }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_unitPrice_TaxedMoney_gross_Money = { amount: number, currency: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_shippingAddress_Address_country_CountryDisplay = { code: string }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_unitPrice_TaxedMoney_net_Money = { amount: number, currency: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_shippingAddress_Address = { id: string, firstName: string, lastName: string, companyName: string, streetAddress1: string, streetAddress2: string, city: string, postalCode: string, countryArea: string, phone: string | null, country: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_shippingAddress_Address_country_CountryDisplay }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_unitPrice_TaxedMoney = { gross: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_unitPrice_TaxedMoney_gross_Money, net: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_unitPrice_TaxedMoney_net_Money }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, fulfillments: Array, channel: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_channel_Channel, user: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_user_User | null, shippingAddress: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_shippingAddress_Address | null }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_variant_ProductVariant_product_Product = { slug: string }; +export type FulfillmentCreatedSubscription_event_FulfillmentCreated = { order: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order | null }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_variant_ProductVariant = { product: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_variant_ProductVariant_product_Product }; +export type FulfillmentCreatedSubscription_Subscription = { event: FulfillmentCreatedSubscription_event_FulfillmentCreated | null }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine = { quantity: number, variantName: string, productName: string, thumbnail: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_thumbnail_Image | null, unitPrice: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_unitPrice_TaxedMoney, variant: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_lines_OrderLine_variant_ProductVariant | null }; -export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, channel: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_channel_Channel, user: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_user_User | null, shippingAddress: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingAddress_Address | null, shippingPrice: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingPrice_TaxedMoney, subtotal: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_subtotal_TaxedMoney, total: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_total_TaxedMoney, lines: Array }; +export type FulfillmentCreatedSubscriptionVariables = Types.Exact<{ [key: string]: never; }>; + + +export type FulfillmentCreatedSubscription = FulfillmentCreatedSubscription_Subscription; + +export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine = { quantity: number, variantName: string, productName: string, thumbnail: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_thumbnail_Image | null, unitPrice: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_unitPrice_TaxedMoney, variant: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_variant_ProductVariant | null }; + +export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine = { quantity: number, orderLine: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine | null }; + +export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_fulfillments_Fulfillment = { trackingNumber: string, lines: Array | null }; + +export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, fulfillments: Array, channel: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_channel_Channel, user: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_user_User | null, shippingAddress: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_shippingAddress_Address | null }; export type FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated = { order: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order | null }; @@ -181,7 +191,21 @@ export type OrderCancelledSubscriptionVariables = Types.Exact<{ [key: string]: n export type OrderCancelledSubscription = OrderCancelledSubscription_Subscription; -export type OrderCreatedSubscription_event_OrderCreated_order_Order = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, channel: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_channel_Channel, user: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_user_User | null, shippingAddress: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingAddress_Address | null, shippingPrice: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_shippingPrice_TaxedMoney, subtotal: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_subtotal_TaxedMoney, total: FulfillmentTrackingNumberUpdatedSubscription_event_FulfillmentTrackingNumberUpdated_order_Order_total_TaxedMoney, lines: Array }; +export type OrderCreatedSubscription_event_OrderCreated_order_Order_shippingPrice_TaxedMoney_net_Money = { amount: number, currency: string }; + +export type OrderCreatedSubscription_event_OrderCreated_order_Order_shippingPrice_TaxedMoney = { net: OrderCreatedSubscription_event_OrderCreated_order_Order_shippingPrice_TaxedMoney_net_Money }; + +export type OrderCreatedSubscription_event_OrderCreated_order_Order_subtotal_TaxedMoney_net_Money = { amount: number, currency: string }; + +export type OrderCreatedSubscription_event_OrderCreated_order_Order_subtotal_TaxedMoney = { net: OrderCreatedSubscription_event_OrderCreated_order_Order_subtotal_TaxedMoney_net_Money }; + +export type OrderCreatedSubscription_event_OrderCreated_order_Order_total_TaxedMoney_gross_Money = { amount: number, currency: string }; + +export type OrderCreatedSubscription_event_OrderCreated_order_Order_total_TaxedMoney = { gross: OrderCreatedSubscription_event_OrderCreated_order_Order_total_TaxedMoney_gross_Money }; + +export type OrderCreatedSubscription_event_OrderCreated_order_Order_lines_OrderLine = { quantity: number, variantName: string, productName: string, thumbnail: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_thumbnail_Image | null, unitPrice: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_unitPrice_TaxedMoney, variant: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_fulfillments_Fulfillment_lines_FulfillmentLine_orderLine_OrderLine_variant_ProductVariant | null }; + +export type OrderCreatedSubscription_event_OrderCreated_order_Order = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, shippingPrice: OrderCreatedSubscription_event_OrderCreated_order_Order_shippingPrice_TaxedMoney, subtotal: OrderCreatedSubscription_event_OrderCreated_order_Order_subtotal_TaxedMoney, total: OrderCreatedSubscription_event_OrderCreated_order_Order_total_TaxedMoney, lines: Array, channel: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_channel_Channel, user: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_user_User | null, shippingAddress: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_shippingAddress_Address | null }; export type OrderCreatedSubscription_event_OrderCreated = { order: OrderCreatedSubscription_event_OrderCreated_order_Order | null }; @@ -193,9 +217,19 @@ export type OrderCreatedSubscriptionVariables = Types.Exact<{ [key: string]: nev export type OrderCreatedSubscription = OrderCreatedSubscription_Subscription; -export type OrderRefundedSubscription_event_OrderCancelled_order_Order_channel_Channel = { slug: string }; +export type OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_thumbnail_Image = { url: string }; + +export type OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_unitPrice_TaxedMoney_gross_Money = { amount: number, currency: string }; + +export type OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_unitPrice_TaxedMoney = { gross: OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_unitPrice_TaxedMoney_gross_Money, net: OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_unitPrice_TaxedMoney_gross_Money }; -export type OrderRefundedSubscription_event_OrderCancelled_order_Order = { number: string, userEmail: string | null, channel: OrderRefundedSubscription_event_OrderCancelled_order_Order_channel_Channel }; +export type OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_variant_ProductVariant_product_Product = { slug: string }; + +export type OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_variant_ProductVariant = { product: OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_variant_ProductVariant_product_Product }; + +export type OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine = { quantity: number, variantName: string, productName: string, thumbnail: OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_thumbnail_Image | null, unitPrice: OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_unitPrice_TaxedMoney, variant: OrderRefundedSubscription_event_OrderCancelled_order_Order_lines_OrderLine_variant_ProductVariant | null }; + +export type OrderRefundedSubscription_event_OrderCancelled_order_Order = { number: string, displayGrossPrices: boolean, languageCodeEnum: Types.LanguageCodeEnum, userEmail: string | null, lines: Array, shippingPrice: OrderCreatedSubscription_event_OrderCreated_order_Order_shippingPrice_TaxedMoney, subtotal: OrderCreatedSubscription_event_OrderCreated_order_Order_subtotal_TaxedMoney, total: OrderCreatedSubscription_event_OrderCreated_order_Order_total_TaxedMoney, channel: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_channel_Channel, user: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_user_User | null, shippingAddress: FulfillmentCreatedSubscription_event_FulfillmentCreated_order_Order_shippingAddress_Address | null }; export type OrderRefundedSubscription_event_OrderCancelled = { order: OrderRefundedSubscription_event_OrderCancelled_order_Order | null }; @@ -345,12 +379,20 @@ export const AccountSetPasswordRequestedSubscriptionDocument = new TypedDocument fragment ChannelFragment on Channel { slug }`) as unknown as TypedDocumentString; -export const FulfillmentTrackingNumberUpdatedSubscriptionDocument = new TypedDocumentString(` - subscription FulfillmentTrackingNumberUpdatedSubscription { +export const FulfillmentCreatedSubscriptionDocument = new TypedDocumentString(` + subscription FulfillmentCreatedSubscription { event { - ... on FulfillmentTrackingNumberUpdated { + ... on FulfillmentCreated { order { - ...OrderFragment + ...OrderBaseFragment + fulfillments { + lines { + quantity + orderLine { + ...OrderLineFragment + } + } + } } } } @@ -358,7 +400,7 @@ export const FulfillmentTrackingNumberUpdatedSubscriptionDocument = new TypedDoc fragment ChannelFragment on Channel { slug } -fragment OrderFragment on Order { +fragment OrderBaseFragment on Order { number displayGrossPrices languageCodeEnum @@ -372,23 +414,91 @@ fragment OrderFragment on Order { shippingAddress { ...AddressFragment } - shippingPrice { - net { - ...MoneyFragment - } +} +fragment AddressFragment on Address { + id + firstName + lastName + companyName + streetAddress1 + streetAddress2 + city + postalCode + country { + ...CountryFragment } - subtotal { - net { - ...MoneyFragment + countryArea + phone +} +fragment CountryFragment on CountryDisplay { + code +} +fragment OrderLineFragment on OrderLine { + quantity + variantName + productName + thumbnail(format: ORIGINAL, size: 64) { + ...ImageFragment + } + unitPrice { + ...TaxedMoneyFragment + } + variant { + product { + slug } } - total { - gross { - ...MoneyFragment +} +fragment ImageFragment on Image { + url +} +fragment TaxedMoneyFragment on TaxedMoney { + gross { + ...MoneyFragment + } + net { + ...MoneyFragment + } +} +fragment MoneyFragment on Money { + amount + currency +}`) as unknown as TypedDocumentString; +export const FulfillmentTrackingNumberUpdatedSubscriptionDocument = new TypedDocumentString(` + subscription FulfillmentTrackingNumberUpdatedSubscription { + event { + ... on FulfillmentTrackingNumberUpdated { + order { + ...OrderBaseFragment + fulfillments { + trackingNumber + lines { + quantity + orderLine { + ...OrderLineFragment + } + } + } + } } } - lines { - ...OrderLineFragment +} + fragment ChannelFragment on Channel { + slug +} +fragment OrderBaseFragment on Order { + number + displayGrossPrices + languageCodeEnum + channel { + ...ChannelFragment + } + userEmail + user { + firstName + } + shippingAddress { + ...AddressFragment } } fragment AddressFragment on Address { @@ -409,10 +519,6 @@ fragment AddressFragment on Address { fragment CountryFragment on CountryDisplay { code } -fragment MoneyFragment on Money { - amount - currency -} fragment OrderLineFragment on OrderLine { quantity variantName @@ -439,6 +545,10 @@ fragment TaxedMoneyFragment on TaxedMoney { net { ...MoneyFragment } +} +fragment MoneyFragment on Money { + amount + currency }`) as unknown as TypedDocumentString; export const GiftCardSentSubscriptionDocument = new TypedDocumentString(` subscription GiftCardSentSubscription { @@ -492,7 +602,7 @@ export const OrderCreatedSubscriptionDocument = new TypedDocumentString(` fragment ChannelFragment on Channel { slug } -fragment OrderFragment on Order { +fragment OrderBaseFragment on Order { number displayGrossPrices languageCodeEnum @@ -506,6 +616,58 @@ fragment OrderFragment on Order { shippingAddress { ...AddressFragment } +} +fragment AddressFragment on Address { + id + firstName + lastName + companyName + streetAddress1 + streetAddress2 + city + postalCode + country { + ...CountryFragment + } + countryArea + phone +} +fragment CountryFragment on CountryDisplay { + code +} +fragment OrderLineFragment on OrderLine { + quantity + variantName + productName + thumbnail(format: ORIGINAL, size: 64) { + ...ImageFragment + } + unitPrice { + ...TaxedMoneyFragment + } + variant { + product { + slug + } + } +} +fragment ImageFragment on Image { + url +} +fragment TaxedMoneyFragment on TaxedMoney { + gross { + ...MoneyFragment + } + net { + ...MoneyFragment + } +} +fragment MoneyFragment on Money { + amount + currency +} +fragment OrderFragment on Order { + ...OrderBaseFragment shippingPrice { net { ...MoneyFragment @@ -524,6 +686,37 @@ fragment OrderFragment on Order { lines { ...OrderLineFragment } +}`) as unknown as TypedDocumentString; +export const OrderRefundedSubscriptionDocument = new TypedDocumentString(` + subscription OrderRefundedSubscription { + event { + ... on OrderCancelled { + order { + ...OrderFragment + lines { + ...OrderLineFragment + } + } + } + } +} + fragment ChannelFragment on Channel { + slug +} +fragment OrderBaseFragment on Order { + number + displayGrossPrices + languageCodeEnum + channel { + ...ChannelFragment + } + userEmail + user { + firstName + } + shippingAddress { + ...AddressFragment + } } fragment AddressFragment on Address { id @@ -543,10 +736,6 @@ fragment AddressFragment on Address { fragment CountryFragment on CountryDisplay { code } -fragment MoneyFragment on Money { - amount - currency -} fragment OrderLineFragment on OrderLine { quantity variantName @@ -573,21 +762,29 @@ fragment TaxedMoneyFragment on TaxedMoney { net { ...MoneyFragment } -}`) as unknown as TypedDocumentString; -export const OrderRefundedSubscriptionDocument = new TypedDocumentString(` - subscription OrderRefundedSubscription { - event { - ... on OrderCancelled { - order { - channel { - ...ChannelFragment - } - number - userEmail - } +} +fragment MoneyFragment on Money { + amount + currency +} +fragment OrderFragment on Order { + ...OrderBaseFragment + shippingPrice { + net { + ...MoneyFragment } } -} - fragment ChannelFragment on Channel { - slug + subtotal { + net { + ...MoneyFragment + } + } + total { + gross { + ...MoneyFragment + } + } + lines { + ...OrderLineFragment + } }`) as unknown as TypedDocumentString; \ No newline at end of file diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..ef0a465 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,8 @@ +export const isURL = (str: string) => { + try { + new URL(str); + } catch (_) { + return false; + } + return true; +}; diff --git a/tailwind.config.ts b/tailwind.config.ts index e1f1c2b..e4b6a3a 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,4 +1,5 @@ import type { Config } from "tailwindcss"; +import plugin from "tailwindcss/plugin"; export default { content: ["./src/**/*.{js,jsx,ts,tsx}"], @@ -9,6 +10,14 @@ export default { }, }, }, - plugins: [], + plugins: [ + plugin(function ({ addBase, addComponents, addUtilities, theme }) { + addUtilities({ + ".underline": { + textDecoration: "underline", + }, + }); + }), + ], darkMode: "selector", } satisfies Config;