diff src/chat.html.luan @ 41:2a4c83ce3deb

public chat
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 11 Aug 2025 07:58:32 +0900
parents 2737eeedc1d5
children 1d9d9786d76f
line wrap: on
line diff
--- a/src/chat.html.luan	Sun Aug 10 11:29:02 2025 +0900
+++ b/src/chat.html.luan	Mon Aug 11 07:58:32 2025 +0900
@@ -13,17 +13,18 @@
 local started = Shared.started or error()
 local voices = Shared.voices or error()
 local User = require "site:/lib/User.luan"
-local current_user = User.current_required or error()
+local current_user = User.current or error()
 local Chat = require "site:/lib/Chat.luan"
 local get_chat_by_id = Chat.get_by_id or error()
 local languages = require "site:/lib/languages.luan"
 
 
 return function()
-	local user = current_user()
-	if user == nil then return end
 	local chat_id = Http.request.parameters.chat or error()
 	local chat = get_chat_by_id(chat_id) or error()
+	local user = current_user()
+	local is_owner = user ~= nil and user.id == chat.user_id
+	is_owner or not chat.is_private or error "private"
 	local init_text = chat.init_text()
 	Io.stdout = Http.response.text_writer()
 %>
@@ -44,8 +45,10 @@
 				<span pulldown>
 					<img onclick="clickMenu(this)" src="/images/menu.svg">
 					<div>
+<%	if is_owner then %>
 						<span onclick="editChat()">Edit Chat</span>
 						<span onclick="deleteChat()">Delete Chat</span>
+<%	end %>
 						<span onclick="systemPrompt()">System Prompt</span>
 					</div>
 				</span>
@@ -53,6 +56,7 @@
 			<div messages>
 <%				chat.output_messages_html() %>
 			</div>
+<%	if is_owner then %>
 			<div ask>
 				<textarea autofocus oninput="fixTextarea(event.target)" onkeydown="textareaKey(event)"><%= html_encode(init_text) %></textarea>
 				<div buttons>
@@ -61,6 +65,7 @@
 					<button onclick="askAi()" title="Send"><img src="/images/send.svg"></button>
 				</div>
 			</div>
+<%	end %>
 		</div>
 		<img waiting-ai-icon src="/images/spinner_green.gif">
 		<dialog edit>
@@ -95,6 +100,9 @@
 				<p>
 					<label clickable><input type=checkbox name=show_text>Show text</label>
 				</p>
+				<p>
+					<label clickable><input type=checkbox name=is_private>Private chat</label>
+				</p>
 				<div buttons>
 					<button type=button onclick="closeModal(this)">Cancel</button>
 					<button type=submit>Save</button>
@@ -121,8 +129,14 @@
 		</dialog>
 		<input name=initialized style="display:none">
 		<script>
+			'use strict';
+//let test = 'a';
+//alert(test);
+//test = 'b';
 			setChat(<%= json_string(chat.info()) %>);
 			handleChatMarkdown();
+			scrollToEnd();
+/*
 			setTimeout(function(){
 				let initialized = document.querySelector('[name=initialized]');
 				if( !initialized.value ) {
@@ -131,6 +145,7 @@
 					scrollToEnd();
 				}
 			},10);
+*/
 		</script>
 	</body>
 </html>