Created
April 13, 2011 12:50
-
-
Save ne-sachirou/917477 to your computer and use it in GitHub Desktop.
ダイレクトメッセージを受信したときのイベントハンドラが欲しい #AzureaScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// @author http://c4se.sakura.ne.jp/profile/ne.html | |
// @date 20110413 | |
// @license Public Domain | |
(function(k){function h(){var c,d,b,a;f.callRefresh();c=f.getItemByOrder(0);if(!(!c||c.id===e)){c=f.items;a=false;if(e){d=0;for(b=c.length;d<b;++d)if(c[d].id===e){a=true;break}}for(e=a?c[d].id:c[0].id;d--;){b=c[d].status;a=g.receiveMessage;for(var i=a.length;i--;)a[i](b)}j(h,3E5)}}var j=System.setTimeout,f=System.views.getView(2),e=0,g={receiveMessage:[]};j(h,5E3);k.DirectMessage={addEventListener:function(c,d){var b=g[c],a;if(b){for(a=b.length;a--;)b[a]===d&&b.splice(a,1);b.push(d)}},removeEventListener:function(c, | |
d){var b=g[c],a;if(b)for(a=b.length;a--;)if(b[a]===d){b.splice(a,1);break}}}})(this); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// @author http://c4se.sakura.ne.jp/profile/ne.html | |
// @date 20110413 | |
// @license Public Domain | |
// [目安箱/32 - Azurea Wiki]( http://azurea.refy.net/ja/wiki/index.php?%E7%9B%AE%E5%AE%89%E7%AE%B1%2F32 ,"ダイレクトメッセージを受信したときのイベントハンドラが欲しい") | |
(function(_scope) { | |
var setTimeout = System.setTimeout, | |
dm_view = System.views.getView(2), | |
last_dm = 0, | |
events_lists = { | |
receiveMessage: [] | |
}; | |
function addEventListener(eventname, // @param String: | |
// receiveMessage | |
callback) { // @param Function: callback(Status Object) | |
var events_list = events_lists[eventname], | |
i; | |
if (events_list) { | |
i = events_list.length; | |
while (i--) { | |
if (events_list[i] === callback) { | |
events_list.splice(i, 1); | |
} | |
} | |
events_list.push(callback); | |
} | |
} | |
function removeEventListener(eventname, // @param String: | |
// receiveMessage | |
callback) { // @param Function: | |
var events_list = events_lists[eventname], | |
i; | |
if (events_list) { | |
i = events_list.length; | |
while (i--) { | |
if (events_list[i] === callback) { | |
events_list.splice(i, 1); | |
break; | |
} | |
} | |
} | |
} | |
function runReseiveMessageEventListener(status) { // @param Status Object: | |
var events_list = events_lists.receiveMessage, | |
i = events_list.length; | |
while (i--) { | |
events_list[i](status); | |
} | |
} | |
function checkDM() { | |
var first_dm_item, items, i, len, has_last_dm; | |
dm_view.callRefresh(); | |
first_dm_item = dm_view.getItemByOrder(0); | |
if (!first_dm_item || first_dm_item.id === last_dm) { | |
return void 0; | |
} | |
items = dm_view.items; | |
has_last_dm = false; | |
if (last_dm) { | |
for (i = 0, len = items.length; i < len; ++i) { | |
if (items[i].id === last_dm) { | |
has_last_dm = true; | |
break; | |
} | |
} | |
} | |
if (has_last_dm) { | |
last_dm = items[i].id; | |
} else { | |
last_dm = items[0].id; | |
} | |
while (i--) { | |
runReseiveMessageEventListener(items[i].status); | |
} | |
setTimeout(checkDM, 300000); | |
} | |
setTimeout(checkDM, 5000); | |
_scope.DirectMessage = { | |
addEventListener: addEventListener, | |
removeEventListener: removeEventListener | |
}; | |
}(this)); |
Beta16で追加された、TwitterStream.userStreamを使って下さい。
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
cf. [目安箱/32 - Azurea Wiki](http://azurea.refy.net/ja/wiki/index.php?%E7%9B%AE%E5%AE%89%E7%AE%B1%2F32 ,"ダイレクトメッセージを受信したときのイベントハンドラが欲しい")