44 lines
1 KiB
TypeScript
44 lines
1 KiB
TypeScript
import { Client, gql } from "urql";
|
|
import { InvoiceCreateDocument } from "../../../generated/graphql";
|
|
import { logger } from "../../lib/logger";
|
|
|
|
gql`
|
|
mutation InvoiceCreate($orderId: ID!, $invoiceInput: InvoiceCreateInput!) {
|
|
invoiceCreate(input: $invoiceInput, orderId: $orderId) {
|
|
errors {
|
|
message
|
|
}
|
|
invoice {
|
|
id
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
export class InvoiceCreateNotifier {
|
|
constructor(private client: Client) {}
|
|
|
|
notifyInvoiceCreated(orderId: string, invoiceNumber: string, invoiceUrl: string) {
|
|
logger.info(
|
|
{ orderId, invoiceNumber, invoiceUrl },
|
|
"Will notify Saleor with invoiceCreate mutation"
|
|
);
|
|
|
|
return this.client
|
|
.mutation(InvoiceCreateDocument, {
|
|
orderId,
|
|
invoiceInput: {
|
|
url: invoiceUrl,
|
|
number: invoiceNumber,
|
|
},
|
|
})
|
|
.toPromise()
|
|
.then((result) => {
|
|
logger.info(result.data, "invoiceCreate finished");
|
|
|
|
if (result.error) {
|
|
throw new Error(result.error.message);
|
|
}
|
|
});
|
|
}
|
|
}
|