summaryrefslogtreecommitdiff
path: root/ui/lib
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-05-06 00:51:06 -0400
committerOwen Jacobson <owen@grimoire.ca>2025-05-06 00:53:43 -0400
commitadc1aef3dbc6b9d5f08f215d527a37e7cc59ddd9 (patch)
tree6196d24333d5caad458a0084ca1fbb4abdc6cd40 /ui/lib
parent5243c91d3a7c325088845cef198c2eb8906babc0 (diff)
Un-nest `Message` from `MessageRun`.
A `MessageRun` is a visual container with a specific layout - bordered, with a drop shadow, with a name badge on the top-left, which is either positioned to the left (`other-message`) or right (`own-message`). It is content-agnostic. This facilitates putting things besides live messages inside of a message run. As a side effect, this gets rid of ActiveChannel; most of what it was doing makes more sense living in the channel view's `+page.svelte`.
Diffstat (limited to 'ui/lib')
-rw-r--r--ui/lib/components/ActiveChannel.svelte15
-rw-r--r--ui/lib/components/MessageRun.svelte10
2 files changed, 3 insertions, 22 deletions
diff --git a/ui/lib/components/ActiveChannel.svelte b/ui/lib/components/ActiveChannel.svelte
deleted file mode 100644
index 30b8385..0000000
--- a/ui/lib/components/ActiveChannel.svelte
+++ /dev/null
@@ -1,15 +0,0 @@
-<script>
- import MessageRun from './MessageRun.svelte';
-
- let { messageRuns, deleteMessage = async (id) => {} } = $props();
-
- $effect(() => {
- // This is just to force it to track messageRuns.
- const _ = messageRuns;
- document.querySelector('.message-run:last-child .message:last-child').scrollIntoView();
- });
-</script>
-
-{#each messageRuns as { sender, ownMessage, messages }}
- <MessageRun {sender} {ownMessage} {messages} {deleteMessage} />
-{/each}
diff --git a/ui/lib/components/MessageRun.svelte b/ui/lib/components/MessageRun.svelte
index f1facd3..f6e7ee1 100644
--- a/ui/lib/components/MessageRun.svelte
+++ b/ui/lib/components/MessageRun.svelte
@@ -1,14 +1,10 @@
<script>
- import Message from '$lib/components/Message.svelte';
-
- let { sender, messages, ownMessage, deleteMessage = async (id) => {} } = $props();
+ let { sender, children, class: cssClass } = $props();
</script>
-<div class="message-run" class:own-message={ownMessage} class:other-message={!ownMessage}>
+<div class={['message-run', cssClass]}>
<span class="username">
@{sender}:
</span>
- {#each messages as message}
- <Message {...message} editable={ownMessage} {deleteMessage} />
- {/each}
+ {@render children?.()}
</div>