async Task <CommandResultBase> UpdateShellFeatureVersionAsync(IShellFeature feature, string newVersion) { var result = new CommandResultBase(); // Ensure the version is valid if (newVersion.ToVersion() == null) { return(result.Failed( $"The version '{newVersion}' for feature '{feature.ModuleId}' is not a valid version. Versions must contain major, minor & build numbers. For example 1.0.0, 2.4.0 or 3.2.1")); } // Update version feature.Version = newVersion; // Update shell features var shellFeature = await _shellFeatureStore.UpdateAsync((ShellFeature)feature); // Ensure the update was successful before updating shell descriptor if (shellFeature == null) { return(result.Failed( $"Could not update shell feature. An error occurred whilst updating the version for feature {feature.ModuleId} to version {newVersion}.")); } // First get all existing enabled features var enabledFeatures = await _shellDescriptorManager.GetEnabledFeaturesAsync(); // Update version for enabled feature var descriptor = new ShellDescriptor(); foreach (var enabledFeature in enabledFeatures) { if (enabledFeature.ModuleId.Equals(feature.ModuleId, StringComparison.OrdinalIgnoreCase)) { enabledFeature.Version = newVersion; } descriptor.Modules.Add(new ShellModule(enabledFeature)); } // Ensure we have a descriptor if (descriptor.Modules?.Count == 0) { return(result.Failed("A valid shell descriptor could not be constructed.")); } // Update shell descriptor var updatedDescriptor = await _shellDescriptorStore.SaveAsync(descriptor); if (updatedDescriptor == null) { return(result.Failed( $"Could not update shell descriptor. An error occurred whilst updating the version for feature {feature.ModuleId} to version {newVersion}.")); } return(result.Success()); }
async Task InitializeDefaultFeatureSettings(IFeatureEventContext context) { var features = await _shellFeatureStore.SelectFeatures(); var feature = features.FirstOrDefault(f => f.ModuleId.Equals(context.Feature.ModuleId, StringComparison.OrdinalIgnoreCase)); if (feature != null) { feature.FeatureSettings = new FeatureSettings() { Title = "Search", Description = "Search Help & Support", IconCss = "fal fa-search" }; // Persist changes await _shellFeatureStore.UpdateAsync(feature); } // Apply default permissions to default roles for new feature await _defaultRolesManager.UpdateDefaultRolesAsync(new Permissions()); }
public override async Task InstalledAsync(IFeatureEventContext context) { // Update default feature settings var features = await _shellFeatureStore.SelectFeatures(); var feature = features.FirstOrDefault(f => f.ModuleId == base.ModuleId); if (feature != null) { feature.FeatureSettings = new FeatureSettings() { Title = "Articles", Description = "" }; // Persist changes await _shellFeatureStore.UpdateAsync(feature); } // Apply default permissions to default roles for new feature await _defaultRolesManager.UpdateDefaultRolesAsync(new Permissions()); }