From 6944a74653a62936b307f66c26b0c2b188ad4050 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sat, 7 Jan 2023 10:31:48 +0100 Subject: [PATCH] refactor: html parsing --- components/content/ContentRich.setup.ts | 20 +- components/status/StatusBody.vue | 28 ++- composables/content-parse.ts | 191 ++++++++++-------- composables/content-render.ts | 9 +- composables/emojis.ts | 13 ++ config/emojis.ts | 1 + tests/__snapshots__/content-rich.test.ts.snap | 12 -- tests/html-parse.test.ts | 2 +- 8 files changed, 152 insertions(+), 124 deletions(-) diff --git a/components/content/ContentRich.setup.ts b/components/content/ContentRich.setup.ts index 8a8c2589..7447bb0a 100644 --- a/components/content/ContentRich.setup.ts +++ b/components/content/ContentRich.setup.ts @@ -4,27 +4,23 @@ defineOptions({ name: 'ContentRich', }) -const { content, emojis, markdown = true } = defineProps<{ +const { + content, + emojis, + markdown = true, +} = defineProps<{ content: string - markdown?: boolean emojis?: Emoji[] + markdown?: boolean }>() -const useEmojis = computed(() => { - const result: Emoji[] = [] - if (emojis) - result.push(...emojis) - - result.push(...currentCustomEmojis.value.emojis) - - return emojisArrayToObject(result) -}) +const emojisObject = useEmojisFallback(() => emojis) export default () => h( 'span', { class: 'content-rich', dir: 'auto' }, contentToVNode(content, { - emojis: useEmojis.value, + emojis: emojisObject.value, markdown, }), ) diff --git a/components/status/StatusBody.vue b/components/status/StatusBody.vue index 75139659..446dc75d 100644 --- a/components/status/StatusBody.vue +++ b/components/status/StatusBody.vue @@ -1,23 +1,37 @@