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,44 @@
|
||||
# Experimental-platform notice - the DECISION half.
|
||||
#
|
||||
# macOS and Linux run the same engine as Windows through the Avalonia backend, but
|
||||
# the macOS path has never been executed on a Mac. Users get told that once, with a
|
||||
# "do not show again" opt-out, rather than discovering it from a stack trace.
|
||||
#
|
||||
# Why here and not in UI/<backend>/: UI/Classes/ loads for BOTH backends, so the
|
||||
# gate is testable headlessly on Windows (Tests/ExperimentalPlatformNotice.Tests.ps1)
|
||||
# even though the dialog itself only ever renders under Avalonia. The rendering half
|
||||
# lives in UI/Avalonia/Extensions/ExperimentalPlatformNoticeAvalonia.ps1.
|
||||
#
|
||||
# Why AppInitialized: UI/Classes/ dot-sources before Internal/, so the settings
|
||||
# sections do not exist at load time. See the header of UICommonSettings.ps1.
|
||||
|
||||
$script:ExperimentalPlatformNoticeKey = "HideExperimentalPlatformNotice"
|
||||
|
||||
function Add-ExperimentalPlatformSettings
|
||||
{
|
||||
# Idempotent: the notice calls this defensively if it runs before AppInitialized
|
||||
# has fired, and a second Add-SettingsObject would put a duplicate row in the
|
||||
# Settings dialog.
|
||||
foreach($section in (Get-SettingsSections)) {
|
||||
if($section.Values | Where-Object Key -eq $script:ExperimentalPlatformNoticeKey) { return }
|
||||
}
|
||||
|
||||
Add-SettingsObject -Title "Hide experimental platform notice" -Key $script:ExperimentalPlatformNoticeKey -Type "Boolean" `
|
||||
-Description "Stop showing the startup notice that macOS and Linux support is experimental. Clear this to see it again." `
|
||||
-DefaultValue $false -Section "General"
|
||||
}
|
||||
Add-AppEventHandler "AppInitialized" "Add-ExperimentalPlatformSettings"
|
||||
|
||||
function Test-ShouldShowExperimentalPlatformNotice
|
||||
{
|
||||
# The opt-out wins everywhere, including under the forced override - otherwise a
|
||||
# developer who ticks the box on Windows cannot get the dialog back without
|
||||
# editing the settings store by hand.
|
||||
if((Get-SettingValue $script:ExperimentalPlatformNoticeKey) -eq $true) { return $false }
|
||||
|
||||
# IM_EXPERIMENTAL_NOTICE=1 forces the dialog on Windows so it can be reviewed on
|
||||
# the machine it is developed on; it never renders there otherwise.
|
||||
if($script:IsWindowsOS -and $env:IM_EXPERIMENTAL_NOTICE -ne '1') { return $false }
|
||||
|
||||
return $true
|
||||
}
|
||||
Reference in New Issue
Block a user