みてるぞ 21 hours ago
parent
commit
fbe97ac634
4 changed files with 12 additions and 10 deletions
  1. +3
    -5
      frontend/src/components/WikiBody.tsx
  2. +2
    -2
      frontend/src/lib/remark-wiki-autolink.ts
  3. +2
    -0
      frontend/src/pages/wiki/WikiDetailPage.tsx
  4. +5
    -3
      frontend/src/pages/wiki/WikiEditPage.tsx

+ 3
- 5
frontend/src/components/WikiBody.tsx View File

@@ -36,12 +36,10 @@ const mdComponents = { h1: ({ children }) => <SectionTitle>{children}</SectionT
export default (({ title, body }: Props) => { export default (({ title, body }: Props) => {
const [pageNames, setPageNames] = useState<string[]> ([]) const [pageNames, setPageNames] = useState<string[]> ([])


const remarkPlugins = useMemo (() => [remarkWikiAutoLink (pageNames)], [pageNames])
const remarkPlugins = useMemo (
() => [() => remarkWikiAutoLink (pageNames), remarkGFM], [pageNames])


useEffect (() => { useEffect (() => {
if (!(body))
return

void (async () => { void (async () => {
try try
{ {
@@ -54,7 +52,7 @@ export default (({ title, body }: Props) => {
setPageNames ([]) setPageNames ([])
} }
}) () }) ()
}, [body])
}, [])


return ( return (
<ReactMarkdown components={mdComponents} remarkPlugins={remarkPlugins}> <ReactMarkdown components={mdComponents} remarkPlugins={remarkPlugins}>


+ 2
- 2
frontend/src/lib/remark-wiki-autolink.ts View File

@@ -4,7 +4,7 @@ const escapeForRegExp = (s: string) => s.replace (/[.*+?^${}()|[\]\\]/g, '\\$&')




export default (pageNames: string[], basePath = '/wiki'): ((tree: Root) => void) => { export default (pageNames: string[], basePath = '/wiki'): ((tree: Root) => void) => {
const names = pageNames.sort ((a, b) => b.length - a.length)
const names = [...pageNames].sort ((a, b) => b.length - a.length)


if (names.length === 0) if (names.length === 0)
{ {
@@ -46,7 +46,7 @@ export default (pageNames: string[], basePath = '/wiki'): ((tree: Root) => void)
if (start > last) if (start > last)
parts.push ({ type: 'text', value: value.slice (last, start) }) parts.push ({ type: 'text', value: value.slice (last, start) })


const name = m[0]
const name = m[1]
parts.push ({ type: 'link', parts.push ({ type: 'link',
url: `${ basePath }/${ encodeURIComponent (name) }`, url: `${ basePath }/${ encodeURIComponent (name) }`,
title: null, title: null,


+ 2
- 0
frontend/src/pages/wiki/WikiDetailPage.tsx View File

@@ -36,6 +36,7 @@ export default () => {
if (/^\d+$/.test (title)) if (/^\d+$/.test (title))
{ {
void (async () => { void (async () => {
setWikiPage (undefined)
try try
{ {
const res = await axios.get (`${ API_BASE_URL }/wiki/${ title }`) const res = await axios.get (`${ API_BASE_URL }/wiki/${ title }`)
@@ -52,6 +53,7 @@ export default () => {
} }


void (async () => { void (async () => {
setWikiPage (undefined)
try try
{ {
const res = await axios.get ( const res = await axios.get (


+ 5
- 3
frontend/src/pages/wiki/WikiEditPage.tsx View File

@@ -12,6 +12,8 @@ import Forbidden from '@/pages/Forbidden'


import 'react-markdown-editor-lite/lib/index.css' import 'react-markdown-editor-lite/lib/index.css'


import type { FC } from 'react'

import type { User, WikiPage } from '@/types' import type { User, WikiPage } from '@/types'


const mdParser = new MarkdownIt const mdParser = new MarkdownIt
@@ -19,7 +21,7 @@ const mdParser = new MarkdownIt
type Props = { user: User | null } type Props = { user: User | null }




export default ({ user }: Props) => {
export default (({ user }: Props) => {
if (!(['admin', 'member'].some (r => user?.role === r))) if (!(['admin', 'member'].some (r => user?.role === r)))
return <Forbidden/> return <Forbidden/>


@@ -93,9 +95,9 @@ export default ({ user }: Props) => {
{/* 送信 */} {/* 送信 */}
<button onClick={handleSubmit} <button onClick={handleSubmit}
className="px-4 py-2 bg-blue-600 text-white rounded disabled:bg-gray-400"> className="px-4 py-2 bg-blue-600 text-white rounded disabled:bg-gray-400">
追加
編輯
</button> </button>
</>)} </>)}
</div> </div>
</MainArea>) </MainArea>)
}
}) satisfies FC<Props>

Loading…
Cancel
Save