2023-03-11 16:52:48 +01:00
|
|
|
<script lang="ts">
|
2023-03-13 02:04:09 +01:00
|
|
|
import { memberAvatars, WordStatus, type PartialMember, type User } from "$lib/api/entities";
|
2023-03-11 16:52:48 +01:00
|
|
|
import FallbackImage from "./FallbackImage.svelte";
|
|
|
|
|
|
|
|
export let user: User;
|
|
|
|
export let member: PartialMember;
|
2023-03-12 04:25:53 +01:00
|
|
|
|
|
|
|
let pronouns: string | undefined;
|
|
|
|
|
|
|
|
const getPronouns = (member: PartialMember) => {
|
|
|
|
const filteredPronouns = member.pronouns.filter(
|
|
|
|
(pronouns) => pronouns.status === WordStatus.Favourite,
|
|
|
|
);
|
|
|
|
if (filteredPronouns.length === 0) {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
return filteredPronouns
|
|
|
|
.map((pronouns) => {
|
|
|
|
if (pronouns.display_text) {
|
|
|
|
return pronouns.display_text;
|
|
|
|
} else {
|
|
|
|
const split = pronouns.pronouns.split("/");
|
2023-04-17 16:22:45 +02:00
|
|
|
if (split.length === 5) return split.splice(0, 2).join("/");
|
|
|
|
return pronouns.pronouns;
|
2023-03-12 04:25:53 +01:00
|
|
|
}
|
|
|
|
})
|
|
|
|
.join(", ");
|
|
|
|
};
|
|
|
|
|
|
|
|
$: pronouns = getPronouns(member);
|
2023-03-11 16:52:48 +01:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<div>
|
2023-03-23 10:17:36 +01:00
|
|
|
<a href="/@{user.name}/{member.name}">
|
|
|
|
<FallbackImage urls={memberAvatars(member)} width={200} alt="Avatar for {member.name}" />
|
|
|
|
</a>
|
2023-03-12 04:25:53 +01:00
|
|
|
<p class="m-2">
|
2023-04-07 17:06:28 +02:00
|
|
|
<a class="text-reset fs-5 text-break" href="/@{user.name}/{member.name}">
|
2023-03-12 04:25:53 +01:00
|
|
|
{member.display_name ?? member.name}
|
|
|
|
</a>
|
|
|
|
{#if pronouns}
|
|
|
|
<br />
|
|
|
|
{pronouns}
|
|
|
|
{/if}
|
|
|
|
</p>
|
2023-03-11 16:52:48 +01:00
|
|
|
</div>
|