feat: show utc offset on profile

This commit is contained in:
sam 2024-12-14 14:00:48 +01:00
parent 5cdadc6158
commit 26b32b40e2
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
3 changed files with 24 additions and 2 deletions

View file

@ -5,14 +5,16 @@
import ProfileLink from "./ProfileLink.svelte"; import ProfileLink from "./ProfileLink.svelte";
import ProfileFlag from "./ProfileFlag.svelte"; import ProfileFlag from "./ProfileFlag.svelte";
import Avatar from "$components/Avatar.svelte"; import Avatar from "$components/Avatar.svelte";
import TimeOffset from "./TimeOffset.svelte";
type Props = { type Props = {
name: string; name: string;
profile: User | Member; profile: User | Member;
lazyLoadAvatar?: boolean; lazyLoadAvatar?: boolean;
offset?: number | null;
}; };
let { name, profile, lazyLoadAvatar }: Props = $props(); let { name, profile, lazyLoadAvatar, offset }: Props = $props();
// renderMarkdown sanitizes the output HTML for us // renderMarkdown sanitizes the output HTML for us
let bio = $derived(renderMarkdown(profile.bio)); let bio = $derived(renderMarkdown(profile.bio));
@ -45,6 +47,7 @@
{:else} {:else}
<h2>{name}</h2> <h2>{name}</h2>
{/if} {/if}
{#if offset}<TimeOffset {offset} />{/if}
{#if bio} {#if bio}
<hr /> <hr />
<!-- bios are sanitized before being passed to @html and the allowed markdown is heavily restricted --> <!-- bios are sanitized before being passed to @html and the allowed markdown is heavily restricted -->

View file

@ -0,0 +1,19 @@
<script lang="ts">
import { DateTime, FixedOffsetZone } from "luxon";
import Clock from "svelte-bootstrap-icons/lib/Clock.svelte";
type Props = { offset: number };
let { offset }: Props = $props();
let { currentTime, timezone } = $derived.by(() => {
const zone = FixedOffsetZone.instance(offset / 60);
return {
currentTime: DateTime.now().setZone(zone).toLocaleString(DateTime.TIME_SIMPLE),
timezone: zone.formatOffset(DateTime.now().toUnixInteger(), "narrow"),
};
});
</script>
<Clock aria-hidden />
{currentTime} <span class="text-body-secondary">(UTC{timezone})</span>

View file

@ -25,7 +25,7 @@
<OwnProfileNotice editLink="/settings/profile" /> <OwnProfileNotice editLink="/settings/profile" />
{/if} {/if}
<ProfileHeader name="@{data.user.username}" profile={data.user} /> <ProfileHeader name="@{data.user.username}" profile={data.user} offset={data.user.utc_offset} />
<ProfileFields profile={data.user} {allPreferences} /> <ProfileFields profile={data.user} {allPreferences} />
{#if data.members.length > 0} {#if data.members.length > 0}