refactor(client): use setup syntax
This commit is contained in:
		| @@ -1,68 +1,41 @@ | ||||
| char2filePath<template> | ||||
| <template> | ||||
| <img v-if="customEmoji" class="mk-emoji custom" :class="{ normal, noStyle }" :src="url" :alt="alt" :title="alt" decoding="async"/> | ||||
| <img v-else-if="char && !useOsNativeEmojis" class="mk-emoji" :src="url" :alt="alt" :title="alt" decoding="async"/> | ||||
| <span v-else-if="char && useOsNativeEmojis">{{ char }}</span> | ||||
| <span v-else>{{ emoji }}</span> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| import { computed, defineComponent, ref, watch } from 'vue'; | ||||
| <script lang="ts" setup> | ||||
| import { computed, ref, watch } from 'vue'; | ||||
| import { CustomEmoji } from 'misskey-js/built/entities'; | ||||
| import { getStaticImageUrl } from '@/scripts/get-static-image-url'; | ||||
| import { char2filePath } from '@/scripts/twemoji-base'; | ||||
| import { defaultStore } from '@/store'; | ||||
| import { instance } from '@/instance'; | ||||
|  | ||||
| export default defineComponent({ | ||||
| 	props: { | ||||
| 		emoji: { | ||||
| 			type: String, | ||||
| 			required: true | ||||
| 		}, | ||||
| 		normal: { | ||||
| 			type: Boolean, | ||||
| 			required: false, | ||||
| 			default: false | ||||
| 		}, | ||||
| 		noStyle: { | ||||
| 			type: Boolean, | ||||
| 			required: false, | ||||
| 			default: false | ||||
| 		}, | ||||
| 		customEmojis: { | ||||
| 			required: false | ||||
| 		}, | ||||
| 		isReaction: { | ||||
| 			type: Boolean, | ||||
| 			default: false | ||||
| 		}, | ||||
| 	}, | ||||
| const props = defineProps<{ | ||||
| 	emoji: string; | ||||
| 	normal?: boolean; | ||||
| 	noStyle?: boolean; | ||||
| 	customEmojis?: CustomEmoji[]; | ||||
| 	isReaction?: boolean; | ||||
| }>(); | ||||
|  | ||||
| 	setup(props) { | ||||
| 		const isCustom = computed(() => props.emoji.startsWith(':')); | ||||
| 		const char = computed(() => isCustom.value ? null : props.emoji); | ||||
| 		const useOsNativeEmojis = computed(() => defaultStore.state.useOsNativeEmojis && !props.isReaction); | ||||
| 		const ce = computed(() => props.customEmojis || instance.emojis || []); | ||||
| 		const customEmoji = computed(() => isCustom.value ? ce.value.find(x => x.name === props.emoji.substr(1, props.emoji.length - 2)) : null); | ||||
| 		const url = computed(() => { | ||||
| 			if (char.value) { | ||||
| 				return char2filePath(char.value); | ||||
| 			} else { | ||||
| 				return defaultStore.state.disableShowingAnimatedImages | ||||
| 					? getStaticImageUrl(customEmoji.value.url) | ||||
| 					: customEmoji.value.url; | ||||
| 			} | ||||
| 		}); | ||||
| 		const alt = computed(() => customEmoji.value ? `:${customEmoji.value.name}:` : char.value); | ||||
|  | ||||
| 		return { | ||||
| 			url, | ||||
| 			char, | ||||
| 			alt, | ||||
| 			customEmoji, | ||||
| 			useOsNativeEmojis, | ||||
| 		}; | ||||
| 	}, | ||||
| const isCustom = computed(() => props.emoji.startsWith(':')); | ||||
| const char = computed(() => isCustom.value ? null : props.emoji); | ||||
| const useOsNativeEmojis = computed(() => defaultStore.state.useOsNativeEmojis && !props.isReaction); | ||||
| const ce = computed(() => props.customEmojis ?? instance.emojis ?? []); | ||||
| const customEmoji = computed(() => isCustom.value ? ce.value.find(x => x.name === props.emoji.substr(1, props.emoji.length - 2)) : null); | ||||
| const url = computed(() => { | ||||
| 	if (char.value) { | ||||
| 		return char2filePath(char.value); | ||||
| 	} else { | ||||
| 		return defaultStore.state.disableShowingAnimatedImages | ||||
| 			? getStaticImageUrl(customEmoji.value.url) | ||||
| 			: customEmoji.value.url; | ||||
| 	} | ||||
| }); | ||||
| const alt = computed(() => customEmoji.value ? `:${customEmoji.value.name}:` : char.value); | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo