From 25491aeb0635022c2136d4da7a244a11cd4e3f8b Mon Sep 17 00:00:00 2001 From: Nathan Vasse Date: Wed, 12 Feb 2025 14:09:48 +0100 Subject: [PATCH] wip --- .../doc-editor/components/AIPdfButton.tsx | 26 +++++++++++++++---- .../doc-editor/components/Ai/AiButton.tsx | 5 +++- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/AIPdfButton.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/AIPdfButton.tsx index 18b8bf07..1378e0fb 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/AIPdfButton.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/AIPdfButton.tsx @@ -3,8 +3,13 @@ import { useComponentsContext, useSelectedBlocks, } from '@blocknote/react'; -import { VariantType, useToastProvider } from '@openfun/cunningham-react'; +import { + Loader, + VariantType, + useToastProvider, +} from '@openfun/cunningham-react'; import { useRouter } from 'next/router'; +import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Text } from '@/components'; @@ -21,6 +26,7 @@ export const AIPdfButton = () => { const { toast } = useToastProvider(); const router = useRouter(); const { mutateAsync: requestAIPdf, isPending } = useDocAIPdfTranscribe(); + const [isLoading, setIsLoading] = useState(false); if (!Components || !currentDoc) { return null; @@ -42,13 +48,19 @@ export const AIPdfButton = () => { return; } + setIsLoading(true); try { const response = await requestAIPdf({ docId: currentDoc.id, pdfUrl, }); - void router.push(`/docs/${response.document_id}`); + setTimeout(() => { + // router.push causes the following error: + // TypeError: Cannot read properties of undefined (reading 'isDestroyed') + // void router.push(`/docs/${response.document_id}`); + window.location.href = `/docs/${response.document_id}?albert=true`; + }, 1000); } catch (error) { console.error('error', error); toast(t('Failed to transcribe PDF'), VariantType.ERROR); @@ -62,9 +74,13 @@ export const AIPdfButton = () => { label="AI" mainTooltip={t('Transcribe PDF')} icon={ - - auto_awesome - + isLoading ? ( + + ) : ( + + auto_awesome + + ) } onClick={() => void handlePdfTranscription()} /> diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/Ai/AiButton.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/Ai/AiButton.tsx index f7fc22cb..fa09280c 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/Ai/AiButton.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/Ai/AiButton.tsx @@ -1,5 +1,6 @@ import { Button, Input, Loader } from '@openfun/cunningham-react'; import { marked } from 'marked'; +import { useSearchParams } from 'next/navigation'; import { useState } from 'react'; import styled from 'styled-components'; @@ -48,7 +49,9 @@ export const SuggestionButton = styled.button` `; export const AiButton = ({ doc }: { doc: Doc }) => { - const [isOpen, setIsOpen] = useState(false); + const searchParams = useSearchParams(); + + const [isOpen, setIsOpen] = useState(searchParams.get('albert') === 'true'); return ( <>