mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	refactor(client): use setup syntax
This commit is contained in:
		
							parent
							
								
									01d07edfe3
								
							
						
					
					
						commit
						4f9b03a997
					
				
					 1 changed files with 25 additions and 52 deletions
				
			
		| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue