43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
import Component from '@ember/component';
|
|
import { alias } from '@ember/object/computed';
|
|
import { computed } from '@ember/object';
|
|
|
|
const SIZES = {
|
|
'small': '128', // pixels
|
|
'medium': '256',
|
|
'large': '512'
|
|
}
|
|
|
|
export default Component.extend({
|
|
contributor: null,
|
|
tagName: 'img',
|
|
classNames: ['avatar'],
|
|
classNameBindings: ['size'],
|
|
attributeBindings: ['src', 'title'],
|
|
size: 'small',
|
|
|
|
src: alias('avatarURL'),
|
|
title: alias('contributor.name'),
|
|
|
|
// Re-compute whenever the contributor reference itself changes (covers a
|
|
// previously-undefined contributor being lazily loaded later), as well as
|
|
// the github_uid property when one is present.
|
|
avatarURL: computed('contributor', 'contributor.github_uid', 'size', function() {
|
|
const contributor = this.contributor;
|
|
|
|
if (!contributor) {
|
|
return '';
|
|
}
|
|
|
|
const github_uid = contributor.github_uid;
|
|
|
|
if (github_uid) {
|
|
return `https://avatars2.githubusercontent.com/u/${github_uid}?v=3&s=${SIZES[this.size]}`;
|
|
} else {
|
|
// TODO use custom avatar
|
|
return '';
|
|
}
|
|
})
|
|
|
|
});
|