def new_message(data): logger.info(f"SEND_MESSAGE Recieved {data}") thread = ThreadEntry.from_id(data["thread"]) sender = UserEntry.from_user_id(data["sender"]) try: content = data["content"] except KeyError: logger.error("No content found in message") logger.debug(f"Contents of payload: {data}") content = "" try: logger.info(f"Creating MessageEntry with id: {MessageEntry.next_id()}") message = MessageEntry(MessageEntry.next_id(incr=True), thread.thread_id, sender.user_id, content) logger.info("Made MessageEntry object. Commiting...") message.commit() logger.info(f"Emitting NEW_MESSAGE id: {message.message_id}") emit( "NEW_MESSAGE", message.to_dict(), room=thread.room_name, namespace="/message", ) except KeyError as e: logger.error(e) return jsonify(error="Malformed request"), 400
def _get_threads(self): from server.redis_cache.message_cache import ThreadEntry raw_thread_ids = self._R.smembers(f"user:{self.user_id}:threads") # If redis loads something, fix the response and set threads if raw_thread_ids: thread_ids = list( map(lambda th: int(th.decode("utf-8")), raw_thread_ids)) self._threads = [ ThreadEntry.from_id(thread_id) for thread_id in thread_ids ] # Else return empty list else: self._threads = []
def client_thread_request(data): logger.info("CLIENT_THREAD_REQUEST") logger.info(f"Client requested thread {data}") logger.info(data["thread"]) thread = ThreadEntry.from_id(data["thread"]) user = UserEntry.from_sid(request.sid) if thread.is_user_in_thread(user): logger.debug("CALLING JOIN ROOM (CLIENT THREAD REQUEST)") join_room(thread.room_name) logger.debug(f"Rooms: {rooms()}") emit("THREAD_JOINED", {"thread": thread.thread_id}) else: emit( "THREAD_JOIN_FAILED", { "thread": thread.thread_id, "error": "USER NOT IN THREAD" }, )
def join_thread_request(data): logger.info("JOIN_THREAD_REQUEST") logger.info(f"Client requested thread {data}") thread = ThreadEntry.from_id(data["thread"]) sender = UserEntry.from_user_id(data["sender"]) if thread.check_if_user_in_thread(sender): logger.info(f"Adding {sender} to thread {thread}") # join_room(thread.thread_name, namespace="/message") logger.debug("CALLING JOIN ROOM (JOIN_THREAD_REQUEST)") join_room(thread.thread_name) logger.debug(f"Rooms: {rooms()}") emit("THREAD_JOINED", {"thread": thread.to_dict()}) else: emit( "THREAD_JOIN_FAILED", { "thread": data["thread"], "error": "USER NOT IN THREAD" }, )