Render nothing on status_messages create, Websockets now honestly
support multiple groups.
This commit is contained in:
parent
abf48cefd4
commit
db33d94f07
8 changed files with 79 additions and 77 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -62,9 +62,9 @@ class User
|
|||
group.save
|
||||
target_people = target_people | group.people
|
||||
}
|
||||
post.push_to( target_people )
|
||||
|
||||
post.socket_to_uid(id) if post.respond_to?(:socket_to_uid)
|
||||
post.socket_to_uid(id, :group_ids => groups.map{|g| g.id}) if post.respond_to?(:socket_to_uid)
|
||||
post.push_to( target_people )
|
||||
|
||||
self.raw_visible_posts << post
|
||||
self.save
|
||||
|
|
|
|||
|
|
@ -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,6 +32,8 @@
|
|||
debug("connected...");
|
||||
};
|
||||
|
||||
|
||||
});
|
||||
function processRetraction(post_id){
|
||||
$('#' + post_id ).fadeOut(500, function(){
|
||||
$(this).remove;
|
||||
|
|
@ -49,8 +50,8 @@
|
|||
toggler.html().replace(/\d/,$('.comment_set', post)[0].childElementCount -1));
|
||||
}
|
||||
|
||||
function processPost(className, html, groupId, mineBool){
|
||||
if(mineBool || onPageForClass(className) || onPageForGroup(groupId)){
|
||||
function processPost(className, html, groupIds){
|
||||
if(onPageForGroups(groupIds)){
|
||||
$("#stream").prepend(
|
||||
$(html).fadeIn("fast", function(){
|
||||
$("#stream label:first").inFieldLabels();
|
||||
|
|
@ -59,19 +60,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
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 ;
|
||||
|
|
@ -90,6 +78,17 @@
|
|||
return ((location.href.indexOf(className) != -1 ) || (location.pathname == '/')) && onPageOne();
|
||||
}
|
||||
|
||||
function onPageForGroups(groupIds){
|
||||
if(location.pathname == '/' && onPageOne()){
|
||||
return true
|
||||
}
|
||||
var found = false;
|
||||
$.each(groupIds, function(index, value) {
|
||||
if(onPageForGroup(value)){ found = true };
|
||||
});
|
||||
return found;
|
||||
}
|
||||
|
||||
function onPageForGroup(groupId){
|
||||
return (location.href.indexOf(groupId) != -1 )
|
||||
}
|
||||
|
|
@ -98,4 +97,3 @@
|
|||
var c = document.location.search.charAt(document.location.search.length-1);
|
||||
return ((c =='') || (c== '1'));
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
development:
|
||||
debug: false
|
||||
socket_debug : false
|
||||
socket_debug : true
|
||||
socket_port: 8080
|
||||
pubsub_server: 'https://pubsubhubbub.appspot.com/'
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ module Diaspora
|
|||
end
|
||||
|
||||
def self.subscribe(uid, ws)
|
||||
Rails.logger.debug "Subscribing socket to #{User.first(:id => uid).email}"
|
||||
Rails.logger.debug "Subscribing socket to #{uid}"
|
||||
self.ensure_channel(uid)
|
||||
@channels[uid][0].subscribe{ |msg| ws.send msg }
|
||||
@channels[uid][1] += 1
|
||||
|
|
@ -32,7 +32,8 @@ module Diaspora
|
|||
|
||||
module Socketable
|
||||
def socket_to_uid(id, opts={})
|
||||
SocketsController.new.outgoing(id, self, :group_id => opts[:group_id])
|
||||
puts "#{id}, #{self}, #{opts}"
|
||||
SocketsController.new.outgoing(id, self, opts)
|
||||
end
|
||||
|
||||
def unsocket_from_uid id
|
||||
|
|
|
|||
Loading…
Reference in a new issue