From 49e91ec7d068fa7b98576207696d2192418baf5b Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Sun, 20 Sep 2009 15:14:46 +0000 Subject: [PATCH] Added realtime streams for all and showstream timelines --- plugins/Meteor/meteorupdater.js | 11 +++++++++- plugins/Realtime/RealtimePlugin.php | 34 ++++++++++++++++------------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/plugins/Meteor/meteorupdater.js b/plugins/Meteor/meteorupdater.js index 2e688336f1..e8bca3eb49 100644 --- a/plugins/Meteor/meteorupdater.js +++ b/plugins/Meteor/meteorupdater.js @@ -7,8 +7,17 @@ var MeteorUpdater = function() init: function(server, port, timeline) { + var screen_name; + Meteor.callbacks["process"] = function(data) { - RealtimeUpdate.receive(JSON.parse(data)); + var d = JSON.parse(data); + screen_name = d['user']['screen_name']; + + if (timeline == 'public' || + $('address .url')[0].href+screen_name+'/all' == window.location.href || + $('address .url')[0].href+screen_name == window.location.href) { + RealtimeUpdate.receive(d); + } }; Meteor.host = server; diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php index 82eca3d08c..1703ef0995 100644 --- a/plugins/Realtime/RealtimePlugin.php +++ b/plugins/Realtime/RealtimePlugin.php @@ -63,20 +63,22 @@ class RealtimePlugin extends Plugin { $path = null; - switch ($action->trimmed('action')) { - case 'public': - $path = array('public'); - break; - case 'tag': - $tag = $action->trimmed('tag'); - if (!empty($tag)) { - $path = array('tag', $tag); - } else { + $a = $action->trimmed('action'); + + switch ($a) { + case 'public': case 'all': case 'replies': case 'showstream': + $path = array($a); + break; + case 'tag': + $tag = $action->trimmed('tag'); + if (!empty($tag)) { + $path = array('tag', $tag); + } else { + return true; + } + break; + default: return true; - } - break; - default: - return true; } $timeline = $this->_pathToChannel($path); @@ -108,11 +110,13 @@ class RealtimePlugin extends Plugin { $paths = array(); - // XXX: Add other timelines; this is just for the public one + // TODO: Replies timeline if ($notice->is_local || ($notice->is_local == 0 && !common_config('public', 'localonly'))) { - $paths[] = array('public'); + foreach (array('public', 'all', 'replies', 'showstream') as $a) { + $paths[] = array($a); + } } $tags = $this->getNoticeTags($notice);