feat: hashes in avatar file names (closes #19)

This commit is contained in:
Sam 2023-03-13 02:04:09 +01:00
parent e36bd247f5
commit 163e7c3fd6
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
17 changed files with 133 additions and 77 deletions

View file

@ -1,9 +1,11 @@
import { PUBLIC_BASE_URL } from "$env/static/public";
export interface User {
id: string;
name: string;
display_name: string | null;
bio: string | null;
avatar_urls: string[];
avatar: string | null;
links: string[];
names: FieldEntry[];
@ -47,7 +49,7 @@ export interface PartialMember {
name: string;
display_name: string | null;
bio: string | null;
avatar_urls: string[];
avatar: string | null;
links: string[];
names: FieldEntry[];
pronouns: Pronoun[];
@ -63,7 +65,7 @@ export interface MemberPartialUser {
id: string;
name: string;
display_name: string | null;
avatar_urls: string[];
avatar: string | null;
}
export interface APIError {
@ -98,3 +100,21 @@ export enum ErrorCode {
RequestTooBig = 4001,
}
export const userAvatars = (user: User | MeUser | MemberPartialUser) => {
if (!user.avatar) return [];
return [
`${PUBLIC_BASE_URL}/media/users/${user.id}/${user.avatar}.webp`,
`${PUBLIC_BASE_URL}/media/users/${user.id}/${user.avatar}.webp`,
];
};
export const memberAvatars = (member: Member | PartialMember) => {
if (!member.avatar) return [];
return [
`${PUBLIC_BASE_URL}/media/members/${member.id}/${member.avatar}.webp`,
`${PUBLIC_BASE_URL}/media/members/${member.id}/${member.avatar}.webp`,
];
};

View file

@ -1,5 +1,5 @@
<script lang="ts">
import { WordStatus, type PartialMember, type User } from "$lib/api/entities";
import { memberAvatars, WordStatus, type PartialMember, type User } from "$lib/api/entities";
import FallbackImage from "./FallbackImage.svelte";
export let user: User;
@ -31,7 +31,7 @@
</script>
<div>
<FallbackImage urls={member.avatar_urls} width={200} alt="Avatar for {member.name}" />
<FallbackImage urls={memberAvatars(member)} width={200} alt="Avatar for {member.name}" />
<p class="m-2">
<a class="text-reset fs-5" href="/@{user.name}/{member.name}">
{member.display_name ?? member.name}