diff --git a/changelog/13038.txt b/changelog/13038.txt new file mode 100644 index 000000000..cf20decd6 --- /dev/null +++ b/changelog/13038.txt @@ -0,0 +1,3 @@ +```release-note:bug +ui: Fixes issue with the number of PGP Key inputs not matching the key shares number in the initialization form on change +``` \ No newline at end of file diff --git a/ui/app/components/pgp-list.js b/ui/app/components/pgp-list.js index 4fb241561..29f3fad04 100644 --- a/ui/app/components/pgp-list.js +++ b/ui/app/components/pgp-list.js @@ -31,10 +31,7 @@ export default Component.extend({ list = this.listData.slice(0, this.listLength); } else if (this.listLength > this.listData.length) { // add to the current list by creating a new list and copying over existing list - list = this.newList(this.listLength); - if (this.listData.length) { - list.splice(0, this.listData.length, ...this.listData); - } + list = [...this.listData, ...this.newList(this.listLength - this.listData.length)]; } this.set('listData', list || this.listData); this.onDataUpdate((list || this.listData).compact().map(k => k.value)); diff --git a/ui/tests/integration/components/pgp-list-test.js b/ui/tests/integration/components/pgp-list-test.js index 9727c344a..4c634a829 100644 --- a/ui/tests/integration/components/pgp-list-test.js +++ b/ui/tests/integration/components/pgp-list-test.js @@ -128,4 +128,26 @@ module('Integration | Component | pgp list', function(hooks) { 'lengthening the list with an array with one base64 converted files' ); }); + + test('it should render correct amount of file components on listLength change', async function(assert) { + assert.expect(4); + + this.set('listLength', null); + + await render(hbs` + + `); + [1, 5, 3, 0].forEach(count => { + this.set('listLength', count); + if (count) { + assert + .dom('[data-test-pgp-file]') + .exists({ count }, `Correct number of file inputs render when listLength is updated to ${count}`); + } else { + assert.dom('[data-test-empty-text]').exists('Placeholder renders when list length is zero'); + } + }); + }); });