Hide drive selector modal if no available drives (#303)

If you have the drive selector modal opened, but you eject all the
available drives, the modal will be closed automatically.

Fixes: https://github.com/resin-io/etcher/issues/295
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
This commit is contained in:
Juan Cruz Viotti 2016-04-12 13:02:10 -04:00
parent 77da54431a
commit aba6e946e3
2 changed files with 34 additions and 3 deletions

View File

@ -134,6 +134,10 @@ app.controller('AppController', function(
self.selection.removeDrive(); self.selection.removeDrive();
} }
if (_.isEmpty(drives)) {
DriveSelectorService.close();
}
// Notice we only autoselect the drive if there is an image, // Notice we only autoselect the drive if there is an image,
// which means that the first step was completed successfully, // which means that the first step was completed successfully,
// otherwise the drive is selected while the drive step is disabled // otherwise the drive is selected while the drive step is disabled

View File

@ -16,7 +16,9 @@
'use strict'; 'use strict';
module.exports = function($uibModal) { module.exports = function($uibModal, $q) {
let modal = null;
/** /**
* @summary Open the drive selector widget * @summary Open the drive selector widget
@ -32,12 +34,37 @@ module.exports = function($uibModal) {
* }); * });
*/ */
this.open = function() { this.open = function() {
return $uibModal.open({ modal = $uibModal.open({
animation: true, animation: true,
templateUrl: './browser/components/drive-selector/templates/drive-selector-modal.tpl.html', templateUrl: './browser/components/drive-selector/templates/drive-selector-modal.tpl.html',
controller: 'DriveSelectorController as modal', controller: 'DriveSelectorController as modal',
size: 'sm' size: 'sm'
}).result; });
return modal.result;
};
/**
* @summary Close the drive selector widget
* @function
* @public
*
* @fulfil {Undefined}
* @returns {Promise}
*
* @example
* DriveSelectorService.close();
*/
this.close = function() {
if (modal) {
return modal.dismiss();
}
// Resolve `undefined` if the modal
// was already closed for consistency
return $q.resolve();
}; };
}; };