diff --git a/functions/private/Invoke-WinutilThemeChange.ps1 b/functions/private/Invoke-WinutilThemeChange.ps1 index aca44b3274..a3e9d17746 100644 --- a/functions/private/Invoke-WinutilThemeChange.ps1 +++ b/functions/private/Invoke-WinutilThemeChange.ps1 @@ -124,7 +124,6 @@ function Invoke-WinutilThemeChange { } $sync.preferences.theme = $theme - Set-Preferences -save Set-WinutilTheme -currentTheme "shared" switch ($sync.preferences.theme) { diff --git a/functions/private/Set-Preferences.ps1 b/functions/private/Set-Preferences.ps1 deleted file mode 100644 index a82d3ce532..0000000000 --- a/functions/private/Set-Preferences.ps1 +++ /dev/null @@ -1,73 +0,0 @@ -function Set-Preferences{ - - param( - [switch]$save=$false - ) - - # TODO delete this function sometime later - function Clean-OldPrefs{ - if (Test-Path -Path "$winutildir\LightTheme.ini") { - $sync.preferences.theme = "Light" - Remove-Item -Path "$winutildir\LightTheme.ini" - } - - if (Test-Path -Path "$winutildir\DarkTheme.ini") { - $sync.preferences.theme = "Dark" - Remove-Item -Path "$winutildir\DarkTheme.ini" - } - - # check old prefs, if its first line has no =, then absorb it as pm - if (Test-Path -Path $iniPath) { - $oldPM = Get-Content $iniPath - if ($oldPM -notlike "*=*") { - $sync.preferences.packagemanager = $oldPM - } - } - - if (Test-Path -Path "$winutildir\preferChocolatey.ini") { - $sync.preferences.packagemanager = "Choco" - Remove-Item -Path "$winutildir\preferChocolatey.ini" - } - } - - function Save-Preferences{ - $ini = "" - foreach($key in $sync.preferences.Keys) { - $pref = "$($key)=$($sync.preferences.$key)" - $ini = $ini + $pref + "`r`n" - } - $ini | Out-File $iniPath - } - - function Load-Preferences{ - Clean-OldPrefs - if (Test-Path -Path $iniPath) { - $iniData = Get-Content "$winutildir\preferences.ini" - foreach ($line in $iniData) { - if ($line -like "*=*") { - $arr = $line -split "=",-2 - $key = $arr[0] -replace "\s","" - $value = $arr[1] -replace "\s","" - $sync.preferences.$key = $value - } - } - } - - # write defaults in case preferences dont exist - if ($null -eq $sync.preferences.theme) { - $sync.preferences.theme = "Auto" - } - if ($null -eq $sync.preferences.packagemanager) { - $sync.preferences.packagemanager = "Winget" - } - } - - $iniPath = "$winutildir\preferences.ini" - - if ($save) { - Save-Preferences - } - else { - Load-Preferences - } -} diff --git a/pester/preferences-theme.Tests.ps1 b/pester/preferences-theme.Tests.ps1 index ab1b65a34a..d4ad0fc661 100644 --- a/pester/preferences-theme.Tests.ps1 +++ b/pester/preferences-theme.Tests.ps1 @@ -129,7 +129,6 @@ namespace System.Windows "@ } - . (Join-Path $script:repoRoot "functions\private\Set-Preferences.ps1") . (Join-Path $script:repoRoot "functions\private\Invoke-WinutilThemeChange.ps1") function Get-WinUtilToggleStatus { @@ -186,84 +185,6 @@ namespace System.Windows } } -Describe "Set-Preferences" { - AfterEach { - if ($script:testRoot -and (Test-Path $script:testRoot)) { - Remove-Item -Path $script:testRoot -Recurse -Force -ErrorAction SilentlyContinue - } - $script:testRoot = $null - Remove-WinUtilPreferenceGlobals - } - - It "loads default preferences when no preferences file exists" { - $script:testRoot = New-WinUtilPreferencesTestRoot - $global:winutildir = $script:testRoot - New-WinUtilPreferenceSync - - Set-Preferences - - $script:sync.preferences.theme | Should -Be "Auto" - $script:sync.preferences.packagemanager | Should -Be "Winget" - } - - It "loads saved preferences and keeps the package manager as a string" { - $script:testRoot = New-WinUtilPreferencesTestRoot - $global:winutildir = $script:testRoot - New-WinUtilPreferenceSync - Set-Content -Path (Join-Path $script:testRoot "preferences.ini") -Value @( - "theme = Dark" - "packagemanager = Choco" - ) - - Set-Preferences - - $script:sync.preferences.theme | Should -Be "Dark" - $script:sync.preferences.packagemanager | Should -Be "Choco" - } - - It "saves current preferences to preferences.ini" { - $script:testRoot = New-WinUtilPreferencesTestRoot - $global:winutildir = $script:testRoot - New-WinUtilPreferenceSync -Preferences @{ - theme = "Light" - packagemanager = "Winget" - } - - Set-Preferences -save - - $preferencesText = Get-Content -Path (Join-Path $script:testRoot "preferences.ini") -Raw - $preferencesText | Should -Match "theme=Light" - $preferencesText | Should -Match "packagemanager=Winget" - } - - It "absorbs legacy preference files and removes old markers" { - $script:testRoot = New-WinUtilPreferencesTestRoot - $global:winutildir = $script:testRoot - New-WinUtilPreferenceSync - Set-Content -Path (Join-Path $script:testRoot "LightTheme.ini") -Value "" - Set-Content -Path (Join-Path $script:testRoot "preferChocolatey.ini") -Value "" - - Set-Preferences - - $script:sync.preferences.theme | Should -Be "Light" - $script:sync.preferences.packagemanager | Should -Be "Choco" - Test-Path (Join-Path $script:testRoot "LightTheme.ini") | Should -BeFalse - Test-Path (Join-Path $script:testRoot "preferChocolatey.ini") | Should -BeFalse - } - - It "absorbs old package manager preferences stored without a key" { - $script:testRoot = New-WinUtilPreferencesTestRoot - $global:winutildir = $script:testRoot - New-WinUtilPreferenceSync - Set-Content -Path (Join-Path $script:testRoot "preferences.ini") -Value "Choco" - - Set-Preferences - - $script:sync.preferences.theme | Should -Be "Auto" - $script:sync.preferences.packagemanager | Should -Be "Choco" - } -} - Describe "Invoke-WinutilThemeChange" { AfterEach { if ($script:testRoot -and (Test-Path $script:testRoot)) { @@ -273,7 +194,7 @@ Describe "Invoke-WinutilThemeChange" { Remove-WinUtilPreferenceGlobals } - It "applies shared and selected theme resources, saves the preference, and updates the theme button" { + It "applies shared and selected theme resources, keeps the preference in memory, and updates the theme button" { $script:testRoot = New-WinUtilPreferencesTestRoot $global:winutildir = $script:testRoot New-WinUtilPreferenceSync @@ -287,8 +208,7 @@ Describe "Invoke-WinutilThemeChange" { $script:sync.Form.Resources.ContainsKey("CBorderColor") | Should -BeTrue $script:sync.Form.ThemeButton.Content | Should -Be ([string][char]0xE708) - $preferencesText = Get-Content -Path (Join-Path $script:testRoot "preferences.ini") -Raw - $preferencesText | Should -Match "theme=Dark" + Test-Path -Path (Join-Path $script:testRoot "preferences.ini") | Should -BeFalse } It "uses the system dark-mode toggle when Auto theme is selected" { diff --git a/scripts/main.ps1 b/scripts/main.ps1 index 5fb3d25771..556a81c42a 100644 --- a/scripts/main.ps1 +++ b/scripts/main.ps1 @@ -31,8 +31,8 @@ $sync.configs.appxHashtable = @{} $sync.configs.appx.PSObject.Properties | ForEach-Object { $sync.configs.appxHashtable[$_.Name] = $_.Value } - -Set-Preferences +$sync.preferences.theme = "Auto" +$sync.preferences.packagemanager = "Winget" if ($Preset) { Initialize-WinUtilRunspacePool | Out-Null @@ -137,14 +137,11 @@ Initialize-WinUtilTabContent -TabName "Install" $xaml.SelectNodes("//*[@Name]") | ForEach-Object {$sync["$("$($psitem.Name)")"] = $sync["Form"].FindName($psitem.Name)} -#Persist Package Manager preference across winutil restarts $sync.ChocoRadioButton.Add_Checked({ $sync.preferences.packagemanager = "Choco" - Set-Preferences -save }) $sync.WingetRadioButton.Add_Checked({ $sync.preferences.packagemanager = "Winget" - Set-Preferences -save }) switch ($sync.preferences.packagemanager) {