mirror of
https://github.com/Blah-IM/Weblah.git
synced 2025-07-08 15:05:33 +00:00
fix: all svelte diagnostics.
This commit is contained in:
parent
4129cac511
commit
b96bdf7ff3
10 changed files with 159 additions and 107 deletions
|
@ -1,36 +1,29 @@
|
|||
<script lang="ts">
|
||||
import { run } from 'svelte/legacy';
|
||||
|
||||
import { page } from '$app/stores';
|
||||
import { page } from '$app/state';
|
||||
import { BlahChatServerConnection } from '$lib/blah/connection/chatServer';
|
||||
import { browser } from '$app/environment';
|
||||
import { chatServerConnectionPool } from '$lib/chatServers';
|
||||
import ServiceMessage from '$lib/components/ServiceMessage.svelte';
|
||||
import ChatPage from './ChatPage.svelte';
|
||||
import { useChat } from '$lib/chat';
|
||||
|
||||
let roomId = $derived($page.params.chatId);
|
||||
let roomId = $derived(page.params.chatId);
|
||||
|
||||
let serverEndpoint: string = $state('');
|
||||
run(() => {
|
||||
const endpointString = decodeURIComponent($page.params.server);
|
||||
serverEndpoint = endpointString.startsWith('http')
|
||||
? endpointString
|
||||
: `https://${endpointString}`;
|
||||
});
|
||||
let serverEndpoint: string = $derived(normalizedServerEndpoint(page.params.server));
|
||||
function normalizedServerEndpoint(serverURIComponent: string) {
|
||||
const endpointString = decodeURIComponent(serverURIComponent);
|
||||
return endpointString.startsWith('http') ? endpointString : `https://${endpointString}`;
|
||||
}
|
||||
|
||||
let server: BlahChatServerConnection | null = $state();
|
||||
run(() => {
|
||||
if (browser) {
|
||||
server = chatServerConnectionPool.getConnection(serverEndpoint);
|
||||
}
|
||||
let server: BlahChatServerConnection | null = $state(null);
|
||||
$effect.pre(() => {
|
||||
server = chatServerConnectionPool.getConnection(serverEndpoint);
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="flex h-full w-full flex-col items-center justify-center">
|
||||
{#if server}
|
||||
{@const { info, sectionedMessages, sendMessage } = useChat(server, roomId)}
|
||||
<ChatPage {info} {sectionedMessages} on:sendMessage={(e) => sendMessage(e.detail)} />
|
||||
{@const { sendMessage, ...rest } = useChat(server, roomId)}
|
||||
<ChatPage {...rest} onSendMessage={sendMessage} />
|
||||
{:else}
|
||||
<ServiceMessage>
|
||||
To view this chat, you need to connect to chat server
|
||||
|
|
|
@ -1,17 +1,21 @@
|
|||
<script lang="ts">
|
||||
import Button from '$lib/components/Button.svelte';
|
||||
import RichTextInput from '$lib/components/RichTextInput.svelte';
|
||||
import { deltaToBlahRichText, type BlahRichText } from '@blah-im/core/richText';
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
import type { BlahRichText } from '@blah-im/core/richText';
|
||||
import { deltaToBlahRichText } from '$lib/richText';
|
||||
import type { Delta, Editor } from 'typewriter-editor';
|
||||
|
||||
let {
|
||||
onSendMessage
|
||||
}: {
|
||||
onSendMessage: (message: BlahRichText) => void;
|
||||
} = $props();
|
||||
|
||||
let editor: Editor | undefined = $state();
|
||||
let delta: Delta | undefined = $state();
|
||||
let plainText: string = $state('');
|
||||
let form: HTMLFormElement | null = $state(null);
|
||||
|
||||
const dispatch = createEventDispatcher<{ sendMessage: BlahRichText }>();
|
||||
|
||||
function onKeyboardSubmit() {
|
||||
editor?.select(null);
|
||||
form?.requestSubmit();
|
||||
|
@ -23,7 +27,7 @@
|
|||
if (plainText.trim() === '' || !delta) return;
|
||||
|
||||
const brt = deltaToBlahRichText(delta);
|
||||
dispatch('sendMessage', brt);
|
||||
onSendMessage(brt);
|
||||
|
||||
plainText = '';
|
||||
}
|
||||
|
@ -58,7 +62,7 @@
|
|||
placeholder="Message"
|
||||
class="max-h-40 flex-1"
|
||||
keyboardSubmitMethod="enter"
|
||||
on:keyboardSubmit={onKeyboardSubmit}
|
||||
{onKeyboardSubmit}
|
||||
/>
|
||||
<Button class="p-1.5" variant="primary" type="submit">
|
||||
<svg
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<script lang="ts">
|
||||
import type { Readable } from 'svelte/store';
|
||||
|
||||
import type { Chat, Message } from '$lib/types';
|
||||
import type { Chat } from '$lib/types';
|
||||
import BgPattern from '$lib/components/BgPattern.svelte';
|
||||
import { currentKeyPair } from '$lib/keystore';
|
||||
|
||||
|
@ -14,17 +14,14 @@
|
|||
interface Props {
|
||||
info: Readable<Chat>;
|
||||
sectionedMessages: Readable<MessageSection[]>;
|
||||
onSendMessage: (brt: BlahRichText) => void;
|
||||
}
|
||||
|
||||
let { info, sectionedMessages }: Props = $props();
|
||||
|
||||
interface $$Events {
|
||||
sendMessage: CustomEvent<BlahRichText>;
|
||||
}
|
||||
let { info, sectionedMessages, onSendMessage }: Props = $props();
|
||||
</script>
|
||||
|
||||
<ChatHeader info={$info} outsideUnreadCount={263723} />
|
||||
<BgPattern class="w-full flex-1" pattern="charlieBrown">
|
||||
<ChatHistory sectionedMessages={$sectionedMessages} mySenderId={$currentKeyPair?.id} />
|
||||
</BgPattern>
|
||||
<ChatInput on:sendMessage />
|
||||
<ChatInput {onSendMessage} />
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue