diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-02-27 10:27:00 -0500 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-03-02 13:38:05 -0500 |
| commit | 9e833f724b61bfbe0f09bb09027650020016f30d (patch) | |
| tree | d273510acfdd110c942ff591136324e85118810c /packages/frontend/src/components/DynamicNote.vue | |
| parent | emit "show" event from MkLazy (diff) | |
| download | sharkey-9e833f724b61bfbe0f09bb09027650020016f30d.tar.gz sharkey-9e833f724b61bfbe0f09bb09027650020016f30d.tar.bz2 sharkey-9e833f724b61bfbe0f09bb09027650020016f30d.zip | |
add DynamicNote to encapsulate MkNote / SkNote switching logic
Diffstat (limited to 'packages/frontend/src/components/DynamicNote.vue')
| -rw-r--r-- | packages/frontend/src/components/DynamicNote.vue | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/packages/frontend/src/components/DynamicNote.vue b/packages/frontend/src/components/DynamicNote.vue new file mode 100644 index 0000000000..6703099591 --- /dev/null +++ b/packages/frontend/src/components/DynamicNote.vue @@ -0,0 +1,49 @@ +<!-- +SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors +SPDX-License-Identifier: AGPL-3.0-only +--> + +<template> +<XNote + ref="rootEl" + :note="note" + :pinned="pinned" + :mock="mock" + :withHardMute="withHardMute" + @reaction="emoji => emit('reaction', emoji)" + @removeReaction="emoji => emit('removeReaction', emoji)" +/> +</template> + +<script setup lang="ts"> +import * as Misskey from 'misskey-js'; +import { computed, defineAsyncComponent, shallowRef } from 'vue'; +import type { ComponentExposed } from 'vue-component-type-helpers'; +import type MkNote from '@/components/MkNote.vue'; +import type SkNote from '@/components/SkNote.vue'; +import { defaultStore } from '@/store'; + +const XNote = computed(() => + defineAsyncComponent(() => + defaultStore.reactiveState.noteDesign.value === 'misskey' + ? import('@/components/MkNote.vue') + : import('@/components/SkNote.vue'), + ), +); + +const rootEl = shallowRef<ComponentExposed<typeof MkNote | typeof SkNote>>(); + +defineExpose({ rootEl }); + +defineProps<{ + note: Misskey.entities.Note; + pinned?: boolean; + mock?: boolean; + withHardMute?: boolean; +}>(); + +const emit = defineEmits<{ + (ev: 'reaction', emoji: string): void; + (ev: 'removeReaction', emoji: string): void; +}>(); +</script> |