From d20421cb70c4bda51fdaf59f28c3a060b59bb0cd Mon Sep 17 00:00:00 2001 From: Alina Beck Date: Tue, 21 Jan 2020 13:26:14 +0300 Subject: [PATCH] clean up UserAvatar a little --- .../generic/UserAvatar/UserAvatar.spec.js | 10 +- .../_new/generic/UserAvatar/UserAvatar.vue | 96 +++++++++---------- 2 files changed, 52 insertions(+), 54 deletions(-) diff --git a/webapp/components/_new/generic/UserAvatar/UserAvatar.spec.js b/webapp/components/_new/generic/UserAvatar/UserAvatar.spec.js index 77f7909a0..61f9977ef 100644 --- a/webapp/components/_new/generic/UserAvatar/UserAvatar.spec.js +++ b/webapp/components/_new/generic/UserAvatar/UserAvatar.spec.js @@ -51,13 +51,13 @@ describe('UserAvatar.vue', () => { }) it('displays user initials', () => { - expect(wrapper.find('.no-image').text()).toEqual('MR') + expect(wrapper.find('.initials').text()).toEqual('MR') }) it('displays no more than 3 initials', () => { propsData = { user: { name: 'Ana Paula Nunes Marques' } } wrapper = Wrapper() - expect(wrapper.find('.no-image').text()).toEqual('APN') + expect(wrapper.find('.initials').text()).toEqual('APN') }) }) @@ -65,6 +65,7 @@ describe('UserAvatar.vue', () => { beforeEach(() => { propsData = { user: { + name: 'Not Anonymous', avatar: '/avatar.jpg', }, } @@ -72,7 +73,7 @@ describe('UserAvatar.vue', () => { }) it('adds a prefix to load the image from the uploads service', () => { - expect(wrapper.find('img').attributes('src')).toBe('/api/avatar.jpg') + expect(wrapper.find('.image').attributes('src')).toBe('/api/avatar.jpg') }) }) @@ -80,6 +81,7 @@ describe('UserAvatar.vue', () => { beforeEach(() => { propsData = { user: { + name: 'Not Anonymous', avatar: 'https://s3.amazonaws.com/uifaces/faces/twitter/sawalazar/128.jpg', }, } @@ -88,7 +90,7 @@ describe('UserAvatar.vue', () => { it('keeps the avatar URL as is', () => { // e.g. our seeds have absolute image URLs - expect(wrapper.find('img').attributes('src')).toBe( + expect(wrapper.find('.image').attributes('src')).toBe( 'https://s3.amazonaws.com/uifaces/faces/twitter/sawalazar/128.jpg', ) }) diff --git a/webapp/components/_new/generic/UserAvatar/UserAvatar.vue b/webapp/components/_new/generic/UserAvatar/UserAvatar.vue index 69890bf66..c29f8e402 100644 --- a/webapp/components/_new/generic/UserAvatar/UserAvatar.vue +++ b/webapp/components/_new/generic/UserAvatar/UserAvatar.vue @@ -1,8 +1,13 @@ @@ -12,77 +17,68 @@ export default { props: { size: { type: String, - default: 'base', + required: false, validator: value => { - return value.match(/(small|base|large)/) + return value.match(/(small|large)/) }, }, - user: { type: Object, default: null }, - }, - data() { - return { - error: false, - } + user: { + type: Object, + default: null, + }, }, computed: { isAnonymous() { return !this.user || !this.user.name || this.user.name.toLowerCase() === 'anonymous' }, - hasImage() { - return Boolean(this.user && this.user.avatar) - }, userInitials() { - const { name } = this.user || 'Anonymous' - const namesArray = name.split(/[ -]/) - let initials = '' - for (var i = 0; i < namesArray.length; i++) initials += namesArray[i].charAt(0) - if (initials.length > 3 && /[A-Z]/.test(initials)) initials = initials.replace(/[a-z]+/g, '') - return initials.substr(0, 3).toUpperCase() - }, - }, - methods: { - onError() { - this.error = true + if (this.isAnonymous) return '' + + return this.user.name + .match(/\b\w/g) + .join('') + .substring(0, 3) + .toUpperCase() }, }, } +