From 4183b905b1f142aff471b0d7dc831637823dee58 Mon Sep 17 00:00:00 2001 From: Florian <45694132+flo-bit@users.noreply.github.com> Date: Mon, 26 May 2025 12:20:13 +0200 Subject: [PATCH] add user profile editing --- src/lib/components/Avatar.svelte | 75 +++++++++++ src/lib/components/ChatMessage.svelte | 5 +- src/lib/components/EditProfileModal.svelte | 138 +++++++++++++++++++++ src/lib/components/Image.svelte | 10 +- src/lib/components/ReplyMessage.svelte | 5 +- src/routes/+layout.ts | 2 +- src/routes/+page.svelte | 30 +---- 7 files changed, 233 insertions(+), 32 deletions(-) create mode 100644 src/lib/components/Avatar.svelte create mode 100644 src/lib/components/EditProfileModal.svelte diff --git a/src/lib/components/Avatar.svelte b/src/lib/components/Avatar.svelte new file mode 100644 index 0000000..ad03029 --- /dev/null +++ b/src/lib/components/Avatar.svelte @@ -0,0 +1,75 @@ + + +
+ {#if fallback} + {fallback} + {:else} + + + + {/if} + {#if (src || image) && browser} + + {/if} +
diff --git a/src/lib/components/ChatMessage.svelte b/src/lib/components/ChatMessage.svelte index 42d15c7..7bb4410 100644 --- a/src/lib/components/ChatMessage.svelte +++ b/src/lib/components/ChatMessage.svelte @@ -1,7 +1,7 @@ + + +
+ Edit your profile + +
+ + click avatar to change +
+ + Username + { + if (me.current) me.current.profile.name = username; + }} + onblur={() => { + if (me.current) me.current.profile.name = username; + }} + /> + +
Or set from bluesky handle:
+ +
{ + editProfile(); + }} + > + + +
+
+
diff --git a/src/lib/components/Image.svelte b/src/lib/components/Image.svelte index 981a0bb..f08a7e5 100644 --- a/src/lib/components/Image.svelte +++ b/src/lib/components/Image.svelte @@ -5,9 +5,10 @@ let { image, + src, class: className, ...rest - }: { image?: Loaded; class?: string } = $props(); + }: { image?: Loaded; src?: string; class?: string } = $props(); onMount(() => {}); @@ -15,8 +16,13 @@ $effect(() => { if (loaded) return; - if (!image) return; if (!imageRef) return; + if (src && !image) { + imageRef.src = src; + loaded = true; + return; + } + if (!image) return; loaded = true; const highestRes = ImageDefinition.highestResAvailable(image); diff --git a/src/lib/components/ReplyMessage.svelte b/src/lib/components/ReplyMessage.svelte index d488b8c..7e51f09 100644 --- a/src/lib/components/ReplyMessage.svelte +++ b/src/lib/components/ReplyMessage.svelte @@ -1,9 +1,10 @@