Files
kredits-web/app/components/user-avatar/component.js
2026-07-25 19:06:18 +02:00

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 '';
}
})
});