Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(chore) generate joanie api client #1901

Draft
wants to merge 12 commits into
base: master
Choose a base branch
from
Draft
Prev Previous commit
[to remove] wip with create serializer
rlecellier committed Mar 6, 2023

Verified

This commit was signed with the committer’s verified signature.
vitalvas Vitaliy Vasylenko
commit 254e4720c322e4b62b88bc33ce1e4219d40b084f
5 changes: 4 additions & 1 deletion src/frontend/js/api/joanie/gen/index.ts
Original file line number Diff line number Diff line change
@@ -15,10 +15,13 @@ export type { CertificationDefinition } from './models/CertificationDefinition';
export type { Course } from './models/Course';
export type { CourseRun } from './models/CourseRun';
export type { CreditCard } from './models/CreditCard';
export type { EmptyResponse } from './models/EmptyResponse';
export { Enrollment } from './models/Enrollment';
export type { ErrorResponse } from './models/ErrorResponse';
export { Order } from './models/Order';
export type { OrderAbortBody } from './models/OrderAbortBody';
export { OrderCreateBody } from './models/OrderCreateBody';
export { OrderCreateResponse } from './models/OrderCreateResponse';
export type { OrderCreateResponse } from './models/OrderCreateResponse';
export type { Payment } from './models/Payment';
export { Product } from './models/Product';

