mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-08-09 09:31:15 +10:00
Remove local file preference storage and cleanup Invoke-WinutilThemeChange (#4617)
* Remove local file preference storage * Update main.ps1 * Update main.ps1 * Update Set-Preferences.ps1 * Update main.ps1 * Update Set-Preferences.ps1 * Update main.ps1 * Delete functions/private/Set-Preferences.ps1 * simplify Invoke-WinutilThemeChange.ps1 * fix foss highlight in Invoke-WinutilThemeChange.ps1 * Update Invoke-WinutilThemeChange.ps1 * Update Invoke-WinutilThemeChange.ps1 * Update main.ps1 --------- Co-authored-by: Chris Titus <contact@christitus.com>
This commit is contained in:
@@ -124,7 +124,6 @@ function Invoke-WinutilThemeChange {
|
||||
}
|
||||
|
||||
$sync.preferences.theme = $theme
|
||||
Set-Preferences -save
|
||||
Set-WinutilTheme -currentTheme "shared"
|
||||
|
||||
switch ($sync.preferences.theme) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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" {
|
||||
|
||||
+2
-5
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user