ui/app/components/identity-block/component.js

77 lines
1.8 KiB
JavaScript

import Ember from 'ember';
import C from 'ui/utils/constants';
export default Ember.Component.extend({
// Identity or externalId+externalIdType
identity : null,
externalIdType : null,
externalId : null,
identityNotParsed : null,
avatar : true,
link : true,
size : 35,
loading : false,
init() {
this._super(...arguments);
var eType = this.get('externalIdType');
var eId = this.get('externalId');
var id = this.get('identityNotParsed');
if ( !id && eType && eId ) {
id =`1i!${eType}:${eId}`;
}
if ( !this.get('identity') )
{
if ( id )
{
this.set('loading', true);
this.get('userStore').find('identity', id).then((identity) => {
if ( this.isDestroyed || this.isDestroying ) {
return;
}
this.set('identity', identity);
}).catch((/*err*/) => {
// Do something..
}).finally(() => {
if ( this.isDestroyed || this.isDestroying ) {
return;
}
this.set('loading', false);
});
}
}
},
classNames: ['gh-block'],
attributeBindings: ['aria-label:identity.name'],
avatarSrc: Ember.computed.alias('identity.profilePicture'),
url: Ember.computed.alias('identity.profileUrl'),
login: Ember.computed.alias('identity.login'),
displayDescription: function() {
var out;
var name = this.get('identity.name');
if ( this.get('identity.externalIdType') === C.PROJECT.TYPE_GITHUB_TEAM )
{
out = name.replace(/:.*/,'') + ' team';
}
else
{
if (name) {
out = name;
} else {
out = this.get('identity.externalId');
}
}
return out;
}.property('identity.{externalIdType,name,externalId}'),
});