public static async Task <IReadOnlyList <int> > DeleteFunctionAsync(FunctionData function, FunctionManager functionManager, bool showPrompt = true) { AppTelemetry.Current.TrackEvent( TelemetryEvents.DeleteFunction, TelemetryProperties.Function, function.Name); var dependentFunctionNames = new HashSet <string>(functionManager.GetDependentFunctions(function)); dependentFunctionNames.Remove(function.Name); if (!dependentFunctionNames.Any()) { functionManager.DeleteFunction(function); return(new int[] { function.Id }); } if (showPrompt) { var dialog = new DeleteConfirmationDialog(function.Name, dependentFunctionNames); ContentDialogResult result = await dialog.ShowAsync(); if (result != ContentDialogResult.Primary) { return(new int[0]); } } FunctionData[] functionsToRemove = functionManager.Functions.Where(f => dependentFunctionNames.Contains(f.Name)).ToArray(); foreach (FunctionData dependentFunction in functionsToRemove) { functionManager.DeleteFunction(dependentFunction); } functionManager.DeleteFunction(function); return(functionsToRemove.Select(f => f.Id).Append(function.Id).ToList()); }