diff --git a/src/snek/service/channel_message.py b/src/snek/service/channel_message.py index 2da4529..8b28542 100644 --- a/src/snek/service/channel_message.py +++ b/src/snek/service/channel_message.py @@ -74,6 +74,8 @@ class ChannelMessageService(BaseService): if not self._configured_indexes: if not self.mapper.db["channel_message"].has_index(['is_final','user_uid','channel_uid']): self.mapper.db["channel_message"].create_index(['is_final','user_uid','channel_uid'], unique=False) + if not self.mapper.db["channel_message"].has_index(['uid']): + self.mapper.db["channel_message"].create_index(['uid'], unique=True) if not self.mapper.db["channel_message"].has_index(['deleted_at']): self.mapper.db["channel_message"].create_index(['deleted_at'], unique=False) self._configured_indexes = True diff --git a/src/snek/view/rpc.py b/src/snek/view/rpc.py index 2709b53..b709f5f 100644 --- a/src/snek/view/rpc.py +++ b/src/snek/view/rpc.py @@ -377,21 +377,31 @@ class RPCView(BaseView): async with self.app.no_save(): self._require_login() - message = await self.services.channel_message.get(message_uid,deleted_at=None,is_final=False) + message = await self.services.channel_message.get(message_uid) if not message: return { "error": "Message not found", "success": False, } + if message["is_final"]: + return { + "error": "Message is final", + "success": False, + } + if message["deleted_at"]: + return { + "error": "Message is deleted", + "success": False, + } if message["user_uid"] != self.user_uid: raise Exception("Not allowed") - if message.get_seconds_since_last_update() > 8: - return { - "error": "Message too old", - "seconds_since_last_update": message.get_seconds_since_last_update(), - "success": False, - } + #if message.get_seconds_since_last_update() > 8: + # return { + # "error": "Message too old", + # "seconds_since_last_update": message.get_seconds_since_last_update(), + # "success": False, + # } message["message"] = text if not text: