From edffbbaf99a0931349e809af56ced7c53f432109 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Tue, 2 Jul 2024 17:05:01 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(frontend)=20fix=20issue=20when=20n?= =?UTF-8?q?o=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A bug occured when no template was available. This commit fixes this issue. --- .../docs/doc-tools/components/DocToolBox.tsx | 30 +-------------- .../docs/doc-tools/components/ModalPDF.tsx | 37 ++++++++++++++----- 2 files changed, 30 insertions(+), 37 deletions(-) diff --git a/src/frontend/apps/impress/src/features/docs/doc-tools/components/DocToolBox.tsx b/src/frontend/apps/impress/src/features/docs/doc-tools/components/DocToolBox.tsx index 0bf498f1..b9324693 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-tools/components/DocToolBox.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-tools/components/DocToolBox.tsx @@ -1,5 +1,5 @@ import { Button } from '@openfun/cunningham-react'; -import React, { useMemo, useState } from 'react'; +import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Box, DropButton, IconOptions, Text } from '@/components'; @@ -12,8 +12,6 @@ import { import { ModalAddMembers } from '@/features/docs/members/members-add'; import { ModalGridMembers } from '@/features/docs/members/members-grid/'; -import { TemplatesOrdering, useTemplates } from '../api/useTemplates'; - import { ModalPDF } from './ModalPDF'; interface DocToolBoxProps { @@ -22,9 +20,6 @@ interface DocToolBoxProps { export const DocToolBox = ({ doc }: DocToolBoxProps) => { const { t } = useTranslation(); - const { data: templates } = useTemplates({ - ordering: TemplatesOrdering.BY_CREATED_ON_DESC, - }); const [isModalAddMembersOpen, setIsModalAddMembersOpen] = useState(false); const [isModalGridMembersOpen, setIsModalGridMembersOpen] = useState(false); const [isModalUpdateOpen, setIsModalUpdateOpen] = useState(false); @@ -32,23 +27,6 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => { const [isModalPDFOpen, setIsModalPDFOpen] = useState(false); const [isDropOpen, setIsDropOpen] = useState(false); - const templateOptions = useMemo(() => { - if (!templates?.pages) { - return []; - } - - const templateOptions = templates.pages - .map((page) => - page.results.map((template) => ({ - label: template.title, - value: template.id, - })), - ) - .flat(); - - return templateOptions; - }, [templates?.pages]); - return ( { /> )} {isModalPDFOpen && ( - setIsModalPDFOpen(false)} - templateOptions={templateOptions} - doc={doc} - /> + setIsModalPDFOpen(false)} doc={doc} /> )} {isModalUpdateOpen && ( setIsModalUpdateOpen(false)} doc={doc} /> diff --git a/src/frontend/apps/impress/src/features/docs/doc-tools/components/ModalPDF.tsx b/src/frontend/apps/impress/src/features/docs/doc-tools/components/ModalPDF.tsx index 9d60aec2..055b8ce5 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-tools/components/ModalPDF.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-tools/components/ModalPDF.tsx @@ -9,25 +9,25 @@ import { useToastProvider, } from '@openfun/cunningham-react'; import { t } from 'i18next'; -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { Box, Text } from '@/components'; import { useDocStore } from '@/features/docs/doc-editor/'; import { Doc } from '@/features/docs/doc-management'; import { useCreatePdf } from '../api/useCreatePdf'; +import { TemplatesOrdering, useTemplates } from '../api/useTemplates'; import { adaptBlockNoteHTML, downloadFile } from '../utils'; interface ModalPDFProps { onClose: () => void; - templateOptions: { - label: string; - value: string; - }[]; doc: Doc; } -export const ModalPDF = ({ onClose, templateOptions, doc }: ModalPDFProps) => { +export const ModalPDF = ({ onClose, doc }: ModalPDFProps) => { + const { data: templates } = useTemplates({ + ordering: TemplatesOrdering.BY_CREATED_ON_DESC, + }); const { toast } = useToastProvider(); const { docsStore } = useDocStore(); const { @@ -38,9 +38,28 @@ export const ModalPDF = ({ onClose, templateOptions, doc }: ModalPDFProps) => { isPending, error, } = useCreatePdf(); - const [templateIdSelected, setTemplateIdSelected] = useState( - templateOptions?.[0].value, - ); + const [templateIdSelected, setTemplateIdSelected] = useState(); + + const templateOptions = useMemo(() => { + if (!templates?.pages) { + return []; + } + + const templateOptions = templates.pages + .map((page) => + page.results.map((template) => ({ + label: template.title, + value: template.id, + })), + ) + .flat(); + + if (templateOptions.length) { + setTemplateIdSelected(templateOptions[0].value); + } + + return templateOptions; + }, [templates?.pages]); useEffect(() => { if (!error) {