Uploadr extension extensions 2008/09/07
Getting re-acquainted with Flickr Uploadr, I discovered a sorely missing piece of the Extension API. There are plenty of hooks to catch higher-level events than clicks and mouseovers — things like logins, uploads and adding photos. However, there is no way to store persistent data and associate it with a certain Flickr user. Here is a way:
var userinfo = { set: function(k, v) { // Only allow userinfo if they're signed into Flickr if (!users.nsid) { return false; } // It's just a hash for storing whatever you want var u = users.list[users.nsid]; u.userinfo = u.userinfo || {}; u.userinfo[k] = v; return true; }, get: function(k) { if (!users.nsid) { return undefined; } if (!users.list[users.nsid].userinfo) { return undefined; } return users.list[users.nsid].userinfo[k]; }, unset: function(k) { if (!users.nsid) { return true; } if (!users.list[users.nsid].userinfo) { return true; } delete users.list[users.nsid].userinfo[k]; return true; } };
Another thing I found missing was an after_logout
event. So
I monkeypatched one:
users.old_logout = users.logout; users.logout = function(save) { users.old_logout(save); extension.after_logout.exec(); }; extension.after_logout = new extension.Handler(); extension.after_logout.add(function() { Cc['@mozilla.org/consoleservice;1'].getService(Ci.nsIConsoleService) .logStringMessage('after_logout!'); });
T-minus five days and I've got my development environment ready to go. I'll be at Yahoo! Open Hack Day September 12-13 in Sunnyvale, hacking on Uploadr. Hopefully others will join me in creating some cool extensions. Stop by and say hello.
Comments (0)