]> git.openstreetmap.org Git - rails.git/commitdiff
Refactor message mark/delete listeners
authorAnton Khorev <tony29@yandex.ru>
Fri, 11 Aug 2023 16:57:56 +0000 (19:57 +0300)
committerAnton Khorev <tony29@yandex.ru>
Fri, 11 Aug 2023 16:57:56 +0000 (19:57 +0300)
app/assets/javascripts/messages.js

index 0cae79a58cd2924255f0daead205e9bf7effb033..8c30f9b34a726b2c399d2ab5eb473f8bb2029cb7 100644 (file)
@@ -1,30 +1,32 @@
 $(document).ready(function () {
   $(".inbox-mark-unread").on("ajax:success", function (event, data) {
 $(document).ready(function () {
   $(".inbox-mark-unread").on("ajax:success", function (event, data) {
-    $("#inboxanchor").remove();
-    $(".user-button").before(data.inboxanchor);
-
-    $("#inbox-count").replaceWith(data.inbox_count);
-
-    $(this).parents(".inbox-row").removeClass("inbox-row").addClass("inbox-row-unread");
+    updateHtml(data);
+    updateReadState(this, false);
   });
 
   $(".inbox-mark-read").on("ajax:success", function (event, data) {
   });
 
   $(".inbox-mark-read").on("ajax:success", function (event, data) {
-    $("#inboxanchor").remove();
-    $(".user-button").before(data.inboxanchor);
+    updateHtml(data);
+    updateReadState(this, true);
+  });
 
 
-    $("#inbox-count").replaceWith(data.inbox_count);
+  $(".inbox-destroy").on("ajax:success", function (event, data) {
+    updateHtml(data);
 
 
-    $(this).parents(".inbox-row-unread").removeClass("inbox-row-unread").addClass("inbox-row");
+    $(this).closest("tr").fadeOut(800, "linear", function () {
+      $(this).remove();
+    });
   });
 
   });
 
-  $(".inbox-destroy").on("ajax:success", function (event, data) {
+  function updateHtml(data) {
     $("#inboxanchor").remove();
     $(".user-button").before(data.inboxanchor);
 
     $("#inbox-count").replaceWith(data.inbox_count);
     $("#inboxanchor").remove();
     $(".user-button").before(data.inboxanchor);
 
     $("#inbox-count").replaceWith(data.inbox_count);
+  }
 
 
-    $(this).parents(".inbox-row, .inbox-row-unread").fadeOut(800, "linear", function () {
-      $(this).remove();
-    });
-  });
+  function updateReadState(target, isRead) {
+    $(target).closest("tr")
+      .toggleClass("inbox-row", isRead)
+      .toggleClass("inbox-row-unread", !isRead);
+  }
 });
 });