From 77287ec57eb4b00082c0e1936a741756d25a5f34 Mon Sep 17 00:00:00 2001 From: anekos Date: Fri, 23 Oct 2009 10:17:29 +0000 Subject: 返信補完時に自動的に status を取得しに行くようにした git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@35694 d0d07461-0603-4401-acd4-de1884942a52 --- twitter.js | 106 ++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 77 insertions(+), 29 deletions(-) diff --git a/twitter.js b/twitter.js index 06ca838..8881605 100644 --- a/twitter.js +++ b/twitter.js @@ -22,7 +22,7 @@ let PLUGIN_INFO = {NAME} The script allows you to update Twitter status from Vimperator -1.1.1 +1.2.0 http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/twitter.js Trapezoid Creative Commons @@ -48,6 +48,10 @@ let PLUGIN_INFO = liberator.modules.twitter = (function(){ var statuses = null; + var expiredStatus = false; + var autoStatusUpdate = !!parseInt(liberator.globalVariables.twitter_auto_status_update || 0); + var statusValidDuration = parseInt(liberator.globalVariables.twitter_status_valid_duration || 90); + var statusRefreshTimer; var passwordManager = Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager); var evalFunc = window.eval; try { @@ -136,15 +140,40 @@ liberator.modules.twitter = (function(){ //liberator.log(html); liberator.echo(html, true); } - function showFollowersStatus(username, password, target){ + function getFollowersStatus(username, password, target, onComplete){ // for debug //target = "otsune" + function setRefresher(){ + expiredStatus = false; + if (statusRefreshTimer) + clearTimeout(statusRefreshTimer); + statusRefreshTimer = setTimeout(function () expiredStatus = true, statusValidDuration * 1000); + } + var xhr = new XMLHttpRequest(); var endPoint = target ? "https://twitter.com/statuses/user_timeline/" + target + ".json" : "https://twitter.com/statuses/friends_timeline.json"; - xhr.open("GET", endPoint, false, username, password); + xhr.open("GET", endPoint, onComplete, username, password); + liberator.log('get!'); + if (onComplete) { + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + liberator.log('got!'); + setRefresher(); + onComplete(statuses = evalFunc(xhr.responseText) || []); + } + } + } xhr.send(null); + if (onComplete) + return; + setRefresher(); statuses = evalFunc(xhr.responseText) || []; + } + function showFollowersStatus(username, password, target){ + // for debug + //target = "otsune" + getFollowersStatus.apply(null, arguments); var html =