♻️(frontend) reduce props drilling

- Reduce proprs drilling
- Improve state rerendering with useIsCollaborativeEditable
This commit is contained in:
Anthony LC
2025-04-02 15:25:31 +02:00
parent 6ece3264d6
commit adb15dedb8
3 changed files with 8 additions and 18 deletions

View File

@@ -54,11 +54,7 @@ export const DocEditor = ({ doc, versionId }: DocEditorProps) => {
$padding={{ horizontal: isDesktop ? '54px' : 'base' }} $padding={{ horizontal: isDesktop ? '54px' : 'base' }}
className="--docs--doc-editor-header" className="--docs--doc-editor-header"
> >
{isVersion ? ( {isVersion ? <DocVersionHeader /> : <DocHeader doc={doc} />}
<DocVersionHeader title={doc.title} />
) : (
<DocHeader doc={doc} />
)}
</Box> </Box>
<Box <Box

View File

@@ -13,6 +13,7 @@ import {
KEY_DOC, KEY_DOC,
KEY_LIST_DOC, KEY_LIST_DOC,
KEY_SUB_PAGE, KEY_SUB_PAGE,
useDocStore,
useTrans, useTrans,
useUpdateDoc, useUpdateDoc,
} from '@/docs/doc-management'; } from '@/docs/doc-management';
@@ -24,18 +25,15 @@ interface DocTitleProps {
export const DocTitle = ({ doc }: DocTitleProps) => { export const DocTitle = ({ doc }: DocTitleProps) => {
if (!doc.abilities.partial_update) { if (!doc.abilities.partial_update) {
return <DocTitleText title={doc.title} />; return <DocTitleText />;
} }
return <DocTitleInput doc={doc} />; return <DocTitleInput doc={doc} />;
}; };
interface DocTitleTextProps { export const DocTitleText = () => {
title?: string;
}
export const DocTitleText = ({ title }: DocTitleTextProps) => {
const { isMobile } = useResponsiveStore(); const { isMobile } = useResponsiveStore();
const { currentDoc } = useDocStore();
const { untitledDocument } = useTrans(); const { untitledDocument } = useTrans();
return ( return (
@@ -45,7 +43,7 @@ export const DocTitleText = ({ title }: DocTitleTextProps) => {
$size={isMobile ? 'h4' : 'h2'} $size={isMobile ? 'h4' : 'h2'}
$variation="1000" $variation="1000"
> >
{title || untitledDocument} {currentDoc?.title || untitledDocument}
</Text> </Text>
); );
}; };

View File

@@ -5,11 +5,7 @@ import { useCunninghamTheme } from '@/cunningham';
import { DocTitleText } from './DocTitle'; import { DocTitleText } from './DocTitle';
interface DocVersionHeaderProps { export const DocVersionHeader = () => {
title?: string;
}
export const DocVersionHeader = ({ title }: DocVersionHeaderProps) => {
const { spacingsTokens } = useCunninghamTheme(); const { spacingsTokens } = useCunninghamTheme();
const { t } = useTranslation(); const { t } = useTranslation();
@@ -23,7 +19,7 @@ export const DocVersionHeader = ({ title }: DocVersionHeaderProps) => {
aria-label={t('It is the document title')} aria-label={t('It is the document title')}
className="--docs--doc-version-header" className="--docs--doc-version-header"
> >
<DocTitleText title={title} /> <DocTitleText />
<HorizontalSeparator /> <HorizontalSeparator />
</Box> </Box>
</> </>