2 changes: 1 addition & 1 deletion src/frontend/js/api/joanie/gen/models/Order.ts
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ export type Order = {
readonly created_on?: string;
readonly certificate?: string;
readonly enrollments?: string;
readonly id?: string;
id: string;
readonly main_invoice?: string;
organization?: string;
readonly owner?: string;
2 changes: 1 addition & 1 deletion src/frontend/js/api/joanie/gen/models/OrderCreateBody.ts
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ export type OrderCreateBody = {
readonly created_on?: string;
readonly certificate?: string;
readonly enrollments?: string;
readonly id?: string;
id: string;
readonly main_invoice?: string;
organization?: string;
readonly owner?: string;
30 changes: 2 additions & 28 deletions src/frontend/js/api/joanie/gen/models/OrderCreateResponse.ts
Original file line number Diff line number Diff line change
@@ -2,37 +2,11 @@
/* tslint:disable */
/* eslint-disable */

import type { Order } from './Order';
import type { Payment } from './Payment';

export type OrderCreateResponse = {
course: string;
/**
* date and time at which a record was created
*/
readonly created_on?: string;
readonly certificate?: string;
readonly enrollments?: string;
id: string;
readonly main_invoice?: string;
organization?: string;
readonly owner?: string;
readonly total?: number;
readonly total_currency?: string;
product: string;
readonly state?: OrderCreateResponse.state;
readonly target_courses?: string;
order: Order;
payment_info?: Payment;
};

export namespace OrderCreateResponse {

export enum state {
PENDING = 'pending',
CANCELED = 'canceled',
FAILED = 'failed',
VALIDATED = 'validated',
}


}

Original file line number Diff line number Diff line change
@@ -66,12 +66,12 @@ export class CertificatesService {
/**
* Retrieve a certificate through its id if it is owned by the authenticated user.
* @param id
* @returns Certificate
* @returns binary File Attachment
* @throws ApiError
*/
public certificatesDownload(
id: string,
): CancelablePromise<Certificate> {
): CancelablePromise<Blob> {
return this.httpRequest.request({
method: 'GET',
url: '/certificates/{id}/download/',
16 changes: 11 additions & 5 deletions src/frontend/js/api/joanie/gen/services/OrdersService.ts
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
/* tslint:disable */
/* eslint-disable */
import type { Order } from '../models/Order';
import type { OrderAbortBody } from '../models/OrderAbortBody';
import type { OrderCreateBody } from '../models/OrderCreateBody';
import type { OrderCreateResponse } from '../models/OrderCreateResponse';

@@ -101,13 +102,13 @@ export class OrdersService {
* Abort a pending order and the related payment if there is one.
* @param id
* @param data
* @returns Order
* @returns void
* @throws ApiError
*/
public ordersAbort(
id: string,
data: Order,
): CancelablePromise<Order> {
data: OrderAbortBody,
): CancelablePromise<void> {
return this.httpRequest.request({
method: 'POST',
url: '/orders/{id}/abort/',
@@ -122,18 +123,23 @@ export class OrdersService {
* Retrieve an invoice through its reference if it is related to
* the order instance and owned by the authenticated user.
* @param id
* @returns Order
* @param reference
* @returns binary File Attachment
* @throws ApiError
*/
public ordersInvoice(
id: string,
): CancelablePromise<Order> {
reference: string,
): CancelablePromise<Blob> {
return this.httpRequest.request({
method: 'GET',
url: '/orders/{id}/invoice/',
path: {
'id': id,
},
query: {
'reference': reference,
},
});
}

2 changes: 1 addition & 1 deletion src/frontend/js/api/joanie/gen/services/ProductsService.ts
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ export class ProductsService {
*/
public productsRead(
id: string,
course?: string,
course: string,
): CancelablePromise<Product> {
return this.httpRequest.request({
method: 'GET',
2 changes: 1 addition & 1 deletion src/frontend/js/components/PaymentButton/index.spec.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { act, fireEvent, render, screen, waitFor, cleanup } from '@testing-library/react';
simport { act, fireEvent, render, screen, waitFor, cleanup } from '@testing-library/react';
import fetchMock from 'fetch-mock';
import { PropsWithChildren } from 'react';
import { IntlProvider } from 'react-intl';
4 changes: 2 additions & 2 deletions src/frontend/js/components/PaymentButton/index.tsx
Original file line number Diff line number Diff line change
@@ -122,9 +122,9 @@ const PaymentButton = ({ product, billingAddress, creditCard, onSuccess }: Payme
product: product.id!,
},
{
onSuccess: (order) => {
onSuccess: ({ order, payment_info }) => {
paymentInfos = {
...order.payment_info,
...payment_info,
order_id: order.id,
};
setPayment(paymentInfos);
16 changes: 13 additions & 3 deletions src/frontend/js/hooks/useOrders.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
import { defineMessages } from 'react-intl';
import { ApiResourceInterface } from 'types/Joanie';
import { Order, Product, Course, OrderCreateResponse, OrderCreateBody } from 'api/joanie/gen';
import {
Order,
Product,
Course,
OrderCreateResponse,
OrderCreateBody,
OrderAbortBody,
} from 'api/joanie/gen';
import { useSessionMutation } from 'utils/react-query/useSessionMutation';
import { joanieApi, isCourse } from 'api/joanie';
import {
QueryOptions,
Resource,
ResourcesQuery,
useResource,
useResourcesCustom,
@@ -72,10 +78,14 @@ const props: UseResourcesProps<Order, OrderResourcesQuery, OrderApiResourceInter
session: true,
};

interface OrderAbordData extends OrderAbortBody {
id: string;
}

export const useOrders = (filters?: OrderResourcesQuery, queryOptions?: QueryOptions<Order>) => {
const custom = useResourcesCustom({ ...props, filters, queryOptions });

const abortHandler = useSessionMutation((data: Order) => {
const abortHandler = useSessionMutation((data: OrderAbordData) => {
const { id, ...updatedData } = data;
if (id) {
return joanieApi.orders.ordersAbort(id, updatedData);
4 changes: 2 additions & 2 deletions src/frontend/js/types/Joanie.ts
Original file line number Diff line number Diff line change
@@ -233,8 +233,8 @@ export interface ApiResourceInterface<
TResourceQuery extends ResourcesQuery = ResourcesQuery,
> {
get: (filters?: TResourceQuery) => any;
create?: (payload: any) => Promise<TData>;
update?: (payload: any) => Promise<TData>;
create?: (payload: any) => Promise<any>;
update?: (payload: any) => Promise<any>;
delete?: (id: TData['id']) => Promise<void>;
}