Try to prevent insertion of a post or reply multiple times.
[Sone.git] / src / main / resources / static / javascript / sone.js
index c02e240..7d7bcb5 100644 (file)
@@ -611,6 +611,10 @@ function loadNewPost(postId) {
        loadedPosts[postId] = true;
        $.getJSON("ajax/getPost.ajax", { "post" : postId }, function(data, textStatus) {
                if ((data != null) && data.success) {
+                       /* maybe weird timing stuff ensues. */
+                       if (data.post.id in loadedPosts) {
+                               return;
+                       }
                        var firstOlderPost = null;
                        $("#sone .post").each(function() {
                                if (getPostTime(this) < data.post.time) {
@@ -618,9 +622,6 @@ function loadNewPost(postId) {
                                        return false;
                                }
                        });
-                       newPost = $(data.post.html).addClass("hidden").click(function() {
-                               markPostAsKnown(this);
-                       });
                        if (firstOlderPost != null) {
                                newPost.insertBefore(firstOlderPost);
                        } else {
@@ -641,6 +642,10 @@ function loadNewReply(replyId) {
        $.getJSON("ajax/getReply.ajax", { "reply": replyId }, function(data, textStatus) {
                /* find post. */
                if ((data != null) && data.success) {
+                       /* maybe weird timing stuff ensues. */
+                       if (data.reply.id in loadedReplies) {
+                               return;
+                       }
                        $("#sone .post#" + data.reply.postId).each(function() {
                                var firstNewerReply = null;
                                $(this).find(".replies .reply").each(function() {
@@ -649,9 +654,6 @@ function loadNewReply(replyId) {
                                                return false;
                                        }
                                });
-                               newReply = $(data.reply.html).addClass("hidden").click(function() {
-                                       markPostAsKnown(getPostElement(this));
-                               });
                                if (firstNewerReply != null) {
                                        newReply.insertBefore(firstNewerReply);
                                } else {