| 
									
										
										
										
											2021-12-18 19:04:36 -09:00
										 |  |  | <template> | 
					
						
							| 
									
										
										
										
											2024-10-11 19:36:26 -05:00
										 |  |  |   <v-tooltip | 
					
						
							|  |  |  |     v-if="userId" | 
					
						
							|  |  |  |     :disabled="!user || !tooltip" | 
					
						
							|  |  |  |     right | 
					
						
							|  |  |  |   > | 
					
						
							|  |  |  |     <template #activator="{ on, attrs }"> | 
					
						
							|  |  |  |       <v-list-item-avatar v-if="list" v-bind="attrs" v-on="on"> | 
					
						
							|  |  |  |         <v-img :src="imageURL" :alt="userId" @load="error = false" @error="error = true"> </v-img> | 
					
						
							|  |  |  |       </v-list-item-avatar> | 
					
						
							|  |  |  |       <v-avatar v-else :size="size" v-bind="attrs" v-on="on"> | 
					
						
							|  |  |  |         <v-img :src="imageURL" :alt="userId" @load="error = false" @error="error = true"> </v-img> | 
					
						
							|  |  |  |       </v-avatar> | 
					
						
							|  |  |  |     </template> | 
					
						
							|  |  |  |     <span v-if="user"> | 
					
						
							|  |  |  |       {{ user.fullName }} | 
					
						
							|  |  |  |     </span> | 
					
						
							|  |  |  |   </v-tooltip> | 
					
						
							| 
									
										
										
										
											2021-12-18 19:04:36 -09:00
										 |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							|  |  |  | import { defineComponent, toRefs, reactive, useContext, computed } from "@nuxtjs/composition-api"; | 
					
						
							| 
									
										
										
										
											2024-10-11 19:36:26 -05:00
										 |  |  | import { useUserStore } from "~/composables/store/use-user-store"; | 
					
						
							| 
									
										
										
										
											2022-10-22 11:51:07 -08:00
										 |  |  | import { UserOut } from "~/lib/api/types/user"; | 
					
						
							| 
									
										
										
										
											2021-12-18 19:04:36 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default defineComponent({ | 
					
						
							|  |  |  |   props: { | 
					
						
							|  |  |  |     userId: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							|  |  |  |       required: true, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     list: { | 
					
						
							|  |  |  |       type: Boolean, | 
					
						
							|  |  |  |       default: false, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     size: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							|  |  |  |       default: "42", | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2024-10-11 19:36:26 -05:00
										 |  |  |     tooltip: { | 
					
						
							|  |  |  |       type: Boolean, | 
					
						
							|  |  |  |       default: true, | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-12-18 19:04:36 -09:00
										 |  |  |   }, | 
					
						
							|  |  |  |   setup(props) { | 
					
						
							|  |  |  |     const state = reactive({ | 
					
						
							|  |  |  |       error: false, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const { $auth } = useContext(); | 
					
						
							| 
									
										
										
										
											2024-10-11 19:36:26 -05:00
										 |  |  |     const { store: users } = useUserStore(); | 
					
						
							|  |  |  |     const user = computed(() => { | 
					
						
							|  |  |  |       return users.value.find((user) => user.id === props.userId); | 
					
						
							|  |  |  |     }) | 
					
						
							| 
									
										
										
										
											2021-12-18 19:04:36 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     const imageURL = computed(() => { | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |       // TODO Setup correct user type for $auth.user
 | 
					
						
							| 
									
										
										
										
											2024-10-11 19:36:26 -05:00
										 |  |  |       const authUser = $auth.user as unknown as UserOut | null; | 
					
						
							|  |  |  |       const key = authUser?.cacheKey ?? ""; | 
					
						
							| 
									
										
										
										
											2021-12-18 19:04:36 -09:00
										 |  |  |       return `/api/media/users/${props.userId}/profile.webp?cacheKey=${key}`; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							| 
									
										
										
										
											2024-10-11 19:36:26 -05:00
										 |  |  |       user, | 
					
						
							| 
									
										
										
										
											2021-12-18 19:04:36 -09:00
										 |  |  |       imageURL, | 
					
						
							|  |  |  |       ...toRefs(state), | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  | </script> |