From 7667939ebaa0f1f512059e43a55f10d3cd2f37c4 Mon Sep 17 00:00:00 2001 From: whimsical-c4lic0 Date: Sat, 14 Feb 2026 15:43:51 -0600 Subject: [PATCH] Add CLI flag for hiding private info for demo use --- OF DL.Gui/Program.cs | 5 ++ OF DL.Gui/ViewModels/ConfigFieldViewModel.cs | 32 ++++++++- OF DL.Gui/ViewModels/MainWindowViewModel.cs | 72 ++++++++++++++++---- 3 files changed, 94 insertions(+), 15 deletions(-) diff --git a/OF DL.Gui/Program.cs b/OF DL.Gui/Program.cs index 4dd175b..6d5cccf 100644 --- a/OF DL.Gui/Program.cs +++ b/OF DL.Gui/Program.cs @@ -7,8 +7,13 @@ namespace OF_DL.Gui; public static class Program { + public static bool HidePrivateInfo { get; private set; } + public static void Main(string[] args) { + // Parse command line arguments + HidePrivateInfo = args.Contains("--hide-private-info", StringComparer.OrdinalIgnoreCase); + ServiceCollection services = new(); services.AddSingleton(); ServiceProvider tempProvider = services.BuildServiceProvider(); diff --git a/OF DL.Gui/ViewModels/ConfigFieldViewModel.cs b/OF DL.Gui/ViewModels/ConfigFieldViewModel.cs index abccf52..1bc6830 100644 --- a/OF DL.Gui/ViewModels/ConfigFieldViewModel.cs +++ b/OF DL.Gui/ViewModels/ConfigFieldViewModel.cs @@ -158,12 +158,19 @@ public partial class ConfigFieldViewModel : ViewModelBase [ObservableProperty] private decimal? _numericValue; - [ObservableProperty] private string _textValue = string.Empty; + private string _actualTextValue = string.Empty; + + [ObservableProperty] + private string _textValue = string.Empty; [ObservableProperty] [NotifyCanExecuteChangedFor(nameof(InsertSelectedFileNameVariableCommand))] private string? _selectedFileNameVariable; + private bool IsPathField => + string.Equals(PropertyName, nameof(Config.FFmpegPath), StringComparison.Ordinal) || + string.Equals(PropertyName, nameof(Config.DownloadPath), StringComparison.Ordinal); + [ObservableProperty] private ConfigSelectOptionViewModel? _selectedIgnoredUsersListOption; [ObservableProperty] @@ -217,7 +224,9 @@ public partial class ConfigFieldViewModel : ViewModelBase if (PropertyType == typeof(string)) { - value = TextValue.Trim(); + // Use actual value for path fields when privacy mode is enabled + string textToUse = (Program.HidePrivateInfo && IsPathField) ? _actualTextValue : TextValue; + value = textToUse.Trim(); return true; } @@ -351,6 +360,12 @@ public partial class ConfigFieldViewModel : ViewModelBase partial void OnTextValueChanged(string value) { + // Store actual value if not the privacy placeholder + if (value != "[Hidden for Privacy]") + { + _actualTextValue = value; + } + if (!IsFileNameFormatField) { return; @@ -424,7 +439,18 @@ public partial class ConfigFieldViewModel : ViewModelBase return; } - TextValue = initialValue?.ToString() ?? string.Empty; + string initialText = initialValue?.ToString() ?? string.Empty; + _actualTextValue = initialText; + + // Show privacy placeholder for path fields if flag is set + if (Program.HidePrivateInfo && IsPathField && !string.IsNullOrWhiteSpace(initialText)) + { + TextValue = "[Hidden for Privacy]"; + } + else + { + TextValue = initialText; + } } private IEnumerable GetAllowedFileNameVariables() => diff --git a/OF DL.Gui/ViewModels/MainWindowViewModel.cs b/OF DL.Gui/ViewModels/MainWindowViewModel.cs index 9f9dad0..b03b581 100644 --- a/OF DL.Gui/ViewModels/MainWindowViewModel.cs +++ b/OF DL.Gui/ViewModels/MainWindowViewModel.cs @@ -163,12 +163,17 @@ public partial class MainWindowViewModel( [ObservableProperty] private string _errorMessage = string.Empty; - [ObservableProperty] private string _ffmpegPath = string.Empty; + private string _actualFfmpegPath = string.Empty; + private string _actualDownloadPath = string.Empty; + + [ObservableProperty] [NotifyPropertyChangedFor(nameof(FfmpegPathDisplay))] + private string _ffmpegPath = string.Empty; [ObservableProperty] [NotifyPropertyChangedFor(nameof(HasFfmpegPathError))] private string _ffmpegPathError = string.Empty; - [ObservableProperty] private string _downloadPath = string.Empty; + [ObservableProperty] [NotifyPropertyChangedFor(nameof(DownloadPathDisplay))] + private string _downloadPath = string.Empty; [ObservableProperty] [NotifyPropertyChangedFor(nameof(HasDownloadPathError))] private string _downloadPathError = string.Empty; @@ -183,6 +188,8 @@ public partial class MainWindowViewModel( [ObservableProperty] private bool _isAuthenticated; + public bool HidePrivateInfo { get; } = Program.HidePrivateInfo; + [ObservableProperty] private string? _selectedListName; [ObservableProperty] private bool _hasInitialized; @@ -217,6 +224,10 @@ public partial class MainWindowViewModel( public bool HasMediaSourcesError => !string.IsNullOrWhiteSpace(MediaSourcesError); + public string FfmpegPathDisplay => HidePrivateInfo && !string.IsNullOrWhiteSpace(FfmpegPath) ? "[Hidden for Privacy]" : FfmpegPath; + + public string DownloadPathDisplay => HidePrivateInfo && !string.IsNullOrWhiteSpace(DownloadPath) ? "[Hidden for Privacy]" : DownloadPath; + public string FfmpegPathHelpText => GetConfigHelpText(nameof(Config.FFmpegPath)); public string DownloadPathHelpText => GetConfigHelpText(nameof(Config.DownloadPath)); @@ -297,13 +308,17 @@ public partial class MainWindowViewModel( public void SetFfmpegPath(string? path) { - FfmpegPath = NormalizePathForDisplay(path); + string normalizedPath = NormalizePathForDisplay(path); + _actualFfmpegPath = normalizedPath; + FfmpegPath = HidePrivateInfo && !string.IsNullOrWhiteSpace(normalizedPath) ? "[Hidden for Privacy]" : normalizedPath; FfmpegPathError = string.Empty; } public void SetDownloadPath(string? path) { - DownloadPath = NormalizePathForDisplay(path); + string normalizedPath = NormalizePathForDisplay(path); + _actualDownloadPath = normalizedPath; + DownloadPath = HidePrivateInfo && !string.IsNullOrWhiteSpace(normalizedPath) ? "[Hidden for Privacy]" : normalizedPath; DownloadPathError = string.Empty; } @@ -741,9 +756,23 @@ public partial class MainWindowViewModel( _ = SelectUsersFromListAsync(); } - partial void OnFfmpegPathChanged(string value) => FfmpegPathError = string.Empty; + partial void OnFfmpegPathChanged(string value) + { + if (value != "[Hidden for Privacy]") + { + _actualFfmpegPath = value; + } + FfmpegPathError = string.Empty; + } - partial void OnDownloadPathChanged(string value) => DownloadPathError = string.Empty; + partial void OnDownloadPathChanged(string value) + { + if (value != "[Hidden for Privacy]") + { + _actualDownloadPath = value; + } + DownloadPathError = string.Empty; + } private async Task BeginStartupAsync() { @@ -861,9 +890,19 @@ public partial class MainWindowViewModel( string displayName = !string.IsNullOrWhiteSpace(user.Name) ? user.Name : "Unknown Name"; string displayUsername = !string.IsNullOrWhiteSpace(user.Username) ? user.Username : "Unknown Username"; - AuthenticatedUserDisplay = $"{displayName} ({displayUsername})"; + + if (HidePrivateInfo) + { + AuthenticatedUserDisplay = "[Hidden for Privacy]"; + AppendLog("Authenticated as [Hidden for Privacy]."); + } + else + { + AuthenticatedUserDisplay = $"{displayName} ({displayUsername})"; + AppendLog($"Authenticated as {AuthenticatedUserDisplay}."); + } + IsAuthenticated = true; - AppendLog($"Authenticated as {AuthenticatedUserDisplay}."); return true; } @@ -1082,8 +1121,15 @@ public partial class MainWindowViewModel( private void BuildSpecialConfigInputs(Config config) { UnsubscribeSpecialSelectionEvents(); - FfmpegPath = NormalizePathForDisplay(config.FFmpegPath); - DownloadPath = ResolveDownloadPathForDisplay(config.DownloadPath); + + string ffmpegPath = NormalizePathForDisplay(config.FFmpegPath); + _actualFfmpegPath = ffmpegPath; + FfmpegPath = HidePrivateInfo && !string.IsNullOrWhiteSpace(ffmpegPath) ? "[Hidden for Privacy]" : ffmpegPath; + + string downloadPath = ResolveDownloadPathForDisplay(config.DownloadPath); + _actualDownloadPath = downloadPath; + DownloadPath = HidePrivateInfo && !string.IsNullOrWhiteSpace(downloadPath) ? "[Hidden for Privacy]" : downloadPath; + ClearSpecialConfigErrors(); PopulateSelectionOptions(MediaTypeOptions, s_mediaTypeOptions, config); @@ -1118,12 +1164,14 @@ public partial class MainWindowViewModel( private void ApplySpecialConfigValues(Config config) { - string normalizedFfmpegPath = NormalizePathForDisplay(FfmpegPath); + string pathToUse = HidePrivateInfo ? _actualFfmpegPath : FfmpegPath; + string normalizedFfmpegPath = NormalizePathForDisplay(pathToUse); config.FFmpegPath = string.IsNullOrWhiteSpace(normalizedFfmpegPath) ? string.Empty : EscapePathForConfig(normalizedFfmpegPath); - string normalizedDownloadPath = NormalizePathForDisplay(DownloadPath); + string downloadPathToUse = HidePrivateInfo ? _actualDownloadPath : DownloadPath; + string normalizedDownloadPath = NormalizePathForDisplay(downloadPathToUse); config.DownloadPath = string.IsNullOrWhiteSpace(normalizedDownloadPath) ? EscapePathForConfig(s_defaultDownloadPath) : EscapePathForConfig(normalizedDownloadPath);