deleting messages

This commit is contained in:
trinkey 2024-12-24 10:42:52 -05:00
parent b053ea000b
commit 156a9becc1
2 changed files with 46 additions and 7 deletions

View file

@ -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 = "<i>No messages</i>";
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));

View file

@ -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 = {}