@@ -142,34 +142,38 @@ class _MenuManagerBase extends _SubManagerBase {
142142 /**
143143 * Creates and sends all associated Menu RPCs
144144 * @param {MenuCell[] } cells - The menu cells that are to be sent to the head unit, including their sub-cells.
145+ * @returns {Promise } - A Promise that resolves to whether the operation was successful
145146 */
146147 _setMenuCells ( cells = [ ] ) {
147148 if ( cells === null ) {
148149 console . error ( 'MenuManagerBase - Cells list is null. Skipping...' ) ;
149- return ;
150+ return Promise . resolve ( true ) ;
150151 }
151152
152153 if ( ! this . _menuCellsAreUnique ( cells , [ ] ) ) {
153154 console . error ( 'MenuManagerBase - Not all set menu cells are unique, but that is required' ) ;
154- return ;
155+ return Promise . resolve ( false ) ;
155156 }
156157
157158 // Create a deep copy of the list so future changes by developers don't affect the algorithm logic
158159 this . _menuCells = cells . map ( cell => cell . clone ( ) ) ;
159160 const isDynamicMenuUpdateActiveBoolean = this . _isDynamicMenuUpdateActive ( this . _dynamicMenuUpdatesMode , this . _displayType ) ;
160161
161- const operation = new _MenuReplaceOperation ( this . _lifecycleManager , this . _fileManager , this . _windowCapability ,
162- this . _currentMenuConfiguration , this . _currentMenuCells , this . _menuCells , isDynamicMenuUpdateActiveBoolean , new _MenuManagerCompletionListener ( )
163- . setOnComplete ( ( success , currentMenuCells ) => {
164- this . _currentMenuCells = currentMenuCells ;
165- this . _updateMenuReplaceOperationsWithNewCurrentMenu ( ) ;
166- console . log ( 'MenuManagerBase - Finished updating menu' ) ;
167- } )
168- ) ;
169-
170- // Cancel previous MenuReplaceOperations
171- this . _cancelAllTasks ( 'MenuReplaceOperation' ) ;
172- this . _addTask ( operation ) ;
162+ return new Promise ( ( resolve ) => {
163+ const operation = new _MenuReplaceOperation ( this . _lifecycleManager , this . _fileManager , this . _windowCapability ,
164+ this . _currentMenuConfiguration , this . _currentMenuCells , this . _menuCells , isDynamicMenuUpdateActiveBoolean , new _MenuManagerCompletionListener ( )
165+ . setOnComplete ( ( success , currentMenuCells ) => {
166+ this . _currentMenuCells = currentMenuCells ;
167+ this . _updateMenuReplaceOperationsWithNewCurrentMenu ( ) ;
168+ console . log ( 'MenuManagerBase - Finished updating menu' ) ;
169+ resolve ( success ) ;
170+ } )
171+ ) ;
172+
173+ // Cancel previous MenuReplaceOperations
174+ this . _cancelAllTasks ( 'MenuReplaceOperation' ) ;
175+ this . _addTask ( operation ) ;
176+ } ) ;
173177 }
174178
175179 /**
0 commit comments