diff --git a/src/snek/view/rpc.py b/src/snek/view/rpc.py index afaa67d..2709b53 100644 --- a/src/snek/view/rpc.py +++ b/src/snek/view/rpc.py @@ -307,10 +307,10 @@ class RPCView(BaseView): self._require_login() message = message.strip() - + if not is_final: if_final = False - 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,deleted_at=None) if check_message: await self._queue_finalize_message(check_message["uid"]) return await self.update_message_text(check_message["uid"], message) @@ -321,7 +321,10 @@ class RPCView(BaseView): message = await self.services.chat.send( self.user_uid, channel_uid, message, is_final ) - await self._queue_finalize_message(message["uid"]) + if not message["is_final"]: + await self._queue_finalize_message(message["uid"]) + elif self._finalize_task: + self._finalize_task.cancel() return message["uid"] @@ -374,11 +377,16 @@ class RPCView(BaseView): async with self.app.no_save(): self._require_login() - message = await self.services.channel_message.get(message_uid) + message = await self.services.channel_message.get(message_uid,deleted_at=None,is_final=False) + if not message: + return { + "error": "Message not found", + "success": False, + } if message["user_uid"] != self.user_uid: raise Exception("Not allowed") - if message.get_seconds_since_last_update() > 5: + if message.get_seconds_since_last_update() > 8: return { "error": "Message too old", "seconds_since_last_update": message.get_seconds_since_last_update(),