diff --git a/app/models/post.rb b/app/models/post.rb index 67801f9d8..3598dbc34 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -23,7 +23,7 @@ class Post after_save :notify_friends before_destroy :propagate_retraction - after_destroy :destroy_comments + after_destroy :destroy_comments, :remove_from_view def self.stream Post.sort(:created_at.desc).all @@ -53,9 +53,12 @@ class Post end def send_to_view - WebSocket.update_clients(self) + WebSocket.update_clients(self) end + def remove_from_view + WebSocket.update_clients(Retraction.for(self)) + end end diff --git a/app/models/retraction.rb b/app/models/retraction.rb index 5cc5379f0..a4d10bb59 100644 --- a/app/models/retraction.rb +++ b/app/models/retraction.rb @@ -15,4 +15,8 @@ class Retraction attr_accessor :post_id attr_accessor :person_id + def perform + Post.delete(self.post_id) + end + end diff --git a/app/views/js/_websocket_js.haml b/app/views/js/_websocket_js.haml index bd7818824..cc31c3b31 100644 --- a/app/views/js/_websocket_js.haml +++ b/app/views/js/_websocket_js.haml @@ -15,13 +15,19 @@ function onPageOne() { var c = document.location.search.charAt(document.location.search.length-1); - return ((c =='') || (c== '1')) - } + return ((c =='') || (c== '1')); + } - if (obj['class']=="comments"){ + if (obj['class']=="retractions"){ + var post_id = obj['post_id']; + $('#' + post_id ).fadeOut(500, function(){ + $(this).remove; + }); + + }else if (obj['class']=="comments"){ var post_id = obj['post_id'] - $('#'+ obj['post_id'] + ' .comment_set li:last' ).before( + $('#'+ post_id + ' .comment_set li:last' ).before( $(obj['html']).fadeIn("fast", function(){}) ) }else if(((location.href.indexOf(obj['class']) != -1 ) || (location.pathname == '/')) && onPageOne()) { diff --git a/lib/common.rb b/lib/common.rb index be199cdc0..6fc51ff2c 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -32,7 +32,9 @@ module Diaspora objects.each do |p| if p.is_a? Retraction - Post.delete( p.post_id ) + + p.perform + #This line checks if the sender was in the database, among other things? elsif p.respond_to?(:person) && !(p.person.nil?) #WTF p.save diff --git a/lib/socket_render.rb b/lib/socket_render.rb index acdb01f71..8d77f4c6a 100644 --- a/lib/socket_render.rb +++ b/lib/socket_render.rb @@ -14,7 +14,7 @@ module SocketRenderer def self.view_hash(object) begin - v = view_for(object) + v = view_for(object) unless object.is_a? Retraction rescue Exception => e puts "in failzord " + v.inspect @@ -34,7 +34,7 @@ module SocketRenderer if object.is_a? Post object.id else - object.post.id + object.post_id end end end