using System.IO; using System.Windows; namespace TeamsISO.App; /// /// First-launch welcome dialog. Walks the user through the once-per-machine /// setup that's not derivable from the UI alone (NDI runtime install, Teams /// admin permission, transcoder topology) and points them at where logs and /// presets live for later self-service. /// /// Suppression is governed by a marker file at /// %LOCALAPPDATA%\TeamsISO\onboarding.flag. The presence of the file — /// regardless of contents — means "don't show again." The user can restore /// the dialog by deleting that file. /// public partial class OnboardingWindow : Window { private static string FlagPath => Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "TeamsISO", "onboarding.flag"); public OnboardingWindow() => InitializeComponent(); /// /// Returns true on first launch (and on launches where the user previously /// unchecked "Don't show this again" so the marker file was never created). /// public static bool ShouldShow() { try { return !File.Exists(FlagPath); } catch { return false; } // permission errors → assume already shown } private void OnDismiss(object sender, RoutedEventArgs e) { if (SuppressBox.IsChecked == true) { try { var dir = Path.GetDirectoryName(FlagPath); if (!string.IsNullOrEmpty(dir)) Directory.CreateDirectory(dir); File.WriteAllText(FlagPath, "Onboarding dialog dismissed at " + DateTimeOffset.UtcNow.ToString("o") + ". " + "Delete this file to see the welcome dialog again on next launch."); } catch { // Disk full / permission denied — show the dialog again next launch // rather than fail noisily. } } DialogResult = true; Close(); } }