mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-12-23 07:01:49 +03:00
fix: export to html/markdown (#1892)
Co-authored-by: himself65 <himself65@outlook.com>
This commit is contained in:
parent
23e33a6061
commit
25d7f7c848
@ -1,11 +1,13 @@
|
||||
import { Menu, MenuItem } from '@affine/component';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
import { ContentParser } from '@blocksuite/blocks/content-parser';
|
||||
import {
|
||||
ArrowRightSmallIcon,
|
||||
ExportIcon,
|
||||
ExportToHtmlIcon,
|
||||
ExportToMarkdownIcon,
|
||||
} from '@blocksuite/icons';
|
||||
import { useRef } from 'react';
|
||||
|
||||
import type { CommonMenuItemProps } from './types';
|
||||
|
||||
@ -14,7 +16,7 @@ export const Export = ({
|
||||
onItemClick,
|
||||
}: CommonMenuItemProps<{ type: 'markdown' | 'html' }>) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const contentParserRef = useRef<ContentParser>();
|
||||
return (
|
||||
<Menu
|
||||
width={248}
|
||||
@ -23,9 +25,14 @@ export const Export = ({
|
||||
content={
|
||||
<>
|
||||
<MenuItem
|
||||
data-testid="export-to-html"
|
||||
onClick={() => {
|
||||
// @ts-expect-error
|
||||
globalThis.currentEditor.contentParser.onExportHtml();
|
||||
if (!contentParserRef.current) {
|
||||
contentParserRef.current = new ContentParser(
|
||||
globalThis.currentEditor!.page
|
||||
);
|
||||
}
|
||||
contentParserRef.current.onExportHtml();
|
||||
onSelect?.({ type: 'html' });
|
||||
}}
|
||||
icon={<ExportToHtmlIcon />}
|
||||
@ -33,9 +40,14 @@ export const Export = ({
|
||||
{t('Export to HTML')}
|
||||
</MenuItem>
|
||||
<MenuItem
|
||||
data-testid="export-to-markdown"
|
||||
onClick={() => {
|
||||
// @ts-expect-error
|
||||
globalThis.currentEditor.contentParser.onExportMarkdown();
|
||||
if (!contentParserRef.current) {
|
||||
contentParserRef.current = new ContentParser(
|
||||
globalThis.currentEditor!.page
|
||||
);
|
||||
}
|
||||
contentParserRef.current.onExportMarkdown();
|
||||
onSelect?.({ type: 'markdown' });
|
||||
}}
|
||||
icon={<ExportToMarkdownIcon />}
|
||||
@ -46,6 +58,7 @@ export const Export = ({
|
||||
}
|
||||
>
|
||||
<MenuItem
|
||||
data-testid="export-menu"
|
||||
icon={<ExportIcon />}
|
||||
endIcon={<ArrowRightSmallIcon />}
|
||||
onClick={e => {
|
||||
|
@ -29,6 +29,27 @@ test.describe('Local first favorite and cancel favorite page', () => {
|
||||
await favoriteBtn.click();
|
||||
await assertCurrentWorkspaceFlavour('local', page);
|
||||
});
|
||||
|
||||
test('Export to html and markdown', async ({ page }) => {
|
||||
await openHomePage(page);
|
||||
await waitMarkdownImported(page);
|
||||
{
|
||||
await clickPageMoreActions(page);
|
||||
await page.getByTestId('export-menu').click();
|
||||
const downloadPromise = page.waitForEvent('download');
|
||||
await page.getByTestId('export-to-markdown').click();
|
||||
await downloadPromise;
|
||||
}
|
||||
await page.waitForTimeout(50);
|
||||
{
|
||||
await clickPageMoreActions(page);
|
||||
await page.getByTestId('export-menu').click();
|
||||
const downloadPromise = page.waitForEvent('download');
|
||||
await page.getByTestId('export-to-html').click();
|
||||
await downloadPromise;
|
||||
}
|
||||
});
|
||||
|
||||
test('Cancel favorite', async ({ page }) => {
|
||||
await openHomePage(page);
|
||||
await waitMarkdownImported(page);
|
||||
|
Loading…
Reference in New Issue
Block a user