diff --git a/src/frontend/apps/desk/package.json b/src/frontend/apps/desk/package.json index 88908a6..a7d0754 100644 --- a/src/frontend/apps/desk/package.json +++ b/src/frontend/apps/desk/package.json @@ -15,6 +15,7 @@ "test:watch": "jest --watch" }, "dependencies": { + "@faker-js/faker": "8.4.1", "@openfun/cunningham-react": "2.4.0", "@tanstack/react-query": "5.24.8", "i18next": "23.10.0", diff --git a/src/frontend/apps/desk/src/features/teams/api/data/teams.ts b/src/frontend/apps/desk/src/features/teams/api/data/teams.ts new file mode 100644 index 0000000..ca052dc --- /dev/null +++ b/src/frontend/apps/desk/src/features/teams/api/data/teams.ts @@ -0,0 +1,24 @@ +import { faker } from '@faker-js/faker'; + +import { Access, Role } from '../types'; + +function createRandomAccess(): Access { + return { + id: faker.string.uuid(), + user: { + id: faker.string.uuid(), + email: faker.internet.email(), + name: faker.person.fullName(), + }, + role: faker.helpers.enumValue(Role), + }; +} + +export const dummyDataAPITeamAccesses = (count: number, pageSize: number) => { + return { + count, + next: null, + previous: null, + results: faker.helpers.multiple(createRandomAccess, { count: pageSize }), + }; +}; diff --git a/src/frontend/apps/desk/src/features/teams/api/types.tsx b/src/frontend/apps/desk/src/features/teams/api/types.tsx index 180905d..d72bd47 100644 --- a/src/frontend/apps/desk/src/features/teams/api/types.tsx +++ b/src/frontend/apps/desk/src/features/teams/api/types.tsx @@ -1,4 +1,4 @@ -enum Role { +export enum Role { MEMBER = 'member', ADMIN = 'administrator', OWNER = 'owner', diff --git a/src/frontend/apps/desk/src/features/teams/api/useTeamsAccesses.tsx b/src/frontend/apps/desk/src/features/teams/api/useTeamsAccesses.tsx index 123a0b7..437d176 100644 --- a/src/frontend/apps/desk/src/features/teams/api/useTeamsAccesses.tsx +++ b/src/frontend/apps/desk/src/features/teams/api/useTeamsAccesses.tsx @@ -2,6 +2,9 @@ import { UseQueryOptions, useQuery } from '@tanstack/react-query'; import { APIError, APIList, errorCauses, fetchAPI } from '@/api'; +import { PAGE_SIZE } from '../conf'; + +import { dummyDataAPITeamAccesses } from './data/teams'; import { Access } from './types'; export type TeamAccessesAPIParams = { @@ -15,6 +18,15 @@ export const getTeamAccesses = async ({ page, teamId, }: TeamAccessesAPIParams): Promise => { + /** + * TODO: Remove this block when the API endpoint is ready + */ + return await new Promise((resolve) => { + setTimeout(() => { + resolve(dummyDataAPITeamAccesses(100, PAGE_SIZE)); + }, 500); + }); + const response = await fetchAPI(`teams/${teamId}/accesses/?page=${page}`); if (!response.ok) { diff --git a/src/frontend/apps/desk/src/features/teams/conf.ts b/src/frontend/apps/desk/src/features/teams/conf.ts new file mode 100644 index 0000000..bfab906 --- /dev/null +++ b/src/frontend/apps/desk/src/features/teams/conf.ts @@ -0,0 +1 @@ +export const PAGE_SIZE = 20; diff --git a/src/frontend/yarn.lock b/src/frontend/yarn.lock index 5318c58..e8f93c5 100644 --- a/src/frontend/yarn.lock +++ b/src/frontend/yarn.lock @@ -1318,6 +1318,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@faker-js/faker@8.4.1": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" + integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== + "@fontsource-variable/roboto-flex@5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@fontsource-variable/roboto-flex/-/roboto-flex-5.0.8.tgz#d6685dbcdb9ba939717f995dfeb77cd22f7d82a3"