public void Uninstalled(Feature feature) { var featureName = feature.Descriptor.Id; if (_dataMigrationManager.IsFeatureAlreadyInstalled(featureName)) { _dataMigrationManager.Uninstall(featureName); } }
private async Task EnableOrDisableFeaturesAsync(IEnumerable <IFeatureInfo> features, FeaturesBulkAction action, bool?force) { switch (action) { case FeaturesBulkAction.None: break; case FeaturesBulkAction.Enable: await _shellFeaturesManager.EnableFeaturesAsync(features, force == true); Notify(features); break; case FeaturesBulkAction.Disable: await _shellFeaturesManager.DisableFeaturesAsync(features, force == true); foreach (var featureInfoToDisable in features) { _dataMigrationManager.Uninstall(featureInfoToDisable.Id).GetAwaiter().GetResult(); } Notify(features, enabled: false); break; case FeaturesBulkAction.Toggle: var enabledFeatures = await _shellFeaturesManager.GetEnabledFeaturesAsync(); var disabledFeatures = await _shellFeaturesManager.GetDisabledFeaturesAsync(); var featuresToEnable = disabledFeatures.Intersect(features); var featuresToDisable = enabledFeatures.Intersect(features); await _shellFeaturesManager.UpdateFeaturesAsync(featuresToDisable, featuresToEnable, force == true); Notify(featuresToEnable); Notify(featuresToDisable, enabled: false); return; default: break; } }