From 4c0a8bb70011288106630881ecc13f118139fe6b Mon Sep 17 00:00:00 2001 From: Andy Burke Date: Wed, 20 Aug 2025 11:48:16 -0700 Subject: [PATCH] feature: file uploads and audio embedding --- deno.json | 3 +- public/base.css | 3 +- public/tabs/profile/profile.html | 2 +- public/tabs/talk/talk.css | 27 +++++++++++-- public/tabs/talk/talk.html | 68 +++++++++++++++++++++++++++----- public/tabs/talk/talk.js | 20 +++++++++- utils/prechecks.ts | 4 +- 7 files changed, 105 insertions(+), 22 deletions(-) diff --git a/deno.json b/deno.json index 3d4c012..4755028 100644 --- a/deno.json +++ b/deno.json @@ -17,10 +17,9 @@ "include": ["**/*.ts"], "options": { "useTabs": true, - "lineWidth": 140, + "lineWidth": 180, "indentWidth": 4, "singleQuote": true, - "proseWrap": "preserve", "trailingCommas": "never" } }, diff --git a/public/base.css b/public/base.css index e5264f6..721f3f5 100644 --- a/public/base.css +++ b/public/base.css @@ -7,6 +7,7 @@ --border-normal: #888; --border-highlight: #bbb; --icon-scale: 1.25; + --border-radius: 4px; } @media (prefers-color-scheme: light) { @@ -184,7 +185,7 @@ button { color: inherit; padding: 0.5rem; border: 1px solid var(--text); - border-radius: 4px; + border-radius: var(--border-radius); cursor: pointer; } diff --git a/public/tabs/profile/profile.html b/public/tabs/profile/profile.html index 3d90ef7..9f60c8c 100644 --- a/public/tabs/profile/profile.html +++ b/public/tabs/profile/profile.html @@ -136,7 +136,7 @@ const body = new FormData(); body.append("file", avatar, encodeURIComponent(avatar.name)); - const avatar_path = `/files/users/${user.id}/avatars/${avatar.name}`; + const avatar_path = `/files/users/${user.id}/avatars/${encodeURIComponent(avatar.name)}`; const avatar_upload_response = await api.fetch(avatar_path, { method: "PUT", diff --git a/public/tabs/talk/talk.css b/public/tabs/talk/talk.css index e4fcf37..3f92ba7 100644 --- a/public/tabs/talk/talk.css +++ b/public/tabs/talk/talk.css @@ -90,10 +90,24 @@ padding: 0.75rem; } -#talk #room-chat-entry-container form button { +#talk #room-chat-entry-container form input[type="file"] { + opacity: 0; + display: none; +} + +#talk #room-chat-entry-container form button, +#talk #room-chat-entry-container form label { + position: relative; + top: inherit; + font-size: inherit; + transition: inherit; width: 50px; padding: inherit; margin: 0 1rem; + cursor: pointer; + align-content: center; + border-radius: var(--border-radius); + border: 1px solid var(--text); } #talk #room-chat-entry-container form textarea { @@ -101,6 +115,7 @@ flex-grow: 1; background: inherit; color: inherit; + border-radius: var(--border-radius); } #talk .message-container { @@ -109,7 +124,7 @@ background: rgba(255, 255, 255, 0.03); margin-top: 0.75rem; padding: 2px; - border-radius: 4px; + border-radius: var(--border-radius); } #talk .message-container.user-tick.time-tick + .message-container.user-tick.time-tick, @@ -250,12 +265,17 @@ opacity: 0; } +#talk .embed-container audio { + width: 100%; +} + #talk .embed-container.rounded { border-radius: 6px; } #talk .embed-container.short { height: 0; + min-height: 40px; overflow: hidden; overflow-y: auto; padding-bottom: 7.5%; @@ -347,7 +367,8 @@ padding: 0.25rem; } - #talk #room-chat-container #room-chat-entry-container form button { + #talk #room-chat-container #room-chat-entry-container form button, + #talk #room-chat-container #room-chat-entry-container form label { margin: 0 0.5rem; } } diff --git a/public/tabs/talk/talk.html b/public/tabs/talk/talk.html index 73e9f16..d71f915 100644 --- a/public/tabs/talk/talk.html +++ b/public/tabs/talk/talk.html @@ -89,9 +89,16 @@
- + +