Skip to content

Commit 0355032

Browse files
committed
refactor: process mention users after transform is complete
1 parent b0875cb commit 0355032

File tree

6 files changed

+208
-73
lines changed

6 files changed

+208
-73
lines changed

apps/chrome-extension/src/common/utils.ts

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { toHast } from 'mdast-util-to-hast'
22
import { toHtml } from 'hast-util-to-html'
3-
import type { InvalidTable } from '@dolphin/lark'
3+
import { Docx, type InvalidTable, type mdast } from '@dolphin/lark'
4+
import { Second, waitForFunction } from '@dolphin/common'
45

56
interface Ref<T> {
67
current: T
@@ -109,3 +110,35 @@ export const transformInvalidTablesToHtml = (
109110
}
110111
})
111112
}
113+
114+
export const transformMentionUsers = async (
115+
mentionUsers: mdast.InlineCode[],
116+
): Promise<void> => {
117+
for (const user of mentionUsers) {
118+
if (user.data?.parentBlockRecordId && user.data.mentionUserId) {
119+
await waitForFunction(
120+
() =>
121+
Docx.locateBlockWithRecordId(
122+
user.data?.parentBlockRecordId ?? '',
123+
).then(
124+
isSuccess =>
125+
isSuccess &&
126+
document.querySelector(
127+
`a[data-token="${user.data?.mentionUserId ?? ''}"]`,
128+
) !== null,
129+
),
130+
{
131+
timeout: 3 * Second,
132+
},
133+
)
134+
135+
const el: HTMLElement | null = document.querySelector(
136+
`a[data-token="${user.data.mentionUserId}"]`,
137+
)
138+
139+
if (el?.innerText) {
140+
user.value = '@' + el.innerText
141+
}
142+
}
143+
}
144+
}

apps/chrome-extension/src/scripts/copy-lark-docx-as-markdown.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import { isDefined } from '@dolphin/common'
55
import { CommonTranslationKey, en, Namespace, zh } from '../common/i18n'
66
import { confirm } from '../common/notification'
77
import { reportBug } from '../common/issue'
8-
import { transformInvalidTablesToHtml } from '../common/utils'
8+
import {
9+
transformInvalidTablesToHtml,
10+
transformMentionUsers,
11+
} from '../common/utils'
912
import {
1013
getSettings,
1114
SettingKey,
@@ -69,10 +72,12 @@ const main = async () => {
6972
SettingKey.TextHighlight,
7073
])
7174

72-
const { root, images, invalidTables } = docx.intoMarkdownAST({
75+
const { root, images, invalidTables, mentionUsers } = docx.intoMarkdownAST({
7376
highlight: settings[SettingKey.TextHighlight],
7477
})
7578

79+
await transformMentionUsers(mentionUsers)
80+
7681
const tokens = images
7782
.map(image => {
7883
if (!image.data?.token) return null

apps/chrome-extension/src/scripts/download-lark-docx-as-markdown.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { legacyFileSave } from '../common/legacy'
1111
import { reportBug } from '../common/issue'
1212
import {
1313
transformInvalidTablesToHtml,
14+
transformMentionUsers,
1415
UniqueFileName,
1516
withSignal,
1617
} from '../common/utils'
@@ -501,12 +502,15 @@ const main = async (options: { signal?: AbortSignal } = {}) => {
501502
SettingKey.TextHighlight,
502503
])
503504

504-
const { root, images, files, invalidTables } = docx.intoMarkdownAST({
505-
whiteboard: true,
506-
diagram: true,
507-
file: true,
508-
highlight: settings[SettingKey.TextHighlight],
509-
})
505+
const { root, images, files, invalidTables, mentionUsers } =
506+
docx.intoMarkdownAST({
507+
whiteboard: true,
508+
diagram: true,
509+
file: true,
510+
highlight: settings[SettingKey.TextHighlight],
511+
})
512+
513+
await transformMentionUsers(mentionUsers)
510514

511515
const recommendName = docx.pageTitle
512516
? normalizeFileName(docx.pageTitle.slice(0, OneHundred))

apps/chrome-extension/src/scripts/view-lark-docx-as-markdown.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import { isDefined } from '@dolphin/common'
55
import { CommonTranslationKey, en, Namespace, zh } from '../common/i18n'
66
import { confirm } from '../common/notification'
77
import { reportBug } from '../common/issue'
8-
import { transformInvalidTablesToHtml } from '../common/utils'
8+
import {
9+
transformInvalidTablesToHtml,
10+
transformMentionUsers,
11+
} from '../common/utils'
912
import {
1013
getSettings,
1114
SettingKey,
@@ -72,10 +75,12 @@ const main = async () => {
7275
SettingKey.TextHighlight,
7376
])
7477

75-
const { root, images, invalidTables } = docx.intoMarkdownAST({
78+
const { root, images, invalidTables, mentionUsers } = docx.intoMarkdownAST({
7679
highlight: settings[SettingKey.TextHighlight],
7780
})
7881

82+
await transformMentionUsers(mentionUsers)
83+
7984
const tokens = images
8085
.map(image => {
8186
if (!image.data?.token) return null

0 commit comments

Comments
 (0)