From 591045b0ec560714db62a5660155a608ae93f2d9 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Tue, 2 Apr 2024 11:02:55 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F(app-desk)=20clean=20build=20?= =?UTF-8?q?pages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prob: Next.js transpiles all the files present in the `pages` directory. But we don't want to transpile the providers neither the Layout components. Solution: We export these components to a core folder. --- .../apps/desk/src/api/__tests__/fetchApi.test.tsx | 2 +- src/frontend/apps/desk/src/api/fetchApi.ts | 2 +- .../apps/desk/src/{pages => core}/AppProvider.tsx | 9 +++------ .../apps/desk/src/{pages => core}/MainLayout.tsx | 6 +----- .../apps/desk/src/{features => core}/auth/Auth.tsx | 0 .../apps/desk/src/{features => core}/auth/api/getMe.tsx | 0 .../apps/desk/src/{features => core}/auth/api/index.ts | 0 .../apps/desk/src/{features => core}/auth/api/types.ts | 0 .../apps/desk/src/{features => core}/auth/index.ts | 0 .../desk/src/{features => core}/auth/useAuthStore.tsx | 2 +- src/frontend/apps/desk/src/core/index.ts | 2 ++ .../src/features/addMembers/api/useCreateInvitation.tsx | 2 +- .../src/features/addMembers/api/useCreateTeamAccess.tsx | 2 +- .../apps/desk/src/features/addMembers/api/useUsers.tsx | 2 +- src/frontend/apps/desk/src/features/addMembers/types.tsx | 2 +- .../src/features/members/__tests__/ModalRole.test.tsx | 2 +- .../apps/desk/src/features/members/hooks/useWhoAmI.tsx | 2 +- src/frontend/apps/desk/src/features/members/types.tsx | 2 +- .../teams => features/teams/components}/TeamLayout.tsx | 5 ++--- .../apps/desk/src/features/teams/components/index.ts | 1 + src/frontend/apps/desk/src/pages/404.tsx | 3 +-- src/frontend/apps/desk/src/pages/_app.tsx | 2 +- src/frontend/apps/desk/src/pages/contacts/index.tsx | 3 +-- src/frontend/apps/desk/src/pages/favorite/index.tsx | 3 +-- src/frontend/apps/desk/src/pages/groups/index.tsx | 3 +-- src/frontend/apps/desk/src/pages/index.tsx | 2 +- src/frontend/apps/desk/src/pages/recent/index.tsx | 3 +-- src/frontend/apps/desk/src/pages/teams/[id].tsx | 4 +--- src/frontend/apps/desk/src/pages/teams/create.tsx | 4 +--- src/frontend/apps/desk/src/pages/teams/index.tsx | 3 +-- 30 files changed, 29 insertions(+), 44 deletions(-) rename src/frontend/apps/desk/src/{pages => core}/AppProvider.tsx (86%) rename src/frontend/apps/desk/src/{pages => core}/MainLayout.tsx (82%) rename src/frontend/apps/desk/src/{features => core}/auth/Auth.tsx (100%) rename src/frontend/apps/desk/src/{features => core}/auth/api/getMe.tsx (100%) rename src/frontend/apps/desk/src/{features => core}/auth/api/index.ts (100%) rename src/frontend/apps/desk/src/{features => core}/auth/api/types.ts (100%) rename src/frontend/apps/desk/src/{features => core}/auth/index.ts (100%) rename src/frontend/apps/desk/src/{features => core}/auth/useAuthStore.tsx (94%) create mode 100644 src/frontend/apps/desk/src/core/index.ts rename src/frontend/apps/desk/src/{pages/teams => features/teams/components}/TeamLayout.tsx (82%) diff --git a/src/frontend/apps/desk/src/api/__tests__/fetchApi.test.tsx b/src/frontend/apps/desk/src/api/__tests__/fetchApi.test.tsx index eeedd0c..72077d6 100644 --- a/src/frontend/apps/desk/src/api/__tests__/fetchApi.test.tsx +++ b/src/frontend/apps/desk/src/api/__tests__/fetchApi.test.tsx @@ -1,7 +1,7 @@ import fetchMock from 'fetch-mock'; import { fetchAPI } from '@/api'; -import { useAuthStore } from '@/features/auth'; +import { useAuthStore } from '@/core/auth'; describe('fetchAPI', () => { beforeEach(() => { diff --git a/src/frontend/apps/desk/src/api/fetchApi.ts b/src/frontend/apps/desk/src/api/fetchApi.ts index 671e1d3..c2e2e2b 100644 --- a/src/frontend/apps/desk/src/api/fetchApi.ts +++ b/src/frontend/apps/desk/src/api/fetchApi.ts @@ -1,4 +1,4 @@ -import { login, useAuthStore } from '@/features/auth'; +import { login, useAuthStore } from '@/core/auth'; /** * Retrieves the CSRF token from the document's cookies. diff --git a/src/frontend/apps/desk/src/pages/AppProvider.tsx b/src/frontend/apps/desk/src/core/AppProvider.tsx similarity index 86% rename from src/frontend/apps/desk/src/pages/AppProvider.tsx rename to src/frontend/apps/desk/src/core/AppProvider.tsx index 16b9329..1d5fbe8 100644 --- a/src/frontend/apps/desk/src/pages/AppProvider.tsx +++ b/src/frontend/apps/desk/src/core/AppProvider.tsx @@ -3,9 +3,10 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { useCunninghamTheme } from '@/cunningham'; -import { Auth } from '@/features/auth/Auth'; import '@/i18n/initI18n'; +import { Auth } from './auth/Auth'; + /** * QueryClient: * - defaultOptions: @@ -21,11 +22,7 @@ const queryClient = new QueryClient({ }, }); -export default function AppProvider({ - children, -}: { - children: React.ReactNode; -}) { +export function AppProvider({ children }: { children: React.ReactNode }) { const { theme } = useCunninghamTheme(); return ( diff --git a/src/frontend/apps/desk/src/pages/MainLayout.tsx b/src/frontend/apps/desk/src/core/MainLayout.tsx similarity index 82% rename from src/frontend/apps/desk/src/pages/MainLayout.tsx rename to src/frontend/apps/desk/src/core/MainLayout.tsx index 05bd7d5..39638e6 100644 --- a/src/frontend/apps/desk/src/pages/MainLayout.tsx +++ b/src/frontend/apps/desk/src/core/MainLayout.tsx @@ -2,11 +2,7 @@ import { Box } from '@/components'; import { HEADER_HEIGHT, Header } from '@/features/header'; import { Menu } from '@/features/menu'; -export default function MainLayout({ - children, -}: { - children: React.ReactNode; -}) { +export function MainLayout({ children }: { children: React.ReactNode }) { return (
diff --git a/src/frontend/apps/desk/src/features/auth/Auth.tsx b/src/frontend/apps/desk/src/core/auth/Auth.tsx similarity index 100% rename from src/frontend/apps/desk/src/features/auth/Auth.tsx rename to src/frontend/apps/desk/src/core/auth/Auth.tsx diff --git a/src/frontend/apps/desk/src/features/auth/api/getMe.tsx b/src/frontend/apps/desk/src/core/auth/api/getMe.tsx similarity index 100% rename from src/frontend/apps/desk/src/features/auth/api/getMe.tsx rename to src/frontend/apps/desk/src/core/auth/api/getMe.tsx diff --git a/src/frontend/apps/desk/src/features/auth/api/index.ts b/src/frontend/apps/desk/src/core/auth/api/index.ts similarity index 100% rename from src/frontend/apps/desk/src/features/auth/api/index.ts rename to src/frontend/apps/desk/src/core/auth/api/index.ts diff --git a/src/frontend/apps/desk/src/features/auth/api/types.ts b/src/frontend/apps/desk/src/core/auth/api/types.ts similarity index 100% rename from src/frontend/apps/desk/src/features/auth/api/types.ts rename to src/frontend/apps/desk/src/core/auth/api/types.ts diff --git a/src/frontend/apps/desk/src/features/auth/index.ts b/src/frontend/apps/desk/src/core/auth/index.ts similarity index 100% rename from src/frontend/apps/desk/src/features/auth/index.ts rename to src/frontend/apps/desk/src/core/auth/index.ts diff --git a/src/frontend/apps/desk/src/features/auth/useAuthStore.tsx b/src/frontend/apps/desk/src/core/auth/useAuthStore.tsx similarity index 94% rename from src/frontend/apps/desk/src/features/auth/useAuthStore.tsx rename to src/frontend/apps/desk/src/core/auth/useAuthStore.tsx index 5d0bbed..e2a2f3a 100644 --- a/src/frontend/apps/desk/src/features/auth/useAuthStore.tsx +++ b/src/frontend/apps/desk/src/core/auth/useAuthStore.tsx @@ -1,6 +1,6 @@ import { create } from 'zustand'; -import { User, getMe } from '@/features/auth/api'; +import { User, getMe } from './api'; export const login = () => { window.location.replace( diff --git a/src/frontend/apps/desk/src/core/index.ts b/src/frontend/apps/desk/src/core/index.ts new file mode 100644 index 0000000..6af2968 --- /dev/null +++ b/src/frontend/apps/desk/src/core/index.ts @@ -0,0 +1,2 @@ +export * from './AppProvider'; +export * from './MainLayout'; diff --git a/src/frontend/apps/desk/src/features/addMembers/api/useCreateInvitation.tsx b/src/frontend/apps/desk/src/features/addMembers/api/useCreateInvitation.tsx index 489b07b..6e3b8bc 100644 --- a/src/frontend/apps/desk/src/features/addMembers/api/useCreateInvitation.tsx +++ b/src/frontend/apps/desk/src/features/addMembers/api/useCreateInvitation.tsx @@ -1,7 +1,7 @@ import { useMutation } from '@tanstack/react-query'; import { APIError, errorCauses, fetchAPI } from '@/api'; -import { User } from '@/features/auth'; +import { User } from '@/core/auth'; import { Invitation } from '@/features/members'; import { Role, Team } from '@/features/teams'; diff --git a/src/frontend/apps/desk/src/features/addMembers/api/useCreateTeamAccess.tsx b/src/frontend/apps/desk/src/features/addMembers/api/useCreateTeamAccess.tsx index f1cba90..08f8e91 100644 --- a/src/frontend/apps/desk/src/features/addMembers/api/useCreateTeamAccess.tsx +++ b/src/frontend/apps/desk/src/features/addMembers/api/useCreateTeamAccess.tsx @@ -1,7 +1,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import { APIError, errorCauses, fetchAPI } from '@/api'; -import { User } from '@/features/auth'; +import { User } from '@/core/auth'; import { Access, KEY_LIST_TEAM_ACCESSES } from '@/features/members'; import { KEY_LIST_TEAM, KEY_TEAM, Role, Team } from '@/features/teams'; diff --git a/src/frontend/apps/desk/src/features/addMembers/api/useUsers.tsx b/src/frontend/apps/desk/src/features/addMembers/api/useUsers.tsx index 918b8b5..a0670a7 100644 --- a/src/frontend/apps/desk/src/features/addMembers/api/useUsers.tsx +++ b/src/frontend/apps/desk/src/features/addMembers/api/useUsers.tsx @@ -1,7 +1,7 @@ import { UseQueryOptions, useQuery } from '@tanstack/react-query'; import { APIError, APIList, errorCauses, fetchAPI } from '@/api'; -import { User } from '@/features/auth'; +import { User } from '@/core/auth'; export type UsersParams = { query: string; diff --git a/src/frontend/apps/desk/src/features/addMembers/types.tsx b/src/frontend/apps/desk/src/features/addMembers/types.tsx index 15da829..d33c83c 100644 --- a/src/frontend/apps/desk/src/features/addMembers/types.tsx +++ b/src/frontend/apps/desk/src/features/addMembers/types.tsx @@ -1,4 +1,4 @@ -import { User } from '@/features/auth'; +import { User } from '@/core/auth'; export enum OptionType { INVITATION = 'invitation', diff --git a/src/frontend/apps/desk/src/features/members/__tests__/ModalRole.test.tsx b/src/frontend/apps/desk/src/features/members/__tests__/ModalRole.test.tsx index 4050960..0716b66 100644 --- a/src/frontend/apps/desk/src/features/members/__tests__/ModalRole.test.tsx +++ b/src/frontend/apps/desk/src/features/members/__tests__/ModalRole.test.tsx @@ -3,7 +3,7 @@ import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import fetchMock from 'fetch-mock'; -import { useAuthStore } from '@/features/auth'; +import { useAuthStore } from '@/core/auth'; import { Role } from '@/features/teams'; import { AppWrapper } from '@/tests/utils'; diff --git a/src/frontend/apps/desk/src/features/members/hooks/useWhoAmI.tsx b/src/frontend/apps/desk/src/features/members/hooks/useWhoAmI.tsx index 612b245..79eb506 100644 --- a/src/frontend/apps/desk/src/features/members/hooks/useWhoAmI.tsx +++ b/src/frontend/apps/desk/src/features/members/hooks/useWhoAmI.tsx @@ -1,4 +1,4 @@ -import { useAuthStore } from '@/features/auth'; +import { useAuthStore } from '@/core/auth'; import { Role } from '@/features/teams'; import { Access } from '../types'; diff --git a/src/frontend/apps/desk/src/features/members/types.tsx b/src/frontend/apps/desk/src/features/members/types.tsx index 54a63c9..e8e858d 100644 --- a/src/frontend/apps/desk/src/features/members/types.tsx +++ b/src/frontend/apps/desk/src/features/members/types.tsx @@ -1,4 +1,4 @@ -import { User } from '@/features/auth/'; +import { User } from '@/core/auth'; import { Role, Team } from '@/features/teams/'; export interface Access { diff --git a/src/frontend/apps/desk/src/pages/teams/TeamLayout.tsx b/src/frontend/apps/desk/src/features/teams/components/TeamLayout.tsx similarity index 82% rename from src/frontend/apps/desk/src/pages/teams/TeamLayout.tsx rename to src/frontend/apps/desk/src/features/teams/components/TeamLayout.tsx index 1241110..ec81822 100644 --- a/src/frontend/apps/desk/src/pages/teams/TeamLayout.tsx +++ b/src/frontend/apps/desk/src/features/teams/components/TeamLayout.tsx @@ -1,12 +1,11 @@ import { PropsWithChildren } from 'react'; import { Box } from '@/components'; +import { MainLayout } from '@/core'; import { useCunninghamTheme } from '@/cunningham'; import { Panel } from '@/features/teams'; -import MainLayout from '../MainLayout'; - -export default function TeamLayout({ children }: PropsWithChildren) { +export function TeamLayout({ children }: PropsWithChildren) { const { colorsTokens } = useCunninghamTheme(); return ( diff --git a/src/frontend/apps/desk/src/features/teams/components/index.ts b/src/frontend/apps/desk/src/features/teams/components/index.ts index 92dda9f..e1efbc2 100644 --- a/src/frontend/apps/desk/src/features/teams/components/index.ts +++ b/src/frontend/apps/desk/src/features/teams/components/index.ts @@ -1,3 +1,4 @@ export * from './CardCreateTeam'; export * from './Panel/Panel'; export * from './TeamInfo'; +export * from './TeamLayout'; diff --git a/src/frontend/apps/desk/src/pages/404.tsx b/src/frontend/apps/desk/src/pages/404.tsx index 8dfbfef..d1d44fd 100644 --- a/src/frontend/apps/desk/src/pages/404.tsx +++ b/src/frontend/apps/desk/src/pages/404.tsx @@ -5,10 +5,9 @@ import styled from 'styled-components'; import Icon404 from '@/assets/icons/icon-404.svg'; import { Box, StyledLink, Text } from '@/components'; +import { MainLayout } from '@/core'; import { NextPageWithLayout } from '@/types/next'; -import MainLayout from './MainLayout'; - const StyledButton = styled(Button)` width: fit-content; padding-left: 2rem; diff --git a/src/frontend/apps/desk/src/pages/_app.tsx b/src/frontend/apps/desk/src/pages/_app.tsx index 70a9be9..0d2ea15 100644 --- a/src/frontend/apps/desk/src/pages/_app.tsx +++ b/src/frontend/apps/desk/src/pages/_app.tsx @@ -2,9 +2,9 @@ import type { AppProps } from 'next/app'; import Head from 'next/head'; import { useTranslation } from 'react-i18next'; +import { AppProvider } from '@/core/'; import { NextPageWithLayout } from '@/types/next'; -import AppProvider from './AppProvider'; import './globals.css'; type AppPropsWithLayout = AppProps & { diff --git a/src/frontend/apps/desk/src/pages/contacts/index.tsx b/src/frontend/apps/desk/src/pages/contacts/index.tsx index 443184c..ba88d4f 100644 --- a/src/frontend/apps/desk/src/pages/contacts/index.tsx +++ b/src/frontend/apps/desk/src/pages/contacts/index.tsx @@ -1,10 +1,9 @@ import { ReactElement } from 'react'; import { Box } from '@/components'; +import { MainLayout } from '@/core'; import { NextPageWithLayout } from '@/types/next'; -import MainLayout from '../MainLayout'; - const Page: NextPageWithLayout = () => { return Contacts; }; diff --git a/src/frontend/apps/desk/src/pages/favorite/index.tsx b/src/frontend/apps/desk/src/pages/favorite/index.tsx index 2e098d8..7b81c2b 100644 --- a/src/frontend/apps/desk/src/pages/favorite/index.tsx +++ b/src/frontend/apps/desk/src/pages/favorite/index.tsx @@ -1,10 +1,9 @@ import { ReactElement } from 'react'; import { Box } from '@/components'; +import { MainLayout } from '@/core'; import { NextPageWithLayout } from '@/types/next'; -import MainLayout from '../MainLayout'; - const Page: NextPageWithLayout = () => { return Favorite; }; diff --git a/src/frontend/apps/desk/src/pages/groups/index.tsx b/src/frontend/apps/desk/src/pages/groups/index.tsx index b8aa687..c24c053 100644 --- a/src/frontend/apps/desk/src/pages/groups/index.tsx +++ b/src/frontend/apps/desk/src/pages/groups/index.tsx @@ -1,10 +1,9 @@ import { ReactElement } from 'react'; import { Box } from '@/components'; +import { MainLayout } from '@/core'; import { NextPageWithLayout } from '@/types/next'; -import MainLayout from '../MainLayout'; - const Page: NextPageWithLayout = () => { return Groups; }; diff --git a/src/frontend/apps/desk/src/pages/index.tsx b/src/frontend/apps/desk/src/pages/index.tsx index 42a0513..bcccdb2 100644 --- a/src/frontend/apps/desk/src/pages/index.tsx +++ b/src/frontend/apps/desk/src/pages/index.tsx @@ -1,9 +1,9 @@ import type { ReactElement } from 'react'; +import { TeamLayout } from '@/features/teams/'; import { NextPageWithLayout } from '@/types/next'; import Teams from './teams/'; -import TeamLayout from './teams/TeamLayout'; const Page: NextPageWithLayout = () => { return ; diff --git a/src/frontend/apps/desk/src/pages/recent/index.tsx b/src/frontend/apps/desk/src/pages/recent/index.tsx index 00a7c73..cb06667 100644 --- a/src/frontend/apps/desk/src/pages/recent/index.tsx +++ b/src/frontend/apps/desk/src/pages/recent/index.tsx @@ -1,10 +1,9 @@ import { ReactElement } from 'react'; import { Box } from '@/components'; +import { MainLayout } from '@/core/'; import { NextPageWithLayout } from '@/types/next'; -import MainLayout from '../MainLayout'; - const Page: NextPageWithLayout = () => { return Recent; }; diff --git a/src/frontend/apps/desk/src/pages/teams/[id].tsx b/src/frontend/apps/desk/src/pages/teams/[id].tsx index e17fead..902b313 100644 --- a/src/frontend/apps/desk/src/pages/teams/[id].tsx +++ b/src/frontend/apps/desk/src/pages/teams/[id].tsx @@ -6,11 +6,9 @@ import { ReactElement } from 'react'; import { Box } from '@/components'; import { TextErrors } from '@/components/TextErrors'; import { MemberGrid } from '@/features/members'; -import { Role, TeamInfo, useTeam } from '@/features/teams/'; +import { Role, TeamInfo, TeamLayout, useTeam } from '@/features/teams/'; import { NextPageWithLayout } from '@/types/next'; -import TeamLayout from './TeamLayout'; - const Page: NextPageWithLayout = () => { const { query: { id }, diff --git a/src/frontend/apps/desk/src/pages/teams/create.tsx b/src/frontend/apps/desk/src/pages/teams/create.tsx index 59f3233..1ce18ac 100644 --- a/src/frontend/apps/desk/src/pages/teams/create.tsx +++ b/src/frontend/apps/desk/src/pages/teams/create.tsx @@ -1,11 +1,9 @@ import { ReactElement } from 'react'; import { Box } from '@/components'; -import { CardCreateTeam } from '@/features/teams'; +import { CardCreateTeam, TeamLayout } from '@/features/teams/'; import { NextPageWithLayout } from '@/types/next'; -import TeamLayout from './TeamLayout'; - const Page: NextPageWithLayout = () => { return ( diff --git a/src/frontend/apps/desk/src/pages/teams/index.tsx b/src/frontend/apps/desk/src/pages/teams/index.tsx index 3ad82dc..78583aa 100644 --- a/src/frontend/apps/desk/src/pages/teams/index.tsx +++ b/src/frontend/apps/desk/src/pages/teams/index.tsx @@ -4,10 +4,9 @@ import { useTranslation } from 'react-i18next'; import styled from 'styled-components'; import { Box, StyledLink } from '@/components'; +import { TeamLayout } from '@/features/teams/'; import { NextPageWithLayout } from '@/types/next'; -import TeamLayout from './TeamLayout'; - const StyledButton = styled(Button)` width: fit-content; `;