提交 8a5c95d2 编写于 作者: F Filipa Lacerda

Merge branch 'issue-boards-no-avatar' into 'master'

Fixed avatar not displaying in issue boards

Closes #31428

See merge request !10977
...@@ -59,7 +59,8 @@ $(() => { ...@@ -59,7 +59,8 @@ $(() => {
issueLinkBase: $boardApp.dataset.issueLinkBase, issueLinkBase: $boardApp.dataset.issueLinkBase,
rootPath: $boardApp.dataset.rootPath, rootPath: $boardApp.dataset.rootPath,
bulkUpdatePath: $boardApp.dataset.bulkUpdatePath, bulkUpdatePath: $boardApp.dataset.bulkUpdatePath,
detailIssue: Store.detail detailIssue: Store.detail,
defaultAvatar: $boardApp.dataset.defaultAvatar,
}, },
computed: { computed: {
detailIssueVisible () { detailIssueVisible () {
...@@ -82,7 +83,7 @@ $(() => { ...@@ -82,7 +83,7 @@ $(() => {
gl.boardService.all() gl.boardService.all()
.then((resp) => { .then((resp) => {
resp.json().forEach((board) => { resp.json().forEach((board) => {
const list = Store.addList(board); const list = Store.addList(board, this.defaultAvatar);
if (list.type === 'closed') { if (list.type === 'closed') {
list.position = Infinity; list.position = Infinity;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
import Vue from 'vue'; import Vue from 'vue';
class ListIssue { class ListIssue {
constructor (obj) { constructor (obj, defaultAvatar) {
this.globalId = obj.id; this.globalId = obj.id;
this.id = obj.iid; this.id = obj.iid;
this.title = obj.title; this.title = obj.title;
...@@ -19,7 +19,7 @@ class ListIssue { ...@@ -19,7 +19,7 @@ class ListIssue {
this.position = obj.relative_position || Infinity; this.position = obj.relative_position || Infinity;
if (obj.assignee) { if (obj.assignee) {
this.assignee = new ListUser(obj.assignee); this.assignee = new ListUser(obj.assignee, defaultAvatar);
} }
if (obj.milestone) { if (obj.milestone) {
......
...@@ -6,7 +6,7 @@ import queryData from '../utils/query_data'; ...@@ -6,7 +6,7 @@ import queryData from '../utils/query_data';
const PER_PAGE = 20; const PER_PAGE = 20;
class List { class List {
constructor (obj) { constructor (obj, defaultAvatar) {
this.id = obj.id; this.id = obj.id;
this._uid = this.guid(); this._uid = this.guid();
this.position = obj.position; this.position = obj.position;
...@@ -18,6 +18,7 @@ class List { ...@@ -18,6 +18,7 @@ class List {
this.loadingMore = false; this.loadingMore = false;
this.issues = []; this.issues = [];
this.issuesSize = 0; this.issuesSize = 0;
this.defaultAvatar = defaultAvatar;
if (obj.label) { if (obj.label) {
this.label = new ListLabel(obj.label); this.label = new ListLabel(obj.label);
...@@ -106,7 +107,7 @@ class List { ...@@ -106,7 +107,7 @@ class List {
createIssues (data) { createIssues (data) {
data.forEach((issueObj) => { data.forEach((issueObj) => {
this.addIssue(new ListIssue(issueObj)); this.addIssue(new ListIssue(issueObj, this.defaultAvatar));
}); });
} }
......
/* eslint-disable no-unused-vars */
class ListUser { class ListUser {
constructor(user) { constructor(user, defaultAvatar) {
this.id = user.id; this.id = user.id;
this.name = user.name; this.name = user.name;
this.username = user.username; this.username = user.username;
this.avatar = user.avatar_url; this.avatar = user.avatar_url || defaultAvatar;
} }
} }
......
...@@ -23,8 +23,8 @@ gl.issueBoards.BoardsStore = { ...@@ -23,8 +23,8 @@ gl.issueBoards.BoardsStore = {
this.state.lists = []; this.state.lists = [];
this.filter.path = gl.utils.getUrlParamsArray().join('&'); this.filter.path = gl.utils.getUrlParamsArray().join('&');
}, },
addList (listObj) { addList (listObj, defaultAvatar) {
const list = new List(listObj); const list = new List(listObj, defaultAvatar);
this.state.lists.push(list); this.state.lists.push(list);
return list; return list;
......
...@@ -9,6 +9,7 @@ module BoardsHelper ...@@ -9,6 +9,7 @@ module BoardsHelper
issue_link_base: namespace_project_issues_path(@project.namespace, @project), issue_link_base: namespace_project_issues_path(@project.namespace, @project),
root_path: root_path, root_path: root_path,
bulk_update_path: bulk_update_namespace_project_issues_path(@project.namespace, @project), bulk_update_path: bulk_update_namespace_project_issues_path(@project.namespace, @project),
default_avatar: image_path(default_avatar)
} }
end end
end end
---
title: Fixed avatar not display on issue boards when Gravatar is disabled
merge_request:
author:
...@@ -146,6 +146,27 @@ describe('Issue card component', () => { ...@@ -146,6 +146,27 @@ describe('Issue card component', () => {
).not.toBeNull(); ).not.toBeNull();
}); });
}); });
describe('assignee default avatar', () => {
beforeEach((done) => {
component.issue.assignee = new ListUser({
id: 1,
name: 'testing 123',
username: 'test',
}, 'default_avatar');
Vue.nextTick(done);
});
it('displays defaults avatar if users avatar is null', () => {
expect(
component.$el.querySelector('.card-assignee img'),
).not.toBeNull();
expect(
component.$el.querySelector('.card-assignee img').getAttribute('src'),
).toBe('default_avatar');
});
});
}); });
describe('labels', () => { describe('labels', () => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册