Skip to content

Commit a34c58d

Browse files
committed
chore: code refactor
1 parent c61ffb8 commit a34c58d

File tree

17 files changed

+296
-215
lines changed

17 files changed

+296
-215
lines changed

apps/book-web/src/layouts/MarkdownEditorLayout/MarkdownEditorLayout.tsx

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { MarkdownEditor, CustomEventDetail, nextraCustomEventName } from '@packages/markdown-editor'
1+
import {
2+
MarkdownEditor,
3+
CustomEventDetail,
4+
markdownCustomEventName,
5+
} from '@packages/markdown-editor'
26
import { themeConfig } from './context'
37
import { useEffect, useState } from 'react'
48
import { BookMetadata, generateBookMetadata, Pages } from '@/lib/generateBookMetadata'
@@ -63,7 +67,7 @@ function MarkdownEditorLayout({ children, mdxText }: Props) {
6367
getPageRefetch()
6468
}, [pageUrlSlug])
6569

66-
// new Mdx
70+
// new Page data
6771
useEffect(() => {
6872
if (isGetPageLoading) return
6973
if (!getPageData?.page) return
@@ -88,9 +92,9 @@ function MarkdownEditorLayout({ children, mdxText }: Props) {
8892
})
8993
getPagesRefetch()
9094
}
91-
window.addEventListener(nextraCustomEventName.createItemEvent, create)
95+
window.addEventListener(markdownCustomEventName.createItemEvent, create)
9296
return () => {
93-
window.removeEventListener(nextraCustomEventName.createItemEvent, create)
97+
window.removeEventListener(markdownCustomEventName.createItemEvent, create)
9498
}
9599
}, [])
96100

@@ -113,9 +117,21 @@ function MarkdownEditorLayout({ children, mdxText }: Props) {
113117

114118
const isUpdateTitle = !!e.detail.title
115119

116-
await updatePageAsyncMutate({
117-
input: isUpdateTitle ? titleInput : bodyInput,
118-
})
120+
try {
121+
await updatePageAsyncMutate({
122+
input: isUpdateTitle ? titleInput : bodyInput,
123+
})
124+
125+
const event = new CustomEvent(markdownCustomEventName.updateItemResultEvent, {
126+
detail: { result: 'success' },
127+
})
128+
dispatchEvent(event)
129+
} catch (error) {
130+
const event = new CustomEvent(markdownCustomEventName.updateItemResultEvent, {
131+
detail: { result: 'error' },
132+
})
133+
dispatchEvent(event)
134+
}
119135

120136
getPageRefetch()
121137

@@ -124,9 +140,9 @@ function MarkdownEditorLayout({ children, mdxText }: Props) {
124140
}
125141
}
126142

127-
window.addEventListener(nextraCustomEventName.updateItemEvent, update)
143+
window.addEventListener(markdownCustomEventName.updateItemEvent, update)
128144
return () => {
129-
window.removeEventListener(nextraCustomEventName.updateItemEvent, update)
145+
window.removeEventListener(markdownCustomEventName.updateItemEvent, update)
130146
}
131147
}, [pageUrlSlug, bookUrlSlug])
132148

@@ -148,9 +164,9 @@ function MarkdownEditorLayout({ children, mdxText }: Props) {
148164
getPagesRefetch()
149165
}
150166

151-
window.addEventListener(nextraCustomEventName.changeItemOrderEvent, changeItem)
167+
window.addEventListener(markdownCustomEventName.changeItemOrderEvent, changeItem)
152168
return () => {
153-
window.removeEventListener(nextraCustomEventName.changeItemOrderEvent, changeItem)
169+
window.removeEventListener(markdownCustomEventName.changeItemOrderEvent, changeItem)
154170
}
155171
}, [])
156172

