diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index aa0e618ef..b0b4eaea7 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -3,8 +3,10 @@ class GroupsController < ApplicationController def index @posts = current_user.visible_posts(:by_members_of => :all).paginate :page => params[:page], :order => 'created_at DESC' - @group = :all @friends = current_user.friends + + @groups = current_user.groups.find_all_by_id(params[:group_ids]) if params[:group_ids] + @groups ||= current_user.groups end def create diff --git a/app/controllers/sockets_controller.rb b/app/controllers/sockets_controller.rb index cdb2b5c2e..2d5ae315a 100644 --- a/app/controllers/sockets_controller.rb +++ b/app/controllers/sockets_controller.rb @@ -9,7 +9,7 @@ class SocketsController < ApplicationController def outgoing(uid,object,opts={}) @_request = ActionDispatch::Request.new({}) - Diaspora::WebSocket.push_to_user(uid, action_hash(uid, object, :group_id => opts[:group_id])) + Diaspora::WebSocket.push_to_user(uid, action_hash(uid, object, opts)) end end diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index 3cacb1a55..1fc0ac9d1 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -7,6 +7,7 @@ class StatusMessagesController < ApplicationController if @status_message.created_at flash[:notice] = "Successfully created status message." + render :nothing => true else render :action => 'new' end diff --git a/app/helpers/sockets_helper.rb b/app/helpers/sockets_helper.rb index d4765feb7..3ac42f740 100644 --- a/app/helpers/sockets_helper.rb +++ b/app/helpers/sockets_helper.rb @@ -13,8 +13,8 @@ module SocketsHelper Rails.logger.error("web socket view rendering failed for object #{object.inspect}.") raise e end - action_hash = {:class =>object.class.to_s.underscore.pluralize, :group_id => opts[:group_id] , :html => v, :post_id => obj_id(object)} - + action_hash = {:class =>object.class.to_s.underscore.pluralize, :html => v, :post_id => obj_id(object)} + action_hash.merge! opts if object.is_a? Photo action_hash[:photo_hash] = object.thumb_hash elsif object.is_a? StatusMessage diff --git a/app/models/user.rb b/app/models/user.rb index b38bab105..b9beb0409 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -62,10 +62,10 @@ class User group.save target_people = target_people | group.people } + + post.socket_to_uid(id, :group_ids => groups.map{|g| g.id}) if post.respond_to?(:socket_to_uid) post.push_to( target_people ) - post.socket_to_uid(id) if post.respond_to?(:socket_to_uid) - self.raw_visible_posts << post self.save post diff --git a/app/views/js/_websocket_js.haml b/app/views/js/_websocket_js.haml index 282a07624..5305547cb 100644 --- a/app/views/js/_websocket_js.haml +++ b/app/views/js/_websocket_js.haml @@ -9,7 +9,8 @@ //Attach onmessage to websocket ws.onmessage = function(evt) { var obj = jQuery.parseJSON(evt.data); - debug("got a " + obj['class'] + " for group " + obj['group_id']); + console.log(obj) + debug("got a " + obj['class'] + " for groups " + obj['group_ids']); if (obj['class']=="retractions"){ processRetraction(obj['post_id']); @@ -19,10 +20,8 @@ }else if (obj['class']=='photos' && onPageForClass('albums')){ processPhotoInAlbum(obj['photo_hash']) - }else if (obj['class']=='status_messages'){ - processStatusMessage(obj['class'], obj['html'], obj['status_message_hash'], obj['group_id'], obj['mine?']) }else{ - processPost(obj['class'], obj['html'], obj['group_id'], obj['mine?']) + processPost(obj['class'], obj['html'], obj['group_ids']) } @@ -33,69 +32,68 @@ debug("connected..."); }; - function processRetraction(post_id){ - $('#' + post_id ).fadeOut(500, function(){ - $(this).remove; - }); - } - function processComment(post_id, html){ - post = $('#' + post_id)[0] - $(' .comment_set li:last', post ).before( - $(html).fadeIn("fast", function(){}) - ); - toggler = $('.show_post_comments', post) - toggler.html( - toggler.html().replace(/\d/,$('.comment_set', post)[0].childElementCount -1)); - } - - function processPost(className, html, groupId, mineBool){ - if(mineBool || onPageForClass(className) || onPageForGroup(groupId)){ - $("#stream").prepend( - $(html).fadeIn("fast", function(){ - $("#stream label:first").inFieldLabels(); - }) - ); - } - } - - function processStatusMessage(className, html, messageHash, groupId, mineBool){ - processPost(className, html, groupId, mineBool); - console.log(messageHash) - if(messageHash['mine?']){ - updateMyLatestStatus(messageHash); - } - } - - function updateMyLatestStatus(messageHash){ - $("#latest_message").text(messageHash['text']); - $("#latest_message_time").text(' - just now'); - } - - function processPhotoInAlbum(photoHash){ - if (location.href.indexOf(photoHash['album_id']) == -1){ - return ; - } - html = "