Mercurial Hosting > chat
changeset 59:8270106644db
add chat.luan
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Tue, 04 Mar 2025 08:22:45 -0700 |
| parents | 7b6691bd65c3 |
| children | 3521166513b3 |
| files | src/about.html.luan src/account.html.luan src/chat.js src/chat.luan src/do_login.html.luan src/index.html.luan src/invite.js.luan src/lib/Shared.luan |
| diffstat | 8 files changed, 81 insertions(+), 71 deletions(-) [+] |
line wrap: on
line diff
--- a/src/about.html.luan Tue Mar 04 07:38:43 2025 -0700 +++ b/src/about.html.luan Tue Mar 04 08:22:45 2025 -0700 @@ -28,7 +28,7 @@ <li>voice, video, and screen share - Use <a href="https://talky.io/">Talky</a> or <a href="https://www.zoom.com/">Zoom</a> instead. With Talky, you can set a Talky URL to be your voice URL for easy access. With Zoom, post a meeting URL in chat.</li> </ul> - <p>For questions, <a href="https://chat.luan.software/?with=fschmidt@gmail.com">contact me</a>. This is an open <a href="https://hg.reactionary.software/repo/chat/">source</a> project.</p> + <p>For questions, <a href="https://chat.luan.software/chat?with=fschmidt@gmail.com">contact me</a>. This is an open <a href="https://hg.reactionary.software/repo/chat/">source</a> project.</p> </div> </body> </html>
--- a/src/account.html.luan Tue Mar 04 07:38:43 2025 -0700 +++ b/src/account.html.luan Tue Mar 04 08:22:45 2025 -0700 @@ -142,7 +142,7 @@ <div content> <h1>Your Account</h1> <p><a href="about.html">About Luan Chat</a></p> - <p>Your URL: <%= base_url() %>/?with=<%=user.email%></p> + <p>Your URL: <%= base_url() %>/chat?with=<%=user.email%></p> <p>Your username: <span username></span> <a href="javascript:editUsername()">Edit</a></p> <p><span notify></span> <a href="javascript:editNotify()">Edit</a></p> <p><span voice></span> <a href="javascript:editVoice()">Edit</a></p>
--- a/src/chat.js Tue Mar 04 07:38:43 2025 -0700 +++ b/src/chat.js Tue Mar 04 08:22:45 2025 -0700 @@ -16,17 +16,17 @@ userEventSource.onmessage = evalEvent; } -function selectChat(div,email) { +function selectChat(chatId) { document.querySelector('div[chat_content]').setAttribute('show','posts'); - let chatId = div.getAttribute('chat'); if( chatId === currentChatId ) return; + let div = document.querySelector(`div[chat="${chatId}"]`); let selected = div.parentNode.querySelector('[selected]'); if( selected ) selected.removeAttribute('selected'); div.setAttribute('selected',''); ajax(`get_chat.js?chat=${chatId}`); currentChatId = chatId; - history.replaceState(null,null,`?with=${email}`); + history.replaceState(null,null,`?chat=${chatId}`); clearUnread(); if(eventSource) eventSource.close();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/chat.luan Tue Mar 04 08:22:45 2025 -0700 @@ -0,0 +1,65 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local pairs = Luan.pairs or error() +local Table = require "luan:Table.luan" +local concat = Table.concat or error() +local is_empty = Table.is_empty or error() +local Http = require "luan:http/Http.luan" +local Shared = require "site:/lib/Shared.luan" +local http_push_to_users = Shared.http_push_to_users or error() +local User = require "site:/lib/User.luan" +local current_user = User.current or error() +local get_user_by_email = User.get_by_email or error() +local Utils = require "site:/lib/Utils.luan" +local to_set = Utils.to_set or error() +local Db = require "site:/lib/Db.luan" +local run_in_transaction = Db.run_in_transaction or error() +local Chat = require "site:/lib/Chat.luan" +local get_chat_by_user_ids = Chat.get_by_user_ids or error() + + +return function() + local with = Http.request.parameters.with + local user = current_user() + with = to_set(with) + if user == nil then + local url = "/login.html" + if not is_empty(with) then + local t = {} + for email in pairs(with) do + t[#t+1] = "with="..email + end + url = url.."?"..concat(t,"&") + end + Http.response.send_redirect(url)
