diff --git a/tmessage/static/js/messages.js b/tmessage/static/js/messages.js index 1f2da2d..67ebc9c 100644 --- a/tmessage/static/js/messages.js +++ b/tmessage/static/js/messages.js @@ -89,7 +89,26 @@ function replyTo(messageID) { } function deleteMessage(messageID) { - // + let msgContainer = document.querySelector(`.message-container[data-message-id="${messageID}"]`); + let err = msgContainer.querySelector(`.msg-error`); + + fetch("/api/messages/", { + method: "DELETE", + body: JSON.stringify({ + id: messageID + }) + }) + .then((response) => (response.json())) + .then((json) => { + if (json.success) { + msgContainer.remove(); + } else { + err.innerHTML = "Something went wrong!"; + } + }) + .catch((err) => { + err.innerHTML = `Something went wrong: ${err}`; + }); } function _updateURL_replaceElement(element, to) { @@ -138,8 +157,11 @@ function fetchMessages(fetchFromStart=false) { if (json.success) { let frag = document.createDocumentFragment(); + console.log(fetchFromStart); if (fetchFromStart && json.messages.length == 0) { - out = "No messages"; + let el = document.createElement("i"); + el.innerText = "No messages"; + frag.append(el) } else { for (const message of json.messages) { frag.append(getMessageHTML(message, json.canRespond)); diff --git a/tmessage/views/api.py b/tmessage/views/api.py index 8135e16..3502954 100644 --- a/tmessage/views/api.py +++ b/tmessage/views/api.py @@ -20,6 +20,7 @@ def _json_response(data: dict | list, /, *, status: int=200, content_type: str=" RESPONSE_400 = _json_response({ "success": False }, status=400) RESPONSE_401 = _json_response({ "success": False }, status=401) +RESPONSE_403 = _json_response({ "success": False }, status=403) @csrf_exempt def api_messages(request: WSGIRequest) -> HttpResponse: @@ -28,6 +29,8 @@ def api_messages(request: WSGIRequest) -> HttpResponse: if username is None: return RESPONSE_401 + user = get_user_object(username, i_promise_this_user_exists=True) + if request.method == "POST": body = json.loads(request.body) reply = body["content"].strip() @@ -36,15 +39,13 @@ def api_messages(request: WSGIRequest) -> HttpResponse: if not (isinstance(message_id, int) and isinstance(reply, str)): return RESPONSE_400 - user = get_user_object(username, i_promise_this_user_exists=True) - try: message = tMMessage.objects.get(message_id=message_id) except tMMessage.DoesNotExist: return RESPONSE_400 if username != message.u_to.username: - return RESPONSE_401 + return RESPONSE_403 if message.response is not None: return RESPONSE_400 @@ -60,9 +61,25 @@ def api_messages(request: WSGIRequest) -> HttpResponse: }) elif request.method == "DELETE": - ... + body = json.loads(request.body) + message_id = body["id"] - user = get_user_object(username, i_promise_this_user_exists=True) + if not isinstance(message_id, int): + return RESPONSE_400 + + try: + message = tMMessage.objects.get(message_id=message_id) + except tMMessage.DoesNotExist: + return RESPONSE_400 + + if username != message.u_to.username: + return RESPONSE_403 + + message.delete() + + return _json_response({ + "success": True + }) queryFilter = {}