refactor: change Avatar component to take a single variable instead of user or profile

This commit is contained in:
Twig 2025-07-17 16:18:18 +02:00
parent d2ff4ac87c
commit e339b1df10
No known key found for this signature in database
4 changed files with 21 additions and 17 deletions

View file

@ -13,25 +13,29 @@ import { NuxtImg } from '#components';
import type { GuildMemberResponse, UserResponse } from '~/types/interfaces';
const props = defineProps<{
user?: UserResponse,
member?: GuildMemberResponse,
profile: UserResponse | GuildMemberResponse,
}>();
let displayName: string
const displayName = getDisplayName(props.profile)
let displayAvatar: string | null
const user = props.user || props.member?.user
if (user) {
displayName = getDisplayName(props.member ?? user)
if ("username" in props.profile) {
// assume it's a UserRespone
displayAvatar = props.profile.avatar
if (!displayAvatar) {
if (!isCanvasBlocked()) {
displayAvatar = generateDefaultIcon(displayName, props.profile.uuid)
}
}
if (user.avatar) {
displayAvatar = user.avatar
} else if (!isCanvasBlocked()){
displayAvatar = generateDefaultIcon(displayName, user.uuid)
} else {
displayAvatar = null
} else {
// assume it's a GuildMemberResponse
displayAvatar = props.profile.user.avatar
if (!displayAvatar) {
if (!isCanvasBlocked()) {
displayAvatar = generateDefaultIcon(displayName, props.profile.user_uuid)
}
}
}

View file

@ -29,7 +29,7 @@
:text="props.replyMessage?.message"
:reply-id="props.replyMessage.uuid" max-width="reply" />
<div class="left-column">
<Avatar :user="props.author" class="message-author-avatar"/>
<Avatar :profile="props.author" class="message-author-avatar"/>
</div>
<div class="message-data">
<div class="message-metadata">

View file

@ -1,6 +1,6 @@
<template>
<NuxtLink class="user-item" :href="`/me/${user.uuid}`" tabindex="0">
<Avatar :user="props.user" class="user-avatar"/>
<Avatar :profile="props.user" class="user-avatar"/>
<span class="user-display-name">{{ getDisplayName(props.user) }}</span>
</NuxtLink>

View file

@ -1,6 +1,6 @@
<template>
<div id="profile-popup">
<Avatar :user="props.user" id="avatar"/>
<Avatar :profile="props.user" id="avatar"/>
<div id="cover-color"></div>
<div id="main-body">