-# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. :javascript WebSocket.__swfLocation = "#{javascript_path 'vendor/WebSocketMain.swf'}"; $(document).ready(function(){ function debug(str){ $("#debug").append("
" + str); }; ws = new WebSocket("#{(APP_CONFIG[:socket_secure])?'wss':'ws'}://#{request.host}:#{APP_CONFIG[:socket_port]}/"); //Attach onmessage to websocket ws.onmessage = function(evt) { var obj = jQuery.parseJSON(evt.data); if(obj['notice']){ processNotification(obj['notice']); }else if (obj['class'] == 'people'){ $('#loader').hide(); debug("got a " + obj['class']); if(obj['status'] == 'fail'){ $('#request_result li:first').show().$('#message').text(obj['response']).show(); }else{ processPerson(obj['html']); } }else{ debug("got a " + obj['class'] + " for aspects " + obj['aspect_ids']); if (obj['class']=="retractions"){ processRetraction(obj['post_id']); }else if (obj['class']=="comments"){ processComment(obj['post_id'], obj['html'], {'notification':obj['notification'], 'mine?':obj['mine?'], 'my_post?':obj['my_post?']}) }else if (obj['class']=='photos' && onPageForClass('albums')){ processPhotoInAlbum(obj['photo_hash']) }else{ processPost(obj['class'], obj['html'], obj['aspect_ids']) } } }; ws.onclose = function() { debug("socket closed"); }; ws.onopen = function() { ws.send(location.pathname); debug("connected..."); }; }); function processPerson(html){ $('.people#stream').prepend(html).slideDown('slow', function(){}); var rr = $('#request_result li:first'); rr.after(html); $("#request_result [name='into']").val(rr.attr('aspect_id')); $('#request_result :nth-child(2)').slideDown('fast', function(){}); } function processNotification(html){ $('#notification').html(html).fadeIn(200).delay(4000).fadeOut(200, function(){ $(this).html("");}); } function processRetraction(post_id){ $("*[data-guid='"+post_id+"']").fadeOut(400, function(){$(this).remove()}); if($("#stream")[0].childElementCount == 0){ $("#no_posts").fadeIn(200); } } function processComment(post_id, html, opts){ post = $("*[data-guid='"+post_id+"']'"); $('.comments li:last', post ).before( $(html).fadeIn("fast", function(){}) ); toggler = $('.show_post_comments', post) if(toggler.length > 0){ toggler.html( toggler.html().replace(/\d+/,$('.comments', post)[0].childElementCount -1)); if( !$(".comments", post).is(':visible') ){ toggler.click(); } } if( !opts['mine?'] && opts['my_post?']) { processNotification(opts['notification']); } } function processPost(className, html, aspectIds){ if(onPageForAspects(aspectIds)){ var addPostToStream = function (html){ $("#stream:not('.show')").prepend( $(html).fadeIn("fast", function(){ $("#stream").find("label").first().inFieldLabels(); }) ) }; if( $("#no_posts").is(":visible") ){ $("#no_posts").fadeOut(400, addPostToStream(html)).hide(); } else { addPostToStream(html); } } } function processPhotoInAlbum(photoHash){ if (location.href.indexOf(photoHash['album_id']) == -1){ return ; } html = "