From 323178af6b0ad99c346de7088dceafb02233336f Mon Sep 17 00:00:00 2001 From: JustTemmie <47639983+JustTemmie@users.noreply.github.com> Date: Thu, 10 Jul 2025 16:10:55 +0200 Subject: [PATCH] undo the last 6 merges i fucked up --- app.vue | 2 +- components/Button.vue | 2 +- components/Channel.vue | 6 +- components/Message.vue | 6 +- components/MessageArea.vue | 144 +++++++++++++----- layouts/client.vue | 116 +++++++------- pages/index.vue | 15 +- .../[serverId]/channels/[channelId].vue | 26 ++-- pages/settings.vue | 16 +- public/themes/ash.css | 1 + public/themes/dark.css | 1 + public/themes/description.css | 29 ++++ public/themes/light.css | 1 + public/themes/rainbow-capitalism.css | 6 +- 14 files changed, 251 insertions(+), 120 deletions(-) create mode 100644 public/themes/description.css diff --git a/app.vue b/app.vue index 7af306b..cb5ec34 100644 --- a/app.vue +++ b/app.vue @@ -33,7 +33,7 @@ body { font-family: Arial, Helvetica, sans-serif; box-sizing: border-box; color: var(--text-color); - background: var(--optional-chat-background); + background: var(--optional-body-background); background-color: var(--chat-background-color); margin: 0; } diff --git a/components/Button.vue b/components/Button.vue index fb44cf2..66706de 100644 --- a/components/Button.vue +++ b/components/Button.vue @@ -21,7 +21,7 @@ const props = defineProps<{ background-color: var(--primary-color); color: var(--text-color); - padding: 0.7dvh 1.2dvw; + padding: 0.4em 0.75em; font-size: 1.1em; transition: background-color 0.2s; diff --git a/components/Channel.vue b/components/Channel.vue index 0f48323..98f210e 100644 --- a/components/Channel.vue +++ b/components/Channel.vue @@ -23,14 +23,14 @@ const isCurrentChannel = props.uuid == props.currentUuid; .channel-list-link { text-decoration: none; color: inherit; - padding-left: .5dvw; - padding-right: .5dvw; + padding-left: .25em; + padding-right: .25em; } .channel-list-link-container { text-align: left; display: flex; - height: 4dvh; + height: 1.5em; white-space: nowrap; align-items: center; } diff --git a/components/Message.vue b/components/Message.vue index dce8ed4..eb073ac 100644 --- a/components/Message.vue +++ b/components/Message.vue @@ -188,12 +188,12 @@ function getDayDifference(date1: Date, date2: Date) { diff --git a/components/MessageArea.vue b/components/MessageArea.vue index 18b9ac5..fff4a5c 100644 --- a/components/MessageArea.vue +++ b/components/MessageArea.vue @@ -9,11 +9,28 @@
- - +
+ + + +
+ +
+
+
+
+ +
+ + + + +
@@ -106,11 +123,38 @@ function pushMessage(message: MessageResponse) { messages.value.push(message); } +function handleTextboxKeyDown(event: KeyboardEvent) { + if (event.key === "Enter" && event.shiftKey && messageTextboxInput.value) { + // this enters a newline, due to not preventing default + } else if (event.key === "Enter") { + event.preventDefault() + sendMessage(event) + } + + adjustTextboxHeight() +} + +function handleTextboxInput() { + if (messageTextboxInput.value) { + messageInput.value = messageTextboxInput.value.innerText; + } + + adjustTextboxHeight() +} + +// this technically uses pixel units, but it's still set using dynamic units +function adjustTextboxHeight() { + if (messageTextboxInput.value && messageTextboxDisplay.value) { + messageTextboxInput.value.style.height = "auto" + messageTextboxInput.value.style.height = `${messageTextboxInput.value.scrollHeight}px` + } +} + const messages = ref([]); - -const messageInput = ref(); - +const messageInput = ref(""); const messagesElement = ref(); +const messageTextboxInput = ref(); +const messageTextboxDisplay = ref(); if (messagesRes) messages.value = messagesRes; @@ -158,14 +202,21 @@ if (accessToken && apiBase) { function sendMessage(e: Event) { e.preventDefault(); - const message = { - message: messageInput.value - } - console.log("message:", message); - if (message.message) { + if (messageInput.value && messageInput.value.trim() !== "") { + const message = { + message: messageInput.value.trim().replace(/\n/g, "
") // trim, and replace \n with
+ } + + console.log("message:", message); ws.send(JSON.stringify(message)); - messageInput.value = ""; - console.log("MESSAGE SENT!!!"); + + // reset input field + messageInput.value = "" + if (messageTextboxInput.value) { + messageTextboxInput.value.innerText = "" + } + + adjustTextboxHeight() } } @@ -241,38 +292,63 @@ router.beforeEach((to, from, next) => { \ No newline at end of file diff --git a/pages/index.vue b/pages/index.vue index f970926..41deadf 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1,6 +1,19 @@ diff --git a/pages/servers/[serverId]/channels/[channelId].vue b/pages/servers/[serverId]/channels/[channelId].vue index 6bdcc7c..5c55655 100644 --- a/pages/servers/[serverId]/channels/[channelId].vue +++ b/pages/servers/[serverId]/channels/[channelId].vue @@ -83,36 +83,36 @@ function handleMemberClick(member: GuildMemberResponse) {