@@ -164,15 +180,15 @@ function MarkdownEditorLayout({ children, mdxText }: Props) {
164180
return
165181
}
166182
const { deploy } = await deployAsyncMutate({ input: { url_slug: bookUrlSlug } })
167-
const event = new CustomEvent(nextraCustomEventName.deployEndEvent, {
183+
const event = new CustomEvent(markdownCustomEventName.deployEndEvent, {
168184
detail: { publishedUrl: deploy.published_url },
169185
})
170186
window.dispatchEvent(event)
171187
}
172188

173-
window.addEventListener(nextraCustomEventName.deployStartEvent, deployStart)
189+
window.addEventListener(markdownCustomEventName.deployStartEvent, deployStart)
174190
return () => {
175-
window.removeEventListener(nextraCustomEventName.deployStartEvent, deployStart)
191+
window.removeEventListener(markdownCustomEventName.deployStartEvent, deployStart)
176192
}
177193
}, [bookUrlSlug])
178194

@@ -188,9 +204,9 @@ function MarkdownEditorLayout({ children, mdxText }: Props) {
188204
})
189205
getPagesRefetch()
190206
}
191-
window.addEventListener(nextraCustomEventName.deleteItemEvent, deleteItemStart)
207+
window.addEventListener(markdownCustomEventName.deleteItemEvent, deleteItemStart)
192208
return () => {
193-
window.removeEventListener(nextraCustomEventName.deleteItemEvent, deleteItemStart)
209+
window.removeEventListener(markdownCustomEventName.deleteItemEvent, deleteItemStart)
194210
}
195211
}, [bookUrlSlug])
196212

packages/markdown-editor/src/components/markdown-editor/hooks/useCodemirror.ts

Lines changed: 0 additions & 168 deletions
This file was deleted.

packages/markdown-editor/src/components/markdown-editor/markdown-editor.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import cn from 'clsx'
22
import { forwardRef, useEffect, useRef } from 'react'
3-
import { useCodemirror } from './hooks/useCodemirror'
3+
44
import { Toolbar } from './toolbar'
55
import { ReactCodeMirrorRef } from '@/types'
66
import { Extension } from '@codemirror/state'
7+
import { useCodemirror } from '@/hooks'
78

89
interface MarkdownEditorProps {
910
codeMirrorExtensions?: Extension[]

packages/markdown-editor/src/components/markdown-editor/toolbar/toolbar.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import cn from 'clsx'
22
import { isValidElement, useEffect, useState } from 'react'
33
import { titles, bold, italic, strike, quote, link, image, code, save } from './commands'
4-
import { ToolbarCommand } from './commands/type'
5-
import { EditorSelection, EditorState } from '@codemirror/state'
6-
import { EditorView } from '@codemirror/view'
4+
import type { ToolbarCommand } from './commands/type'
5+
import { EditorSelection, type EditorState } from '@codemirror/state'
6+
import type { EditorView } from '@codemirror/view'
77
import { ToolbarSeparator } from './toolbar-separator'
8-
import useClickImage from '@/hooks/use-click-img'
9-
import { useUpload } from '@/hooks/use-upload'
8+
import { useClickImage, useUpload } from '@/hooks'
109

1110
type Props = {
1211
state: EditorState | null

packages/markdown-editor/src/components/markdown-preview/markdown-preview.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export const MarkdownPreview = forwardRef<HTMLDivElement, MarkdownPreviewProps>(
2424
'markdown-editor-scrollbar nx-h-screen nx-overflow-y-auto nx-break-words nx-pb-16',
2525
)}
2626
>
27-
<main className="nx-mt-6 nx-w-full nx-min-w-0 nx-max-w-6xl nx-px-6 nx-pb-12 nx-pt-6">
27+
<main className="nx-mt-6 nx-w-full nx-min-w-0 nx-max-w-6xl nx-px-6 nx-pb-[8rem] nx-pt-6">
2828
<MDXRemote
2929
compiledSource={mdxSource.compiledSource}
3030
frontmatter={mdxSource.frontmatter}

packages/markdown-editor/src/components/sidebar/sidebar-header/collapse-all-icon.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useEffect, useRef } from 'react'
22
import { useSidebar } from '@/contexts/sidebar'
33
import { CollapseAllIcon as Icon } from '@/nextra/icons/collapse-all'
44
import { useRouter } from 'next/router'
5-
import { useUrlSlug } from '@/hooks/use-url-slug'
5+
import { useUrlSlug } from '@/hooks'
66

