1
0
Fork 0

[bugfix] DataApiMediator: Wait for stack to clear before updating options

master
Mike Gerwitz 2018-08-10 15:38:07 -04:00
commit f6c5862168
2 changed files with 19 additions and 13 deletions

View File

@ -166,22 +166,26 @@ module.exports = Class( 'DataApiMediator',
: this._getDefaultValue( val_label )
);
indexes.forEach( ( _, i ) =>
group.setOptions( name, i, val_label, existing[ i ] )
);
const update = this._populateWithMap(
dapi_manager, name, indexes, quote
);
update[ name ] = field_update;
// allow the stack to clear before setting data to allow any
// existing bucket processing to complete before hooks are kicked
// off yet again (which, in practice, could otherwise result in
// infinite recursion depending on what the hooks are doing)
setTimeout( () => quote.setData( update ) );
// infinite recursion depending on what the hooks are doing), and to
// allow the UI to update with any new elements we might be about to
// populate
setTimeout( () =>
{
indexes.forEach( ( _, i ) =>
group.setOptions( name, i, val_label, existing[ i ] )
);
const update = this._populateWithMap(
dapi_manager, name, indexes, quote
);
update[ name ] = field_update;
quote.setData( update );
} );
},

View File

@ -368,6 +368,8 @@ describe( "DataApiMediator", () =>
[name]: {
setOptions( given_name, given_index, given_data, given_cur )
{
expect( stack_cleared ).to.be.true;
// index is implicitly tested by the given_cur line
expect( given_name ).to.equal( name );
expect( given_data ).to.deep.equal( val_label );