From bbff26da755d0da902af414e7ad9968bdd0b6d16 Mon Sep 17 00:00:00 2001 From: Andreas Blixt Date: Wed, 24 Mar 2010 22:15:40 +0100 Subject: [PATCH] Improved the jQuery user extension by having it only request user information from the API when really necessary. --- app/js/pages.intro.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/app/js/pages.intro.js b/app/js/pages.intro.js index c98d2e5..c0a1a8e 100644 --- a/app/js/pages.intro.js +++ b/app/js/pages.intro.js @@ -25,20 +25,29 @@ $.fn.frame = function (id) { }; $.fn.user = function (id) { - var user = User.get(id), img, span; + this.addClass('user').hash('user/' + id).empty(); - this.addClass('user').hash('user/' + id) - .empty() - .append(img = $('').attr({alt: '', src: '/media/loading3.gif', - width: 20, height: 20})) - .append(span = $('').text('[User#' + id + ']')); - - user.listen('load', function () { + var + user = User.get(id), + img = $('').attr({alt: '', width: 20, height: 20}).appendTo(this), + span = $('').appendTo(this), + onload = function () { img.attr('src', user.get_gravatarUrl(20)); span.text(user.get_displayName()); - }); + }; - user.load(); + // Update the user info whenever a load event is raised. + user.listen('load', onload); + + if (user.isLoaded()) { + // Simulate a load event to load the user data into the link. + onload(); + } else { + img.attr('src', '/media/loading3.gif'); + span.text('[User#' + id + ']'); + + user.load(); + } }; var