mirror of
https://github.com/Micke-K/IntuneManagement.git
synced 2026-09-28 19:05:38 +02:00
IntuneManagement 4.0.0-beta1
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Per-view Delete confirmation (Remove-GraphObjectsUI).
|
||||
# Split out of IntuneManagerUIAvalonia.ps1 on 2026-06-03 to match the WPF tree's
|
||||
# per-feature layout (architecture rule R9 — keep the Avalonia shell from growing further).
|
||||
|
||||
function Remove-GraphObjectsUI
|
||||
{
|
||||
$ui = $script:UIProvider
|
||||
if (-not $script:dgIntuneManagerObjects -or $null -eq $script:IntuneManagerAllRows) { return }
|
||||
|
||||
# Prefer the IsSelected-checked rows; fall back to the highlighted row.
|
||||
# Scan the grid's CURRENT (filtered) ItemsSource - never the unfiltered
|
||||
# backing list, or a checked row hidden by the filter would be deleted
|
||||
# without ever being visible to the user.
|
||||
$selectedRows = @(@($script:dgIntuneManagerObjects.ItemsSource) | Where-Object { $_ -and $_.IsSelected })
|
||||
if ($selectedRows.Count -eq 0 -and $script:dgIntuneManagerObjects.SelectedItem) {
|
||||
$selectedRows = @($script:dgIntuneManagerObjects.SelectedItem)
|
||||
}
|
||||
|
||||
if ($selectedRows.Count -eq 0) {
|
||||
$ui.ShowMessageBox("No object selected`n`nSelect items you want to delete", "Error", "OK", "Error")
|
||||
return
|
||||
}
|
||||
|
||||
$confirm = $ui.ShowMessageBox("Are you sure you want to delete $($selectedRows.Count) object(s)?`n`nEnvironment: $($script:OrganizationName)", "Delete Objects?", "YesNo", "Warning")
|
||||
if ($confirm -ne "Yes") { return }
|
||||
|
||||
# Remove-GraphPolicy expects the underlying IntunePolicyBase, not the
|
||||
# CLR row wrapper — pull .Source off each row before piping in.
|
||||
$policiesToRemove = @($selectedRows | ForEach-Object { $_.Source } | Where-Object { $_ })
|
||||
if ($policiesToRemove.Count -eq 0) {
|
||||
Write-Log "Delete: $($selectedRows.Count) row(s) confirmed but none carried a policy object" 3
|
||||
$ui.ShowMessageBox("No object selected`n`nSelect items you want to delete", "Error", "OK", "Error")
|
||||
return
|
||||
}
|
||||
|
||||
$deletedPolicies = @($policiesToRemove | Remove-GraphPolicy)
|
||||
|
||||
if ($deletedPolicies.Count -gt 0) {
|
||||
$deletedIds = @($deletedPolicies | ForEach-Object { [string]$_.Id })
|
||||
# Drop deleted rows from the cached unfiltered list, then refresh the
|
||||
# filtered ItemsSource so the grid reflects the new state.
|
||||
$remaining = [System.Collections.Generic.List[object]]::new()
|
||||
foreach ($row in $script:IntuneManagerAllRows) {
|
||||
if ($deletedIds -notcontains [string]$row.ID) { [void]$remaining.Add($row) }
|
||||
}
|
||||
$script:IntuneManagerAllRows = $remaining
|
||||
|
||||
Invoke-FilterBoxChanged $script:IntuneManagementFilterTextBox `
|
||||
$script:dgIntuneManagerObjects -ForceUpdate `
|
||||
-ObjectsCountTextBox $script:IntuneManagementObjectsCount
|
||||
}
|
||||
|
||||
Write-Status ""
|
||||
}
|
||||
Reference in New Issue
Block a user