elseware-ui 2.31.4 → 2.31.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -18013,28 +18013,48 @@ function CommentThread({
18013
18013
  setComments((prev) => insertReply(prev, parentComment.id, reply));
18014
18014
  }
18015
18015
  async function handleLike(comment) {
18016
- const result = await dataSource.toggleLike(comment.id);
18016
+ const optimistic = {
18017
+ liked: !comment.liked,
18018
+ disliked: false,
18019
+ likes: comment.liked ? comment.likes - 1 : comment.likes + 1,
18020
+ dislikes: comment.disliked ? Math.max(comment.dislikes - 1, 0) : comment.dislikes
18021
+ };
18017
18022
  setComments(
18018
18023
  (prev) => updateComment(prev, comment.id, (item) => ({
18019
18024
  ...item,
18020
- likes: result.likes,
18021
- dislikes: result.dislikes,
18022
- liked: result.liked,
18023
- disliked: result.disliked
18025
+ likes: optimistic.likes,
18026
+ dislikes: optimistic.dislikes,
18027
+ liked: optimistic.liked,
18028
+ disliked: optimistic.disliked
18024
18029
  }))
18025
18030
  );
18031
+ try {
18032
+ await dataSource.toggleLike(comment.id);
18033
+ } catch {
18034
+ setComments((prev) => updateComment(prev, comment.id, () => comment));
18035
+ }
18026
18036
  }
18027
18037
  async function handleDislike(comment) {
18028
- const result = await dataSource.toggleDislike(comment.id);
18038
+ const optimistic = {
18039
+ liked: false,
18040
+ disliked: !comment.disliked,
18041
+ likes: comment.liked ? Math.max(comment.likes - 1, 0) : comment.likes,
18042
+ dislikes: comment.disliked ? comment.dislikes - 1 : comment.dislikes + 1
18043
+ };
18029
18044
  setComments(
18030
18045
  (prev) => updateComment(prev, comment.id, (item) => ({
18031
18046
  ...item,
18032
- likes: result.likes,
18033
- dislikes: result.dislikes,
18034
- liked: result.liked,
18035
- disliked: result.disliked
18047
+ likes: optimistic.likes,
18048
+ dislikes: optimistic.dislikes,
18049
+ liked: optimistic.liked,
18050
+ disliked: optimistic.disliked
18036
18051
  }))
18037
18052
  );
18053
+ try {
18054
+ await dataSource.toggleDislike(comment.id);
18055
+ } catch {
18056
+ setComments((prev) => updateComment(prev, comment.id, () => comment));
18057
+ }
18038
18058
  }
18039
18059
  if (loading || isLoadingComments) {
18040
18060
  return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-6", children: "Loading comments..." });