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)