jam-cloud/web/app/assets/javascripts/user_dropdown.js

102 lines
3.1 KiB
JavaScript

(function(context,$) {
/** Javascript for managing the (account dropdown) */
"use strict";
context.JK = context.JK || {};
context.JK.UserDropdown = function(app) {
var logger = context.JK.logger;
var rest = new JK.Rest();
var userMe = null;
var invitationDialog = null;
function menuHoverIn() {
$('ul.shortcuts', this).show();
}
function menuHoverOut() {
$('ul.shortcuts', this).hide();
}
function events() {
$('.userinfo').hoverIntent(menuHoverIn, menuHoverOut);
$('.userinfo .invite-friends .menuheader').on('click', function(e) {
$(this).closest('li').css('height', 'auto').find('ul').toggle();
e.stopPropagation();
return false;
});
$('.invite-friends .google-invite a').on('click', function(e) {
invitationDialog.showGoogleDialog();
});
$('.invite-friends .email-invite a').on('click', function(e) {
invitationDialog.showEmailDialog();
});
$('.invite-friends .facebook-invite a').on('click', function(e) {
invitationDialog.showFacebookDialog(e);
});
$('#header-avatar').on('avatar_changed', function(event, newAvatarUrl) {
updateAvatar(newAvatarUrl);
event.preventDefault();
return false;
})
}
function loadMe() {
if(!context.JK.currentUserId) {
return;
}
$.ajax({
url: '/api/users/' + context.JK.currentUserId
}).done(function(r) {
userMe = r;
// TODO - Setting global variable for local user.
context.JK.userMe = r;
updateHeader();
handleWhatsNext(userMe);
}).fail(app.ajaxError);
}
function updateHeader() {
$('#user').html(userMe.name);
showAvatar();
}
function handleWhatsNext(userProfile) {
if(gon.isNativeClient && userProfile.show_whats_next) {
app.layout.showDialog('whatsNext');
}
}
// initially show avatar
function showAvatar() {
var photoUrl = context.JK.resolveAvatarUrl(userMe.photo_url);
$('#header-avatar').attr('src', photoUrl);
}
// handle update avatar event
function updateAvatar(avatar_url) {
var photoUrl = context.JK.resolveAvatarUrl(avatar_url);
var avatar = $(new Image());
avatar.attr('src', photoUrl + '?cache_bust=' + new Date().getTime());
avatar.attr('alt', "Avatar");
avatar.attr('id', 'header-avatar');
$('#header-avatar').replaceWith(avatar);
}
this.initialize = function(invitationDialogInstance) {
events();
invitationDialog = invitationDialogInstance;
loadMe();
}
this.loadMe = loadMe;
}
})(window,jQuery);