fix replies sorting

This commit is contained in:
isUnknown 2024-10-30 13:29:26 +01:00
parent 20824983a6
commit 78e2f8f956
3 changed files with 66 additions and 41 deletions

View file

@ -19,36 +19,53 @@ Comments:
file:
uuid: file://s0lNtRA0Z7ybTCWG
pageIndex: 1
replies: [ ]
text: Premier commentaire
replies:
-
page:
uri: projects/miss-dior-blooming-bouquet
title: Miss Dior Blooming Bouquet
file:
uuid: file://s0lNtRA0Z7ybTCWG
pageIndex: 1
replies: [ ]
text: Test de réponse
author:
name: Adrien Payet
email: adrien.payet@outlook.com
uuid: user://WWjXgPWk
role: admin
date: 2024-10-30T12:26:44+01:00
id: m2vskcko
type: comment
isRead: false
parentId: m2vsk6jn
-
page:
uri: projects/miss-dior-blooming-bouquet
title: Miss Dior Blooming Bouquet
file:
uuid: file://s0lNtRA0Z7ybTCWG
pageIndex: 1
replies: [ ]
text: deuxième réponse
author:
name: Adrien Payet
email: adrien.payet@outlook.com
uuid: user://WWjXgPWk
role: admin
date: 2024-10-30T12:27:42+01:00
id: m2vslkxg
type: comment
isRead: false
parentId: m2vsk6jn
text: Un premier commentaire
author:
name: Utilisateur Dior
email: utilisateur@dior.com
uuid: user://HfuumN8s
role: client
date: 2024-10-30T12:08:36+01:00
id: m2vrx0ls
type: comment
isRead: false
position:
x: null
y: null
-
page:
uri: projects/miss-dior-blooming-bouquet
title: Miss Dior Blooming Bouquet
file:
uuid: file://s0lNtRA0Z7ybTCWG
pageIndex: 1
replies: [ ]
text: Deuxième commentaire
author:
name: Utilisateur Dior
email: utilisateur@dior.com
uuid: user://HfuumN8s
role: client
date: 2024-10-30T12:08:41+01:00
id: m2vrx4zz
name: Adrien Payet
email: adrien.payet@outlook.com
uuid: user://WWjXgPWk
role: admin
date: 2024-10-30T12:26:37+01:00
id: m2vsk6jn
type: comment
isRead: false
position:

View file

@ -22,7 +22,7 @@ return [
'file' => $file,
'filePageIndex' => $data->filePageIndex,
'text' => $data->text,
'user' => $user,
'author' => $user,
'date' => (string) $data->date,
'id' => $data->id,
'type' => 'comment'
@ -30,13 +30,17 @@ return [
$newReply = new Reply($data);
$comments[$newReply->parentId()]['replies'][$newReply->id()] = $newReply->toArray();
foreach ($comments as &$comment) {
if ($comment['id'] === $newReply->parentId()) {
$comment['replies'][] = $newReply->toArray();
}
}
$newFile = $file->update([
'comments' => $comments
]);
$user->sendNotification('comments', $newReply->toArray());
$user->sendNotification($newReply);
return getFileData($newFile);
}

View file

@ -24,16 +24,11 @@
<span>Retour à la liste</span>
</button>
<Comment :comment="openedComment" data-opened="true" />
<div
v-if="Object.values(openedComment.replies).length > 0"
class="replies"
>
<div v-if="sortedReplies.length > 0" class="replies">
<Comment
v-for="(reply, commentIndex) in Object.values(
openedComment.replies
).reverse()"
v-for="(reply, commentIndex) in sortedReplies"
:comment="reply"
:commentIndex="commentIndex + 1"
:commentIndex="sortedReplies.length - commentIndex"
:key="reply.id"
/>
</div>
@ -114,6 +109,13 @@ const emits = defineEmits(["update:file"]);
const sortedComments = computed(() => {
return comments.reverse();
});
const sortedReplies = computed(() => {
const sortedReplies =
openedComment.value && openedComment.value.replies
? openedComment.value.replies.slice().reverse()
: [];
return sortedReplies;
});
// Functions
function handleSubmit(event) {
@ -140,7 +142,9 @@ async function replyComment(newComment) {
const newFile = await api.replyComment(newComment);
newCommentText.value = "";
isAddOpen.value = false;
openedComment.value = newFile.comments[openedComment.value.id];
openedComment.value = newFile.comments.find(
(item) => item.id === openedComment.value.id
);
emits("update:file", newFile);
}