PolyGerrit: If your account does not have a name use a default name When you create an account with no name it is very hard to go to settings to change the name as the dropdown will be hidden. Lets do what gwtui does and provide a fake name so that dropdown works. Change-Id: I7a6cb6fadff6e12f02611af4020781eb7191e0f6
diff --git a/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.html b/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.html index 015cfc5..7e358fd 100644 --- a/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.html +++ b/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.html
@@ -39,7 +39,7 @@ items=[[links]] top-content=[[topContent]] horizontal-align="right"> - <span hidden$="[[_hasAvatars]]" hidden>[[account.name]]</span> + <span hidden$="[[_hasAvatars]]" hidden>[[_accountName(account, _anonymousName)]]</span> <gr-avatar account="[[account]]" hidden$="[[!_hasAvatars]]" hidden image-size="56" aria-label="Account avatar"></gr-avatar> </gr-dropdown>
diff --git a/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.js b/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.js index cbd0e19..318794f 100644 --- a/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.js +++ b/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown.js
@@ -16,18 +16,24 @@ const INTERPOLATE_URL_PATTERN = /\$\{([\w]+)\}/g; + const ANONYMOUS_NAME = 'Anonymous'; + Polymer({ is: 'gr-account-dropdown', properties: { account: Object, + _anonymousName: { + type: String, + value: ANONYMOUS_NAME, + }, links: { type: Array, computed: '_getLinks(_switchAccountUrl, _path)', }, topContent: { type: Array, - computed: '_getTopContent(account)', + computed: '_getTopContent(account, _anonymousName)', }, _path: { type: String, @@ -47,6 +53,12 @@ this._switchAccountUrl = null; } this._hasAvatars = !!(cfg && cfg.plugin && cfg.plugin.has_avatars); + + if (cfg && cfg.user && + cfg.user.anonymous_coward_name && + cfg.user.anonymous_coward_name !== 'Anonymous Coward') { + this._anonymousName = cfg.user.anonymous_coward_name; + } }); }, @@ -65,11 +77,10 @@ return links; }, - _getTopContent(account) { - // if (!account) { return []; } + _getTopContent(account, _anonymousName) { return [ - {text: account.name, bold: true}, - {text: account.email}, + {text: this._accountName(account, _anonymousName), bold: true}, + {text: account.email ? account.email : ''}, ]; }, @@ -85,5 +96,14 @@ return replacements[p1] || ''; }); }, + + _accountName(account, _anonymousName) { + if (account && account.name) { + return account.name; + } else if (account && account.email) { + return account.email; + } + return _anonymousName; + }, }); })();
diff --git a/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown_test.html b/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown_test.html index 0d1a295..d75856c 100644 --- a/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown_test.html +++ b/polygerrit-ui/app/elements/core/gr-account-dropdown/gr-account-dropdown_test.html
@@ -49,6 +49,26 @@ [{text: 'John Doe', bold: true}, {text: 'john@doe.com'}]); }); + test('test for account without a name', () => { + element.account = {id: '0001'}; + assert.deepEqual(element.topContent, + [{text: 'Anonymous', bold: true}, {text: ''}]); + }); + + test('test for account without a name but using config', () => { + element._anonymousName = 'WikiGerrit'; + element.account = {id: '0001'}; + assert.deepEqual(element.topContent, + [{text: 'WikiGerrit', bold: true}, {text: ''}]); + }); + + test('test for account name as an email', () => { + element._anonymousName = 'WikiGerrit'; + element.account = {email: 'john@doe.com'}; + assert.deepEqual(element.topContent, + [{text: 'john@doe.com', bold: true}, {text: 'john@doe.com'}]); + }); + test('switch account', () => { // No switch account link. assert.equal(element._getLinks(null).length, 2);