mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-03-12 17:51:46 +08:00
* fix: cast selections to string to prevent PSCustomObject type issues * fix(presets): clear existing selections before importing to replace state instead of merging * refactor(impex): warn user when exporting empty selections or importing empty config
62 lines
2.2 KiB
PowerShell
62 lines
2.2 KiB
PowerShell
function Update-WinUtilSelections {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Updates the $sync.selected variables with a given preset.
|
|
|
|
.PARAMETER flatJson
|
|
The flattened json list of $sync values to select.
|
|
#>
|
|
|
|
param (
|
|
$flatJson
|
|
)
|
|
|
|
Write-Debug "JSON to import: $($flatJson)"
|
|
|
|
foreach ($item in $flatJson) {
|
|
# Ensure each item is treated as a string to handle PSCustomObject from JSON deserialization
|
|
$cbkey = [string]$item
|
|
$group = if ($cbkey.StartsWith("WPFInstall")) { "Install" }
|
|
elseif ($cbkey.StartsWith("WPFTweaks")) { "Tweaks" }
|
|
elseif ($cbkey.StartsWith("WPFToggle")) { "Toggle" }
|
|
elseif ($cbkey.StartsWith("WPFFeature")) { "Feature" }
|
|
else { "na" }
|
|
|
|
switch ($group) {
|
|
"Install" {
|
|
if (!$sync.selectedApps.Contains($cbkey)) {
|
|
$sync.selectedApps.Add($cbkey)
|
|
# The List type needs to be specified again, because otherwise Sort-Object will convert the list to a string if there is only a single entry
|
|
[System.Collections.Generic.List[string]]$sync.selectedApps = $sync.SelectedApps | Sort-Object
|
|
}
|
|
}
|
|
"Tweaks" {
|
|
if (!$sync.selectedTweaks.Contains($cbkey)) {
|
|
$sync.selectedTweaks.Add($cbkey)
|
|
}
|
|
}
|
|
"Toggle" {
|
|
if (!$sync.selectedToggles.Contains($cbkey)) {
|
|
$sync.selectedToggles.Add($cbkey)
|
|
}
|
|
}
|
|
"Feature" {
|
|
if (!$sync.selectedFeatures.Contains($cbkey)) {
|
|
$sync.selectedFeatures.Add($cbkey)
|
|
}
|
|
}
|
|
default {
|
|
Write-Host "Unknown group for checkbox: $($cbkey)"
|
|
}
|
|
}
|
|
}
|
|
|
|
Write-Debug "-------------------------------------"
|
|
Write-Debug "Selected Apps: $($sync.selectedApps)"
|
|
Write-Debug "Selected Tweaks: $($sync.selectedTweaks)"
|
|
Write-Debug "Selected Toggles: $($sync.selectedToggles)"
|
|
Write-Debug "Selected Features: $($sync.selectedFeatures)"
|
|
Write-Debug "--------------------------------------"
|
|
}
|