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

View File

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