UPdate live type.

This commit is contained in:
retoor 2025-06-25 17:31:49 +02:00
parent e76bf15135
commit 481d7e3ab6
2 changed files with 38 additions and 16 deletions

View File

@ -25,7 +25,6 @@ class ChatInputComponent extends NjetComponent {
textarea = null;
_value = "";
lastUpdateEvent = null;
expiryTimer = null;
queuedMessage = null;
lastMessagePromise = null;
_leetSpeak = false;
@ -248,7 +247,7 @@ textToLeetAdvanced(text) {
this.user = user;
});
this.liveType = this.getAttribute("live-type") !== "true";
this.liveType = this.getAttribute("live-type") == "true";
this.liveTypeInterval = parseInt(this.getAttribute("live-type-interval")) || 6;
this.channelUid = this.getAttribute("channel");
@ -388,7 +387,7 @@ textToLeetAdvanced(text) {
}
}
async finalizeMessage(messageUid) {
finalizeMessage(messageUid) {
let value = this.value;
value = this.replaceMentionsWithAuthors(value)
if(this._leetSpeak){
@ -396,18 +395,16 @@ textToLeetAdvanced(text) {
}else if(this._leetSpeakAdvanced){
value = this.textToLeetAdvanced(value);
}
await app.rpc.sendMessage(this.channelUid, value , true);
app.rpc.sendMessage(this.channelUid, value , true);
this.value = "";
this.messageUid = null;
this.queuedMessage = null;
this.lastMessagePromise = null;
}
updateFromInput(value) {
if (this.expiryTimer) {
clearTimeout(this.expiryTimer);
this.expiryTimer = null;
}
this.value = value;
@ -421,9 +418,6 @@ textToLeetAdvanced(text) {
}
async sendMessage(channelUid, value, is_final) {
if (!value.trim()) {
return null;
}
return await app.rpc.sendMessage(channelUid, value, is_final);
}
}

View File

@ -267,17 +267,43 @@ class RPCView(BaseView):
}
return result
async def _finalize_message_task(self, message_uid):
await asyncio.sleep(7)
self._finalize_task = None
self._require_login()
message = await self.services.channel_message.get(message_uid)
if not message:
return False
if message["user_uid"] != self.user_uid:
raise Exception("Not allowed")
if not message["is_final"]:
await self.services.chat.finalize(message["uid"])
return True
async def _queue_finalize_message(self, message_uid):
if self._finalize_task:
self._finalize_task.cancel()
self._finalize_task = asyncio.create_task(
self._finalize_message_task(message_uid)
)
async def send_message(self, channel_uid, message, is_final=True):
self._require_login()
#if not is_final:
# check_message = await self.services.channel_message.get(channel_uid=channel_uid, user_uid=self.user_uid,is_final=False)
# if check_message:
# return await self.update_message_text(check_message["uid"], message)
is_final = True
if not is_final:
check_message = await self.services.channel_message.get(channel_uid=channel_uid, user_uid=self.user_uid,is_final=False)
if check_message:
await self._queue_finalize_message(check_message["uid"])
return await self.update_message_text(check_message["uid"], message)
message = await self.services.chat.send(
self.user_uid, channel_uid, message, is_final
)
await self._queue_finalize_message(message["uid"])
return message["uid"]
@ -326,8 +352,10 @@ class RPCView(BaseView):
return True
async def update_message_text(self, message_uid, text):
async with self.app.no_save():
self._require_login()
message = await self.services.channel_message.get(message_uid)
if message["user_uid"] != self.user_uid:
raise Exception("Not allowed")