Skip to content

Commit a136162

Browse files
committed
Updated conversations route
1 parent 395c614 commit a136162

File tree

1 file changed

+39
-21
lines changed

1 file changed

+39
-21
lines changed

backend/PyMatcha/routes/api/messages.py

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,57 @@
3030
from PyMatcha.utils.success import SuccessOutput
3131

3232

33-
REQUIRED_KEYS_NEW_MESSAGE = {"to_id": int, "content": str}
33+
REQUIRED_KEYS_NEW_MESSAGE = {"to_uid": str, "content": str}
3434

3535
messages_bp = Blueprint("messages", __name__)
3636

37-
38-
# TODO: route to receive messages
37+
"""
38+
test get all messages
39+
test when is_unseen is true
40+
test more than one conv
41+
test see message
42+
test like message
43+
test unseen conversations
44+
"""
3945

4046

4147
@messages_bp.route("/conversations", methods=["GET"])
4248
@jwt_required
4349
def get_opened_conversations():
4450
conv_list = current_user.get_conversation_list()
45-
returned_list = [c.to_dict() for c in conv_list]
51+
returned_list = [
52+
{
53+
"last_message_timestamp": c.timestamp,
54+
"last_message_content": c.content,
55+
"is_unseen": True if not c.is_seen and c.to_id == current_user.id else False,
56+
"with_user": get_user(c.to_id if c.to_id != current_user.id else c.from_id).to_dict(),
57+
}
58+
for c in conv_list
59+
]
4660
return SuccessOutput("conversations", returned_list)
4761

4862

63+
@messages_bp.route("/messages/send", methods=["POST"])
64+
@jwt_required
65+
@validate_params(REQUIRED_KEYS_NEW_MESSAGE)
66+
def send_message():
67+
current_app.logger.debug("/messages -> Call")
68+
data = request.get_json()
69+
to_uid: str = data["to_uid"]
70+
content: str = data["content"]
71+
try:
72+
to_user = get_user(to_uid)
73+
except NotFoundError:
74+
raise NotFoundError(f"Recipient {to_uid} not found", "Try again")
75+
76+
if current_user.id == to_user.id:
77+
raise BadRequestError("Cannot send a message to yourself.", "Try again")
78+
79+
current_user.send_message(to_id=to_user.id, content=content)
80+
current_app.logger.debug("/messages -> Message successfully sent to {}.".format(to_uid))
81+
return Success("Message successfully sent to {}.".format(to_uid))
82+
83+
4984
@messages_bp.route("/conversations/<with_uid>", methods=["GET"])
5085
@jwt_required
5186
def get_conversation_messsages(with_uid):
@@ -86,23 +121,6 @@ def like_message(message_id):
86121
return Success(f"Liked message {message_id}")
87122

88123

89-
@messages_bp.route("/messages/send", methods=["POST"])
90-
@jwt_required
91-
@validate_params(REQUIRED_KEYS_NEW_MESSAGE)
92-
def send_message():
93-
current_app.logger.debug("/messages -> Call")
94-
data = request.get_json()
95-
to_id: int = int(data["to_id"])
96-
content: str = data["content"]
97-
try:
98-
get_user(to_id)
99-
except NotFoundError:
100-
raise NotFoundError("Recipient {} not found", "Try again")
101-
current_user.send_message(to_id=to_id, content=content)
102-
current_app.logger.debug("/messages -> Message successfully sent to {}".format(to_id))
103-
return Success("Message successfully sent to {}".format(to_id))
104-
105-
106124
@messages_bp.route("/messages/unseen", methods=["GET"])
107125
@jwt_required
108126
def get_new_messages():

0 commit comments

Comments
 (0)