Reorganize frontend and install Craco to alias modules (#190)

This commit is contained in:
Charles Bochet
2023-06-04 11:23:09 +02:00
committed by GitHub
parent bbc80cd543
commit 7b858fd7c9
149 changed files with 3441 additions and 1158 deletions

View File

@ -0,0 +1,73 @@
import {
GraphqlMutationUser,
GraphqlQueryUser,
mapToGqlUser,
mapToUser,
User,
} from '../user.interface';
describe('User mappers', () => {
it('should map GraphqlUser to User', () => {
const now = new Date();
now.setMilliseconds(0);
const graphQLUser = {
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
displayName: 'John Doe',
email: 'john.doe@gmail.com',
workspaceMember: {
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e88',
workspace: {
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e89',
displayName: 'John Doe',
__typename: 'workspace',
},
__typename: 'workspace_members',
},
__typename: 'users',
} satisfies GraphqlQueryUser;
const User = mapToUser(graphQLUser);
expect(User).toStrictEqual({
__typename: 'users',
id: graphQLUser.id,
displayName: graphQLUser.displayName,
email: graphQLUser.email,
workspaceMember: {
id: graphQLUser.workspaceMember.id,
workspace: {
id: graphQLUser.workspaceMember.workspace.id,
displayName: graphQLUser.workspaceMember.workspace.displayName,
domainName: undefined,
logo: undefined,
},
},
} satisfies User);
});
it('should map User to GraphQlUser', () => {
const now = new Date();
now.setMilliseconds(0);
const user = {
__typename: 'users',
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
displayName: 'John Doe',
email: 'john.doe@gmail.com',
workspaceMember: {
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e88',
workspace: {
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e89',
displayName: 'John Doe',
},
},
} satisfies User;
const graphQLUser = mapToGqlUser(user);
expect(graphQLUser).toStrictEqual({
id: user.id,
displayName: user.displayName,
email: user.email,
workspaceMemberId: user.workspaceMember.id,
__typename: 'users',
} satisfies GraphqlMutationUser);
});
});

View File

@ -0,0 +1,47 @@
import {
GraphqlQueryWorkspaceMember,
mapToWorkspaceMember,
WorkspaceMember,
} from './workspaceMember.interface';
export interface User {
__typename: 'users';
id: string;
email?: string;
displayName?: string;
workspaceMember?: WorkspaceMember;
}
export type GraphqlQueryUser = {
id: string;
email?: string;
displayName?: string;
workspaceMember?: GraphqlQueryWorkspaceMember;
__typename: string;
};
export type GraphqlMutationUser = {
id: string;
email?: string;
displayName?: string;
workspaceMemberId?: string;
__typename: string;
};
export const mapToUser = (user: GraphqlQueryUser): User => ({
__typename: 'users',
id: user.id,
email: user.email,
displayName: user.displayName,
workspaceMember: user.workspaceMember
? mapToWorkspaceMember(user.workspaceMember)
: user.workspaceMember,
});
export const mapToGqlUser = (user: User): GraphqlMutationUser => ({
id: user.id,
email: user.email,
displayName: user.displayName,
workspaceMemberId: user.workspaceMember?.id,
__typename: 'users',
});

View File

@ -0,0 +1,39 @@
import {
GraphqlQueryWorkspace,
mapToWorkspace,
Workspace,
} from '../../workspaces/interfaces/workspace.interface';
export interface WorkspaceMember {
id: string;
workspace: Workspace;
}
export type GraphqlQueryWorkspaceMember = {
id: string;
workspace: GraphqlQueryWorkspace;
__typename: string;
};
export type GraphqlMutationWorkspaceMember = {
id: string;
workspace_id: string;
__typename: string;
};
export const mapToWorkspaceMember = (
workspaceMember: GraphqlQueryWorkspaceMember,
): WorkspaceMember => ({
id: workspaceMember.id,
workspace: workspaceMember.workspace
? mapToWorkspace(workspaceMember.workspace)
: workspaceMember.workspace,
});
export const mapToGqlWorkspaceMember = (
workspaceMember: WorkspaceMember,
): GraphqlMutationWorkspaceMember => ({
id: workspaceMember.id,
workspace_id: workspaceMember.workspace?.id,
__typename: 'workspace_members',
});

View File

@ -0,0 +1,31 @@
import { gql, QueryResult, useQuery } from '@apollo/client';
import { GraphqlQueryUser } from '../interfaces/user.interface';
export const GET_CURRENT_USER = gql`
query GetCurrentUser($uuid: String) {
users: findManyUser(where: { id: { equals: $uuid } }) {
id
email
displayName
workspaceMember {
workspace {
id
domainName
displayName
logo
}
}
}
}
`;
export function useGetCurrentUserQuery(userId: string | null): QueryResult<{
users: GraphqlQueryUser[];
}> {
return useQuery<{ users: GraphqlQueryUser[] }>(GET_CURRENT_USER, {
variables: {
uuid: userId,
},
});
}

View File

@ -0,0 +1,9 @@
import { gql } from '@apollo/client';
export const GET_CURRENT_USER = gql`
query getUsers {
findManyUser {
id
}
}
`;