mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-08-09 17:41:14 +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
|
$sync.preferences.theme = $theme
|
||||||
Set-Preferences -save
|
|
||||||
Set-WinutilTheme -currentTheme "shared"
|
Set-WinutilTheme -currentTheme "shared"
|
||||||
|
|
||||||
switch ($sync.preferences.theme) {
|
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")
|
. (Join-Path $script:repoRoot "functions\private\Invoke-WinutilThemeChange.ps1")
|
||||||
|
|
||||||
function Get-WinUtilToggleStatus {
|
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" {
|
Describe "Invoke-WinutilThemeChange" {
|
||||||
AfterEach {
|
AfterEach {
|
||||||
if ($script:testRoot -and (Test-Path $script:testRoot)) {
|
if ($script:testRoot -and (Test-Path $script:testRoot)) {
|
||||||
@@ -273,7 +194,7 @@ Describe "Invoke-WinutilThemeChange" {
|
|||||||
Remove-WinUtilPreferenceGlobals
|
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
|
$script:testRoot = New-WinUtilPreferencesTestRoot
|
||||||
$global:winutildir = $script:testRoot
|
$global:winutildir = $script:testRoot
|
||||||
New-WinUtilPreferenceSync
|
New-WinUtilPreferenceSync
|
||||||
@@ -287,8 +208,7 @@ Describe "Invoke-WinutilThemeChange" {
|
|||||||
$script:sync.Form.Resources.ContainsKey("CBorderColor") | Should -BeTrue
|
$script:sync.Form.Resources.ContainsKey("CBorderColor") | Should -BeTrue
|
||||||
$script:sync.Form.ThemeButton.Content | Should -Be ([string][char]0xE708)
|
$script:sync.Form.ThemeButton.Content | Should -Be ([string][char]0xE708)
|
||||||
|
|
||||||
$preferencesText = Get-Content -Path (Join-Path $script:testRoot "preferences.ini") -Raw
|
Test-Path -Path (Join-Path $script:testRoot "preferences.ini") | Should -BeFalse
|
||||||
$preferencesText | Should -Match "theme=Dark"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
It "uses the system dark-mode toggle when Auto theme is selected" {
|
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.appx.PSObject.Properties | ForEach-Object {
|
||||||
$sync.configs.appxHashtable[$_.Name] = $_.Value
|
$sync.configs.appxHashtable[$_.Name] = $_.Value
|
||||||
}
|
}
|
||||||
|
$sync.preferences.theme = "Auto"
|
||||||
Set-Preferences
|
$sync.preferences.packagemanager = "Winget"
|
||||||
|
|
||||||
if ($Preset) {
|
if ($Preset) {
|
||||||
Initialize-WinUtilRunspacePool | Out-Null
|
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)}
|
$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.ChocoRadioButton.Add_Checked({
|
||||||
$sync.preferences.packagemanager = "Choco"
|
$sync.preferences.packagemanager = "Choco"
|
||||||
Set-Preferences -save
|
|
||||||
})
|
})
|
||||||
$sync.WingetRadioButton.Add_Checked({
|
$sync.WingetRadioButton.Add_Checked({
|
||||||
$sync.preferences.packagemanager = "Winget"
|
$sync.preferences.packagemanager = "Winget"
|
||||||
Set-Preferences -save
|
|
||||||
})
|
})
|
||||||
|
|
||||||
switch ($sync.preferences.packagemanager) {
|
switch ($sync.preferences.packagemanager) {
|
||||||
|
|||||||
Reference in New Issue
Block a user