@@ -3,8 +3,8 @@ import * as api from "@/scripts/api";
33import { useAccountStore , useThemeStore } from " @/scripts/store" ;
44import { timeAgo } from " @/scripts/time" ;
55import { ProblemDetail , type Profile } from " @/scripts/types" ;
6- import { expandUrl } from " @/scripts/utils" ;
7- import { useToast } from " primevue" ;
6+ import { expandAssetUrl } from " @/scripts/utils" ;
7+ import { Avatar , useToast } from " primevue" ;
88import { onMounted , ref , watch } from " vue" ;
99import { useRoute , useRouter } from " vue-router" ;
1010
@@ -96,8 +96,12 @@ onMounted(async () => {
9696 <div class =" w-full max-w-[1200px] flex flex-col md:flex-row my-[2em] gap-6 mx-8" >
9797 <div v-if =" !loading && profile" class =" flex flex-col h-full" >
9898 <div class =" flex gap-4 sm:flex-col sm:gap-1" >
99- <img class =" w-[8em] h-[8em] sm:w-[18em] sm:h-[18em] rounded-full border-[2px] border-zinc-300 dark:border-zinc-700"
100- :src =" expandUrl(profile!.avatar)" ></img >
99+ <img v-if =" profile?.avatar"
100+ class =" w-[8em] h-[8em] sm:w-[18em] sm:h-[18em] rounded-full border-[2px] border-zinc-300 dark:border-zinc-700"
101+ :src =" expandAssetUrl(profile.avatar)" ></img >
102+ <Avatar pt:label:class =" text-4xl sm:text-9xl" :label =" (profile?.nickname ?? '?')[0]" v-else
103+ class =" !w-[8em] !h-[8em] sm:!w-[18em] sm:!h-[18em] !rounded-full border-[2px] border-zinc-300 dark:border-zinc-700" >
104+ </Avatar >
101105 <div class =" flex flex-col items-start justify-center" >
102106 <h3 class =" text-2xl font-bold" >{{ profile.nickname }}</h3 >
103107 <span class =" text-lg text-gray-500" >{{ profile.username }} · {{ profile.sex ?
@@ -112,15 +116,15 @@ onMounted(async () => {
112116 <i class =" pi pi-envelope text-gray-500" ></i >
113117 <span >{{ profile.email }}</span >
114118 </div >
115- <div class =" inline-flex items-center gap-2" >
119+ <div v-if = " profile.school " class =" inline-flex items-center gap-2" >
116120 <i class =" pi pi-building text-gray-500" ></i >
117121 <span >{{ profile.school }}</span >
118122 </div >
119- <div class =" inline-flex items-center gap-2" >
123+ <div v-if = " profile.college " class =" inline-flex items-center gap-2" >
120124 <i class =" pi pi-building-columns text-gray-500" ></i >
121125 <span >{{ profile.college }}</span >
122126 </div >
123- <div class =" inline-flex items-center gap-2" >
127+ <div v-if = " profile.major " class =" inline-flex items-center gap-2" >
124128 <i class =" pi pi-graduation-cap text-gray-500" ></i >
125129 <span >{{ profile.major }}</span >
126130 </div >
0 commit comments