Added new views.

This commit is contained in:
retoor 2025-09-17 16:12:05 +02:00
parent 659c30f376
commit 71d967114d
2 changed files with 105 additions and 0 deletions

View File

@ -0,0 +1,97 @@
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content">
<link rel="manifest" href="/manifest.json" />
<style>
body{
background-color: black;
color: white;
}
</style>
</head>
<body>
<script type="module">
import { Socket } from "./socket.js";
class ChatWindow extends HTMLElement {
constructor() {
super();
this.component = document.createElement("div");
this.message_list = document.createElement("div")
this.component.appendChild(this.message_list);
this.chat_input = document.createElement("div")
this.component.appendChild(this.chat_input);
this.channelUid = null
this.channelUid = this.getAttribute("channel")
this.inputText = document.createElement("textarea")
this.inputText.addEventListener("keyup",(e)=>{
this.rpc.sendMessage(this.channelUid, e.target.value,false)
if(e.key == "Enter" && !e.shiftKey){
this.rpc.sendMessage(this.channelUid, e.target.value,true)
e.target.value = ""
}else{
//this.rpc.sendMessage(this.channelUid, e.target.value, false)
}
})
this.component.appendChild(this.inputText)
this.ws = new Socket();
this.ws.addEventListener("channel-message", this.handleMessage.bind(this))
this.rpc = this.ws.client
this.ws.addEventListener("update_message_text",this.handleMessage.bind(this))
window.chat = this
}
async handleMessage(data,data2) {
if(data2 && data2.event)
data = data.data
console.info(["update-messagettt",data])
console.warn(data.uid)
if(!data.html)
return
let div = this.message_list.querySelector('[data-uid="' + data.uid + '"]');
console.info(div)
if(!div){
let temp = document.createElement("chat-message");
temp.innerHTML = data.html
this.message_list.appendChild(temp)
//this.message_list.replace(div,temp)
//div.innerHTML = data.html
//this.message_list.appendChild(div);
}else{
// alert("HIERR")
let temp = document.createElement("chat-message");
temp.innerHTML = data.html;
div.innerHTML = temp.innerHTML
console.info("REPLACE")
}
}
async connectedCallback() {
await this.rpc.ping(this.channel)
console.info(this.channelUid)
this.messages = await this.rpc.getMessages(this.channelUid, 0, 0);
this.messages.forEach((msg) => {
const temp = document.createElement("div");
temp.innerHTML = msg.html;
this.message_list.appendChild(temp.firstChild);
})
this.appendChild(this.component);
}
}
customElements.define("chat-window", ChatWindow);
</script>
<chat-window channel="df3e1259-7d1a-4184-b75c-3befd5bf08e1"></chat-window>
</body>
</html>

8
src/snek/view/new.py Normal file
View File

@ -0,0 +1,8 @@
from snek.system.view import BaseView
class NewView(BaseView):
login_required = True
async def get(self):
return await self.render_template("new.html")