77
type Props = {
88
className: string

packages/markdown-editor/src/components/sidebar/sidebar-header/control-input.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ import React, { ReactElement, useCallback, useEffect, useState } from 'react'
22
import cn from 'clsx'
33

44
import { PageType, useSidebar } from '@/contexts/sidebar'
5-
import useOutsideClick from '@/hooks/use-outside-click'
5+
66
import { EmptyFolderIcon } from '@/nextra/icons/empty-folder'
77
import { EmptyFileIcon } from '@/nextra/icons/empty-file'
88
import { SeparatorIcon } from '@/nextra/icons/separator'
99
import { type CustomEventDetail, markdownCustomEventName } from '@/index'
1010
import { useDebouncedCallback } from 'use-debounce'
11+
import { useOutsideClick } from '@/hooks'
1112

1213
type Props = {
1314
type: PageType

packages/markdown-editor/src/components/sidebar/sidebar-header/sidebar-header.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import cn from 'clsx'
22
import { ControlIcons } from './control-icons'
33
import { CollapseAllIcon } from './collapse-all-icon'
44
import { PageType, useSidebar } from '@/contexts/sidebar'
5-
import { useUrlSlug } from '@/hooks/use-url-slug'
5+
import { useUrlSlug } from '@/hooks'
66
import { useRef } from 'react'
77
import { SortableItem } from '@/nextra/normalize-pages'
88
import { findFolder } from '../utils'

packages/markdown-editor/src/components/sidebar/sortable-tree/sortable-item.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ import { ArrowRightIcon } from '@/nextra/icons'
77
import { useDndTree } from '.'
88
import { classes, indentStyle } from '../style'
99
import type { SortableItemProps } from './types'
10-
import useOutsideClick from '@/hooks/use-outside-click'
10+
1111
import { createPortal } from 'react-dom'
1212
import { ControlOption, ControlInput } from '../sidebar-header'
1313
import { useModal } from '@/contexts/modal'
1414
import { CustomEventDetail } from '@/types'
1515
import { markdownCustomEventName } from '@/index'
16+
import { useOutsideClick } from '@/hooks'
1617

1718
export const SortableItem = forwardRef<HTMLDivElement, SortableItemProps>((props, ref) => {
1819
const { isDragging, overItem, setOverItem } = useDndTree()

packages/markdown-editor/src/components/sidebar/sortable-tree/sortable-tree.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { SortableItemWrapper } from './sortable-item-wrapper'
3636
import { useSidebar } from '@/contexts/sidebar'
3737
import { SensorContext } from './types'
3838
import { CustomEventDetail, markdownCustomEventName } from '@/index'
39-
import { useUrlSlug } from '@/hooks/use-url-slug'
39+
import { useUrlSlug } from '@/hooks'
4040
import { SidebarHeader } from '../sidebar-header'
4141

4242
type Props = {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export { useClickImage } from './use-click-img'
2+
export { useCodemirror } from './use-codemirror'
3+
export { useOutsideClick } from './use-outside-click'
4+
export { useUpload } from './use-upload'
5+
export { useUrlSlug } from './use-url-slug'

packages/markdown-editor/src/hooks/use-click-img.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useCallback, useState } from 'react'
22

3-
export default function useClickImage() {
3+
export function useClickImage() {
44
const [file, setFile] = useState<File | null>(null)
55

66
const onClick = useCallback(() => {

0 commit comments

Comments
 (0)