Skip to content

Commit edffbba

Browse files
committed
🐛(frontend) fix issue when no template
A bug occured when no template was available. This commit fixes this issue.
1 parent a393cd4 commit edffbba

File tree

2 files changed

+30
-37
lines changed

2 files changed

+30
-37
lines changed

src/frontend/apps/impress/src/features/docs/doc-tools/components/DocToolBox.tsx

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Button } from '@openfun/cunningham-react';
2-
import React, { useMemo, useState } from 'react';
2+
import React, { useState } from 'react';
33
import { useTranslation } from 'react-i18next';
44

55
import { Box, DropButton, IconOptions, Text } from '@/components';
@@ -12,8 +12,6 @@ import {
1212
import { ModalAddMembers } from '@/features/docs/members/members-add';
1313
import { ModalGridMembers } from '@/features/docs/members/members-grid/';
1414

15-
import { TemplatesOrdering, useTemplates } from '../api/useTemplates';
16-
1715
import { ModalPDF } from './ModalPDF';
1816

1917
interface DocToolBoxProps {
@@ -22,33 +20,13 @@ interface DocToolBoxProps {
2220

2321
export const DocToolBox = ({ doc }: DocToolBoxProps) => {
2422
const { t } = useTranslation();
25-
const { data: templates } = useTemplates({
26-
ordering: TemplatesOrdering.BY_CREATED_ON_DESC,
27-
});
2823
const [isModalAddMembersOpen, setIsModalAddMembersOpen] = useState(false);
2924
const [isModalGridMembersOpen, setIsModalGridMembersOpen] = useState(false);
3025
const [isModalUpdateOpen, setIsModalUpdateOpen] = useState(false);
3126
const [isModalRemoveOpen, setIsModalRemoveOpen] = useState(false);
3227
const [isModalPDFOpen, setIsModalPDFOpen] = useState(false);
3328
const [isDropOpen, setIsDropOpen] = useState(false);
3429

35-
const templateOptions = useMemo(() => {
36-
if (!templates?.pages) {
37-
return [];
38-
}
39-
40-
const templateOptions = templates.pages
41-
.map((page) =>
42-
page.results.map((template) => ({
43-
label: template.title,
44-
value: template.id,
45-
})),
46-
)
47-
.flat();
48-
49-
return templateOptions;
50-
}, [templates?.pages]);
51-
5230
return (
5331
<Box $margin="big" $position="absolute" $css="right:1rem;">
5432
<DropButton
@@ -141,11 +119,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
141119
/>
142120
)}
143121
{isModalPDFOpen && (
144-
<ModalPDF
145-
onClose={() => setIsModalPDFOpen(false)}
146-
templateOptions={templateOptions}
147-
doc={doc}
148-
/>
122+
<ModalPDF onClose={() => setIsModalPDFOpen(false)} doc={doc} />
149123
)}
150124
{isModalUpdateOpen && (
151125
<ModalUpdateDoc onClose={() => setIsModalUpdateOpen(false)} doc={doc} />

src/frontend/apps/impress/src/features/docs/doc-tools/components/ModalPDF.tsx

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,25 @@ import {
99
useToastProvider,
1010
} from '@openfun/cunningham-react';
1111
import { t } from 'i18next';
12-
import { useEffect, useState } from 'react';
12+
import { useEffect, useMemo, useState } from 'react';
1313

1414
import { Box, Text } from '@/components';
1515
import { useDocStore } from '@/features/docs/doc-editor/';
1616
import { Doc } from '@/features/docs/doc-management';
1717

1818
import { useCreatePdf } from '../api/useCreatePdf';
19+
import { TemplatesOrdering, useTemplates } from '../api/useTemplates';
1920
import { adaptBlockNoteHTML, downloadFile } from '../utils';
2021

2122
interface ModalPDFProps {
2223
onClose: () => void;
23-
templateOptions: {
24-
label: string;
25-
value: string;
26-
}[];
2724
doc: Doc;
2825
}
2926

30-
export const ModalPDF = ({ onClose, templateOptions, doc }: ModalPDFProps) => {
27+
export const ModalPDF = ({ onClose, doc }: ModalPDFProps) => {
28+
const { data: templates } = useTemplates({
29+
ordering: TemplatesOrdering.BY_CREATED_ON_DESC,
30+
});
3131
const { toast } = useToastProvider();
3232
const { docsStore } = useDocStore();
3333
const {
@@ -38,9 +38,28 @@ export const ModalPDF = ({ onClose, templateOptions, doc }: ModalPDFProps) => {
3838
isPending,
3939
error,
4040
} = useCreatePdf();
41-
const [templateIdSelected, setTemplateIdSelected] = useState<string>(
42-
templateOptions?.[0].value,
43-
);
41+
const [templateIdSelected, setTemplateIdSelected] = useState<string>();
42+
43+
const templateOptions = useMemo(() => {
44+
if (!templates?.pages) {
45+
return [];
46+
}
47+
48+
const templateOptions = templates.pages
49+
.map((page) =>
50+
page.results.map((template) => ({
51+
label: template.title,
52+
value: template.id,
53+
})),
54+
)
55+
.flat();
56+
57+
if (templateOptions.length) {
58+
setTemplateIdSelected(templateOptions[0].value);
59+
}
60+
61+
return templateOptions;
62+
}, [templates?.pages]);
4463

4564
useEffect(() => {
4665
if (!error) {

0 commit comments

Comments
 (0)