diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/panel/index.ts b/src/frontend/apps/desk/src/features/mail-domains/components/panel/index.ts deleted file mode 100644 index 8960d84..0000000 --- a/src/frontend/apps/desk/src/features/mail-domains/components/panel/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Panel'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/__tests__/ModalAddMailDomain.test.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/__tests__/ModalAddMailDomain.test.tsx similarity index 99% rename from src/frontend/apps/desk/src/features/mail-domains/components/__tests__/ModalAddMailDomain.test.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/__tests__/ModalAddMailDomain.test.tsx index e585ba9..f09c615 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/components/__tests__/ModalAddMailDomain.test.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/__tests__/ModalAddMailDomain.test.tsx @@ -5,7 +5,7 @@ import React from 'react'; import { AppWrapper } from '@/tests/utils'; -import { ModalAddMailDomain } from '../ModalAddMailDomain'; +import { ModalAddMailDomain } from '../components'; const mockPush = jest.fn(); jest.mock('next/navigation', () => ({ diff --git a/src/frontend/apps/desk/src/features/mail-domains/api/index.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/api/index.tsx similarity index 60% rename from src/frontend/apps/desk/src/features/mail-domains/api/index.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/api/index.tsx index 61a928c..dc54b8a 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/api/index.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/api/index.tsx @@ -1,5 +1,3 @@ export * from './useMailDomains'; export * from './useMailDomain'; -export * from './useCreateMailbox'; -export * from './useMailboxes'; export * from './useAddMailDomain'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/api/useAddMailDomain.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/api/useAddMailDomain.tsx similarity index 95% rename from src/frontend/apps/desk/src/features/mail-domains/api/useAddMailDomain.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/api/useAddMailDomain.tsx index 60c81c5..c76d3b6 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/api/useAddMailDomain.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/api/useAddMailDomain.tsx @@ -1,7 +1,8 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import { APIError, errorCauses, fetchAPI } from '@/api'; -import { MailDomain } from '@/features/mail-domains'; + +import { MailDomain } from '../types'; import { KEY_LIST_MAIL_DOMAIN } from './useMailDomains'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/api/useMailDomain.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/api/useMailDomain.tsx similarity index 95% rename from src/frontend/apps/desk/src/features/mail-domains/api/useMailDomain.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/api/useMailDomain.tsx index 95ef86a..a07437f 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/api/useMailDomain.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/api/useMailDomain.tsx @@ -25,7 +25,7 @@ export const getMailDomain = async ({ return response.json() as Promise; }; -const KEY_MAIL_DOMAIN = 'mail-domain'; +export const KEY_MAIL_DOMAIN = 'mail-domain'; export function useMailDomain( param: MailDomainParams, diff --git a/src/frontend/apps/desk/src/features/mail-domains/api/useMailDomains.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/api/useMailDomains.tsx similarity index 96% rename from src/frontend/apps/desk/src/features/mail-domains/api/useMailDomains.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/api/useMailDomains.tsx index 08ca730..0a491b9 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/api/useMailDomains.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/api/useMailDomains.tsx @@ -6,7 +6,8 @@ import { } from '@tanstack/react-query'; import { APIError, APIList, errorCauses, fetchAPI } from '@/api'; -import { MailDomain } from '@/features/mail-domains/types'; + +import { MailDomain } from '../types'; type MailDomainsResponse = APIList; diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/MailDomainsLayout.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/components/MailDomainsLayout.tsx similarity index 89% rename from src/frontend/apps/desk/src/features/mail-domains/components/MailDomainsLayout.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/components/MailDomainsLayout.tsx index 7d1e14a..b68405e 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/components/MailDomainsLayout.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/components/MailDomainsLayout.tsx @@ -3,7 +3,8 @@ import { PropsWithChildren } from 'react'; import { Box } from '@/components'; import { MainLayout } from '@/core'; import { useCunninghamTheme } from '@/cunningham'; -import { Panel } from '@/features/mail-domains/components/panel'; + +import { Panel } from './panel'; export function MailDomainsLayout({ children }: PropsWithChildren) { const { colorsTokens } = useCunninghamTheme(); diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/ModalAddMailDomain.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/components/ModalAddMailDomain.tsx similarity index 97% rename from src/frontend/apps/desk/src/features/mail-domains/components/ModalAddMailDomain.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/components/ModalAddMailDomain.tsx index f896791..62f07c4 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/components/ModalAddMailDomain.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/components/ModalAddMailDomain.tsx @@ -9,9 +9,9 @@ import { z } from 'zod'; import { parseAPIError } from '@/api/parseAPIError'; import { Box, Text, TextErrors } from '@/components'; import { Modal } from '@/components/Modal'; -import { useAddMailDomain } from '@/features/mail-domains'; -import { default as MailDomainsLogo } from '../assets/mail-domains-logo.svg'; +import { default as MailDomainsLogo } from '../../assets/mail-domains-logo.svg'; +import { useAddMailDomain } from '../api'; const FORM_ID = 'form-add-mail-domain'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/domains/components/index.ts b/src/frontend/apps/desk/src/features/mail-domains/domains/components/index.ts new file mode 100644 index 0000000..18a8a49 --- /dev/null +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/components/index.ts @@ -0,0 +1,3 @@ +export * from './ModalAddMailDomain'; +export * from './MailDomainsLayout'; +export * from './panel'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/panel/ItemList.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/ItemList.tsx similarity index 91% rename from src/frontend/apps/desk/src/features/mail-domains/components/panel/ItemList.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/ItemList.tsx index 184559f..4344718 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/components/panel/ItemList.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/ItemList.tsx @@ -4,9 +4,11 @@ import { useTranslation } from 'react-i18next'; import { Box, Text } from '@/components'; import { InfiniteScroll } from '@/components/InfiniteScroll'; -import { MailDomain } from '@/features/mail-domains'; -import { useMailDomains } from '@/features/mail-domains/api/useMailDomains'; -import { useMailDomainsStore } from '@/features/mail-domains/store/useMailDomainsStore'; +import { + MailDomain, + useMailDomains, + useMailDomainsStore, +} from '@/features/mail-domains/domains'; import { PanelMailDomains } from './PanelItem'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/panel/Panel.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/Panel.tsx similarity index 98% rename from src/frontend/apps/desk/src/features/mail-domains/components/panel/Panel.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/Panel.tsx index 44e67d2..2ce61f6 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/components/panel/Panel.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/Panel.tsx @@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next'; import IconOpenClose from '@/assets/icons/icon-open-close.svg'; import { Box, BoxButton, Text } from '@/components'; -import { useConfigStore } from '@/core/'; +import { useConfigStore } from '@/core'; import { useCunninghamTheme } from '@/cunningham'; import { ItemList } from './ItemList'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/panel/PanelActions.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/PanelActions.tsx similarity index 90% rename from src/frontend/apps/desk/src/features/mail-domains/components/panel/PanelActions.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/PanelActions.tsx index d04b632..2edb32e 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/components/panel/PanelActions.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/PanelActions.tsx @@ -5,8 +5,10 @@ import IconAdd from '@/assets/icons/icon-add.svg'; import IconSort from '@/assets/icons/icon-sort.svg'; import { Box, BoxButton, StyledLink, Text } from '@/components'; import { useCunninghamTheme } from '@/cunningham'; -import { EnumMailDomainsOrdering } from '@/features/mail-domains'; -import { useMailDomainsStore } from '@/features/mail-domains/store/useMailDomainsStore'; +import { + EnumMailDomainsOrdering, + useMailDomainsStore, +} from '@/features/mail-domains/domains'; export const PanelActions = () => { const { t } = useTranslation(); diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/panel/PanelItem.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/PanelItem.tsx similarity index 98% rename from src/frontend/apps/desk/src/features/mail-domains/components/panel/PanelItem.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/PanelItem.tsx index 1065ce4..4f255e8 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/components/panel/PanelItem.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/PanelItem.tsx @@ -4,9 +4,10 @@ import { useTranslation } from 'react-i18next'; import { Box, StyledLink, Text } from '@/components'; import { useCunninghamTheme } from '@/cunningham'; -import { MailDomain } from '@/features/mail-domains'; import IconMailDomains from '@/features/mail-domains/assets/icon-mail-domains.svg'; +import { MailDomain } from '../../index'; + interface MailDomainProps { mailDomain: MailDomain; } diff --git a/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/index.ts b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/index.ts new file mode 100644 index 0000000..63813bb --- /dev/null +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/components/panel/index.ts @@ -0,0 +1,4 @@ +export * from './Panel'; +export * from './ItemList'; +export * from './PanelActions'; +export * from './PanelItem'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/index.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/index.tsx similarity index 100% rename from src/frontend/apps/desk/src/features/mail-domains/index.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/index.tsx index a042235..86ad49e 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/index.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/index.tsx @@ -1,4 +1,4 @@ export * from './components'; -export * from './types'; export * from './api'; export * from './store'; +export * from './types'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/store/index.ts b/src/frontend/apps/desk/src/features/mail-domains/domains/store/index.ts similarity index 100% rename from src/frontend/apps/desk/src/features/mail-domains/store/index.ts rename to src/frontend/apps/desk/src/features/mail-domains/domains/store/index.ts diff --git a/src/frontend/apps/desk/src/features/mail-domains/store/useMailDomainsStore.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/store/useMailDomainsStore.tsx similarity index 86% rename from src/frontend/apps/desk/src/features/mail-domains/store/useMailDomainsStore.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/store/useMailDomainsStore.tsx index dc6e195..0b27cd2 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/store/useMailDomainsStore.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/store/useMailDomainsStore.tsx @@ -1,6 +1,6 @@ import { create } from 'zustand'; -import { EnumMailDomainsOrdering } from '../api/useMailDomains'; +import { EnumMailDomainsOrdering } from '@/features/mail-domains/domains/api'; interface MailDomainsStore { ordering: EnumMailDomainsOrdering; diff --git a/src/frontend/apps/desk/src/features/mail-domains/types.tsx b/src/frontend/apps/desk/src/features/mail-domains/domains/types.ts similarity index 71% rename from src/frontend/apps/desk/src/features/mail-domains/types.tsx rename to src/frontend/apps/desk/src/features/mail-domains/domains/types.ts index 039c57d..13b9131 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/types.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/domains/types.ts @@ -1,5 +1,4 @@ import { UUID } from 'crypto'; - export interface MailDomain { id: UUID; name: string; @@ -17,10 +16,8 @@ export interface MailDomain { }; } -export interface MailDomainMailbox { - id: UUID; - local_part: string; - first_name: string; - last_name: string; - secondary_email: string; +export enum Role { + ADMIN = 'administrator', + OWNER = 'owner', + VIEWER = 'viewer', } diff --git a/src/frontend/apps/desk/src/features/mail-domains/mailboxes/api/index.tsx b/src/frontend/apps/desk/src/features/mail-domains/mailboxes/api/index.tsx new file mode 100644 index 0000000..f394a92 --- /dev/null +++ b/src/frontend/apps/desk/src/features/mail-domains/mailboxes/api/index.tsx @@ -0,0 +1,2 @@ +export * from './useCreateMailbox'; +export * from './useMailboxes'; diff --git a/src/frontend/apps/desk/src/features/mail-domains/api/useCreateMailbox.tsx b/src/frontend/apps/desk/src/features/mail-domains/mailboxes/api/useCreateMailbox.tsx similarity index 100% rename from src/frontend/apps/desk/src/features/mail-domains/api/useCreateMailbox.tsx rename to src/frontend/apps/desk/src/features/mail-domains/mailboxes/api/useCreateMailbox.tsx diff --git a/src/frontend/apps/desk/src/features/mail-domains/api/useMailboxes.tsx b/src/frontend/apps/desk/src/features/mail-domains/mailboxes/api/useMailboxes.tsx similarity index 100% rename from src/frontend/apps/desk/src/features/mail-domains/api/useMailboxes.tsx rename to src/frontend/apps/desk/src/features/mail-domains/mailboxes/api/useMailboxes.tsx diff --git a/src/frontend/apps/desk/src/features/mail-domains/components/MailDomainsContent.tsx b/src/frontend/apps/desk/src/features/mail-domains/mailboxes/components/MailDomainsContent.tsx similarity index 84% rename from src/frontend/apps/desk/src/features/mail-domains/components/MailDomainsContent.tsx rename to src/frontend/apps/desk/src/features/mail-domains/mailboxes/components/MailDomainsContent.tsx index 186c2a4..71edf21 100644 --- a/src/frontend/apps/desk/src/features/mail-domains/components/MailDomainsContent.tsx +++ b/src/frontend/apps/desk/src/features/mail-domains/mailboxes/components/MailDomainsContent.tsx @@ -9,17 +9,18 @@ import { VariantType, usePagination, } from '@openfun/cunningham-react'; +import { useRouter } from 'next/navigation'; import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Box, Card, Text, TextErrors, TextStyled } from '@/components'; +import { ModalCreateMailbox } from '@/features/mail-domains/mailboxes'; +import { default as MailDomainsLogo } from '../../assets/mail-domains-logo.svg'; +import { PAGE_SIZE } from '../../conf'; +import { MailDomain } from '../../domains/types'; import { useMailboxes } from '../api/useMailboxes'; -import { default as MailDomainsLogo } from '../assets/mail-domains-logo.svg'; -import { PAGE_SIZE } from '../conf'; -import { MailDomain, MailDomainMailbox } from '../types'; - -import { ModalCreateMailbox } from './ModalCreateMailbox'; +import { MailDomainMailbox } from '../types'; export type ViewMailbox = { name: string; @@ -102,6 +103,7 @@ export function MailDomainsContent({ mailDomain }: { mailDomain: MailDomain }) { $padding={{ bottom: 'small' }} $margin={{ all: 'big', top: 'none' }} $overflow="auto" + aria-label={t('Mailboxes list card')} > {error && } @@ -151,6 +153,7 @@ const TopBanner = ({ mailDomain: MailDomain; showMailBoxCreationForm: (value: boolean) => void; }) => { + const router = useRouter(); const { t } = useTranslation(); return ( @@ -165,7 +168,7 @@ const TopBanner = ({ $gap="2.25rem" $justify="space-between" > - +