diff src/chat.js @ 4:b1adec083e44

chat work
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 08 Jul 2025 22:15:41 -0600
parents
children a970b7a01a74
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/chat.js	Tue Jul 08 22:15:41 2025 -0600
@@ -0,0 +1,56 @@
+'use strict';
+
+function openRenameChat(name) {
+	let dialog = document.querySelector('dialog[rename]');
+	dialog.querySelector('input[name=name]').value = name;
+	dialog.showModal();
+}
+
+function renameChat() {
+	ajax(`rename_chat.js?chat=${chatId}`);
+}
+
+function saveRenameChat() {
+	let dialog = document.querySelector('dialog[rename]');
+	let name = dialog.querySelector('input[name=name]').value;
+	ajax(`save_rename_chat.js?chat=${chatId}&name=${encodeURIComponent(name)}`);
+	dialog.close();
+}
+
+function deleteChat() {
+	let dialog = document.querySelector('dialog[delete]');
+	dialog.showModal();
+}
+
+function doDeleteChat(el) {
+	closeModal(el);
+	ajax(`delete_chat.js?chat=${chatId}`);
+}
+
+function showWaitingAiIcon() {
+	document.querySelector('[waiting-ai-icon]').style.display = 'block';
+}
+
+const isMobile = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
+
+function textareaKey(event) {
+	if( event.keyCode===13 && !event.shiftKey && !event.ctrlKey && !isMobile ) {
+		event.preventDefault();
+		askAi();
+	}
+}
+
+function fixTextarea(event) {
+	let textarea = event.target;
+	textarea.style.height = 'initial';
+	textarea.style.height = (textarea.scrollHeight+2) + 'px';
+	textarea.scrollIntoViewIfNeeded(false);
+}
+
+function askAi() {
+	let input = document.querySelector('textarea');
+	let url = `ai_ask.js?key=${chatId}&input=${encodeURIComponent(input.value)}`;
+	ajax(url);
+	input.value = '';
+	showWaitingAiIcon();
+}