refactor: move getDisplayAvatar into profile composable
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
ci/woodpecker/pr/build-and-publish Pipeline was successful

This commit is contained in:
Twig 2025-08-11 22:25:16 +02:00
parent 8dbab14c2e
commit 10bf54b6fd
Signed by: twig
SSH key fingerprint: SHA256:nBO+OwpTkd8LYhe38PIqdxmDvkIg9Vw2EbrRZM97dkU
3 changed files with 33 additions and 26 deletions

View file

@ -6,7 +6,7 @@
<DefaultIcon v-else <DefaultIcon v-else
class="display-avatar" class="display-avatar"
:name="displayName" :name="displayName"
:seed="user.uuid" :seed="getUserUuid(props.profile)"
:alt="displayName" /> :alt="displayName" />
</template> </template>
@ -14,25 +14,14 @@
import { NuxtImg } from '#components'; import { NuxtImg } from '#components';
import type { GuildMemberResponse, UserResponse } from '~/types/interfaces'; import type { GuildMemberResponse, UserResponse } from '~/types/interfaces';
const { getDisplayName } = useProfile() const { getDisplayName, getAvatarUrl, getUserUuid } = useProfile()
const props = defineProps<{ const props = defineProps<{
profile: UserResponse | GuildMemberResponse, profile: UserResponse | GuildMemberResponse,
}>(); }>();
const displayName = getDisplayName(props.profile) const displayName = getDisplayName(props.profile)
let user: UserResponse const displayAvatar = getAvatarUrl(props.profile)
let displayAvatar: string | null
if ("username" in props.profile) {
// assume it's a UserResponse
displayAvatar = props.profile.avatar
user = props.profile
} else {
// assume it's a GuildMemberResponse
displayAvatar = props.profile.user.avatar
user = props.profile.user
}
</script> </script>

View file

@ -62,7 +62,7 @@ import type { GuildMemberResponse, ModalProps, UserResponse } from '~/types/inte
import VerticalSpacer from '../UserInterface/VerticalSpacer.vue'; import VerticalSpacer from '../UserInterface/VerticalSpacer.vue';
import Button from '../UserInterface/Button.vue'; import Button from '../UserInterface/Button.vue';
const { getDisplayName, getUsername, getPronouns, getAboutMe, getRegistrationDate, getGuildJoinDate, getFriendsSince, getUuid } = useProfile() const { getDisplayName, getUsername, getPronouns, getAboutMe, getRegistrationDate, getGuildJoinDate, getFriendsSince, getUserUuid } = useProfile()
const { addFriend, fetchMe } = useApi(); const { addFriend, fetchMe } = useApi();
const props = defineProps<ModalProps & { const props = defineProps<ModalProps & {
@ -81,7 +81,7 @@ const registrationDate = getRegistrationDate(props.profile)
const joinDate = getGuildJoinDate(props.profile) const joinDate = getGuildJoinDate(props.profile)
const friendsSince = await getFriendsSince(props.profile) const friendsSince = await getFriendsSince(props.profile)
const uuid = getUuid(props.profile) const uuid = getUserUuid(props.profile)
function toDateString(date: Date): string { function toDateString(date: Date): string {

View file

@ -3,7 +3,7 @@ import type { GuildMemberResponse, UserResponse } from "~/types/interfaces"
const { fetchFriends } = useApi(); const { fetchFriends } = useApi();
export const useProfile = () => { export const useProfile = () => {
function getAboutMe (profile: UserResponse | GuildMemberResponse): string | null { function getAboutMe(profile: UserResponse | GuildMemberResponse): string | null {
if ("username" in profile) { if ("username" in profile) {
return profile.about return profile.about
} else { } else {
@ -11,7 +11,7 @@ export const useProfile = () => {
} }
} }
function getDisplayName (profile: UserResponse | GuildMemberResponse): string { function getDisplayName(profile: UserResponse | GuildMemberResponse): string {
if ("username" in profile) { if ("username" in profile) {
// assume it's a UserResponse // assume it's a UserResponse
if (profile.display_name) return profile.display_name if (profile.display_name) return profile.display_name
@ -24,7 +24,15 @@ export const useProfile = () => {
} }
} }
async function getFriendsSince (profile: UserResponse | GuildMemberResponse): Promise<Date | null> { function getAvatarUrl(profile: UserResponse | GuildMemberResponse): string | null {
if ("username" in profile) {
return profile.avatar
} else {
return profile.user.avatar
}
}
async function getFriendsSince(profile: UserResponse | GuildMemberResponse): Promise<Date | null> {
let user_uuid: string; let user_uuid: string;
if ("username" in profile) { if ("username" in profile) {
@ -42,15 +50,15 @@ export const useProfile = () => {
return null return null
} }
function getGuildJoinDate (profile: UserResponse | GuildMemberResponse): Date | null { function getGuildJoinDate(profile: UserResponse | GuildMemberResponse): Date | undefined {
if ("username" in profile) { if ("username" in profile) {
return null return undefined
} else { } else {
return uuidToDate(profile.uuid) return uuidToDate(profile.uuid)
} }
} }
function getPronouns (profile: UserResponse | GuildMemberResponse): string | null { function getPronouns(profile: UserResponse | GuildMemberResponse): string | null {
if ("username" in profile) { if ("username" in profile) {
return profile.pronouns return profile.pronouns
} else { } else {
@ -58,7 +66,7 @@ export const useProfile = () => {
} }
} }
function getRegistrationDate (profile: UserResponse | GuildMemberResponse): Date | null { function getRegistrationDate(profile: UserResponse | GuildMemberResponse): Date {
if ("username" in profile) { if ("username" in profile) {
return uuidToDate(profile.uuid) return uuidToDate(profile.uuid)
} else { } else {
@ -66,7 +74,7 @@ export const useProfile = () => {
} }
} }
function getUsername (profile: UserResponse | GuildMemberResponse): string { function getUsername(profile: UserResponse | GuildMemberResponse): string {
if ("username" in profile) { if ("username" in profile) {
return profile.username return profile.username
} else { } else {
@ -74,22 +82,32 @@ export const useProfile = () => {
} }
} }
function getUuid (profile: UserResponse | GuildMemberResponse): string | null { function getUserUuid(profile: UserResponse | GuildMemberResponse): string {
if ("username" in profile) { if ("username" in profile) {
return profile.uuid return profile.uuid
} else { } else {
return profile.user.uuid return profile.user.uuid
} }
} }
function getUser(profile: UserResponse | GuildMemberResponse): UserResponse {
if ("username" in profile) {
return profile
} else {
return profile.user
}
}
return { return {
getAboutMe, getAboutMe,
getDisplayName, getDisplayName,
getAvatarUrl,
getFriendsSince, getFriendsSince,
getGuildJoinDate, getGuildJoinDate,
getRegistrationDate, getRegistrationDate,
getPronouns, getPronouns,
getUsername, getUsername,
getUuid getUserUuid,
getUser
} }
} }