Skip to content

Commit 450cef9

Browse files
committed
♻️(frontend) useAddresses with new api
1 parent e8893f7 commit 450cef9

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

src/frontend/js/hooks/useAddresses.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { defineMessages } from 'react-intl';
22
import { MutateOptions } from '@tanstack/react-query';
3-
import { useJoanieApi } from 'contexts/JoanieApiContext';
4-
import { Address, AddressCreationPayload, API } from 'types/Joanie';
53
import { HttpError } from 'utils/errors/HttpError';
4+
import { PatchedAddress } from 'api/joanie/gen';
5+
import { joanieApi } from 'api/joanie';
6+
import type { Address } from 'api/joanie/gen';
67
import { ResourcesQuery, useResource, useResources, UseResourcesProps } from './useResources';
78

89
const messages = defineMessages({
@@ -33,15 +34,35 @@ const messages = defineMessages({
3334
},
3435
});
3536

36-
export type AddressesMutateOptions = MutateOptions<Address, HttpError, AddressCreationPayload>;
37+
export type AddressesMutateOptions = MutateOptions<Address, HttpError, Address>;
38+
39+
const apiInterface = {
40+
get: ({ id, ...filters }: ResourcesQuery) => {
41+
if (id) {
42+
return joanieApi.api.apiV10AddressesRetrieve(id);
43+
}
44+
// FIXME: apiV10AddressesRetrieve do not accept filters object argument
45+
return joanieApi.api.apiV10AddressesRetrieve({ id, filters });
46+
},
47+
create: (data: Address) => {
48+
return joanieApi.api.apiV10AddressesCreate(data);
49+
},
50+
update: (id: string, data: PatchedAddress) => {
51+
return joanieApi.api.apiV10AddressesPartialUpdate(id, data);
52+
},
53+
delete: (id: string) => {
54+
return joanieApi.api.apiV10AddressesDestroy(id);
55+
},
56+
};
3757

3858
/**
3959
* Joanie Api hook to retrieve/create/update/delete addresses
4060
* owned by the authenticated user.
4161
*/
42-
const props: UseResourcesProps<Address, ResourcesQuery, API['user']['addresses']> = {
62+
// FIXME: now that we've both Address and PatchedAddress, UseResourcesProps cannot be build from a unique input/output type.
63+
const props: UseResourcesProps<PatchedAddress, ResourcesQuery, typeof apiInterface> = {
4364
queryKey: ['addresses'],
44-
apiInterface: () => useJoanieApi().user.addresses,
65+
apiInterface,
4566
omniscient: true,
4667
session: true,
4768
messages,

0 commit comments

Comments
 (0)