From e8f34eaa0f4c43b0e9f430e8d0463caa00a13b07 Mon Sep 17 00:00:00 2001 From: srthMD Date: Sat, 13 Jul 2024 17:05:12 +0300 Subject: [PATCH 1/5] support for _placefilter and _datacenterfilter --- Bloxstrap/Resources/Strings.resx | 3 ++ .../Menu/Pages/FastFlagEditorPage.xaml.cs | 29 +++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Bloxstrap/Resources/Strings.resx b/Bloxstrap/Resources/Strings.resx index b5eadc2..c749c3d 100644 --- a/Bloxstrap/Resources/Strings.resx +++ b/Bloxstrap/Resources/Strings.resx @@ -1021,4 +1021,7 @@ Selecting 'No' will ignore this warning and continue installation. System default + + The entry for '{0}' is not valid as the place filter is not formatted correctly. + \ No newline at end of file diff --git a/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs b/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs index d7d5cf0..4542ca2 100644 --- a/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs +++ b/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs @@ -22,9 +22,15 @@ namespace Bloxstrap.UI.Elements.Menu.Pages private readonly ObservableCollection _fastFlagList = new(); private readonly List _validPrefixes = new() { - "FFlag", "DFFlag", "SFFlag", "FInt", "DFInt", "FString", "DFString", "FLog", "DFlog" + "FFlag", "DFFlag", "SFFlag", "FInt", "DFInt", "FString", "DFString", "FLog", "DFLog" }; + // values must match the entire string to avoid cases where half the string + // matches but the filter would still be invalid + private readonly Regex _boolFilterPattern = new("(?:true|false)(;[\\d]{1,})+$"); + private readonly Regex _intFilterPattern = new("([\\d]{1,})?(;[\\d]{1,})+$"); + private readonly Regex _stringFilterPattern = new("^[^;]*(;[\\d]{1,})+$"); + private bool _showPresets = false; private string _searchFilter = ""; @@ -253,17 +259,22 @@ namespace Bloxstrap.UI.Elements.Menu.Pages string lowerValue = value.ToLowerInvariant(); string errorMessage = ""; - if (!_validPrefixes.Where(x => name.StartsWith(x)).Any()) + if (!_validPrefixes.Any(name.StartsWith)) errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPrefix; else if (!name.All(x => char.IsLetterOrDigit(x) || x == '_')) errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidCharacter; + + // sorry + if (name.EndsWith("_PlaceFilter") || name.EndsWith("_DataCenterFilter")) + errorMessage = !Validate_Filter(name, value) ? Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPlaceFilter : ""; else if ((name.StartsWith("FInt") || name.StartsWith("DFInt")) && !Int32.TryParse(value, out _)) errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidNumberValue; else if ((name.StartsWith("FFlag") || name.StartsWith("DFFlag")) && lowerValue != "true" && lowerValue != "false") errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidBoolValue; + if (!String.IsNullOrEmpty(errorMessage)) - { + { Frontend.ShowMessageBox(String.Format(errorMessage, name), MessageBoxImage.Error); return false; } @@ -271,6 +282,18 @@ namespace Bloxstrap.UI.Elements.Menu.Pages return true; } + private bool Validate_Filter(string name, string value) + { + if(name.StartsWith("FFlag") || name.StartsWith("DFFlag")) + return _boolFilterPattern.IsMatch(value); + if (name.StartsWith("FInt") || name.StartsWith("DFInt")) + return _intFilterPattern.IsMatch(value); + if (name.StartsWith("FString") || name.StartsWith("DFString") || name.StartsWith("FLog") || name.StartsWith("DFLog")) + return _stringFilterPattern.IsMatch(value); + + return false; + } + // refresh list on page load to synchronize with preset page private void Page_Loaded(object sender, RoutedEventArgs e) => ReloadList(); From dcc820343b871077435667c51a100087a67327d8 Mon Sep 17 00:00:00 2001 From: srthMD Date: Sat, 13 Jul 2024 17:05:12 +0300 Subject: [PATCH 2/5] support for _placefilter and _datacenterfilter --- Bloxstrap/Resources/Strings.resx | 3 ++ .../Menu/Pages/FastFlagEditorPage.xaml.cs | 28 +++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/Bloxstrap/Resources/Strings.resx b/Bloxstrap/Resources/Strings.resx index b5eadc2..c749c3d 100644 --- a/Bloxstrap/Resources/Strings.resx +++ b/Bloxstrap/Resources/Strings.resx @@ -1021,4 +1021,7 @@ Selecting 'No' will ignore this warning and continue installation. System default + + The entry for '{0}' is not valid as the place filter is not formatted correctly. + \ No newline at end of file diff --git a/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs b/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs index d7d5cf0..d8f4e08 100644 --- a/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs +++ b/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs @@ -22,9 +22,15 @@ namespace Bloxstrap.UI.Elements.Menu.Pages private readonly ObservableCollection _fastFlagList = new(); private readonly List _validPrefixes = new() { - "FFlag", "DFFlag", "SFFlag", "FInt", "DFInt", "FString", "DFString", "FLog", "DFlog" + "FFlag", "DFFlag", "SFFlag", "FInt", "DFInt", "FString", "DFString", "FLog", "DFLog" }; + // values must match the entire string to avoid cases where half the string + // matches but the filter would still be invalid + private readonly Regex _boolFilterPattern = new("(?:true|false)(;[\\d]{1,})+$"); + private readonly Regex _intFilterPattern = new("([\\d]{1,})?(;[\\d]{1,})+$"); + private readonly Regex _stringFilterPattern = new("^[^;]*(;[\\d]{1,})+$"); + private bool _showPresets = false; private string _searchFilter = ""; @@ -253,17 +259,21 @@ namespace Bloxstrap.UI.Elements.Menu.Pages string lowerValue = value.ToLowerInvariant(); string errorMessage = ""; - if (!_validPrefixes.Where(x => name.StartsWith(x)).Any()) + if (!_validPrefixes.Any(name.StartsWith)) errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPrefix; else if (!name.All(x => char.IsLetterOrDigit(x) || x == '_')) errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidCharacter; + + if (name.EndsWith("_PlaceFilter") || name.EndsWith("_DataCenterFilter")) + errorMessage = !Validate_Filter(name, value) ? Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPlaceFilter : ""; else if ((name.StartsWith("FInt") || name.StartsWith("DFInt")) && !Int32.TryParse(value, out _)) errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidNumberValue; else if ((name.StartsWith("FFlag") || name.StartsWith("DFFlag")) && lowerValue != "true" && lowerValue != "false") errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidBoolValue; + if (!String.IsNullOrEmpty(errorMessage)) - { + { Frontend.ShowMessageBox(String.Format(errorMessage, name), MessageBoxImage.Error); return false; } @@ -271,6 +281,18 @@ namespace Bloxstrap.UI.Elements.Menu.Pages return true; } + private bool Validate_Filter(string name, string value) + { + if(name.StartsWith("FFlag") || name.StartsWith("DFFlag")) + return _boolFilterPattern.IsMatch(value); + if (name.StartsWith("FInt") || name.StartsWith("DFInt")) + return _intFilterPattern.IsMatch(value); + if (name.StartsWith("FString") || name.StartsWith("DFString") || name.StartsWith("FLog") || name.StartsWith("DFLog")) + return _stringFilterPattern.IsMatch(value); + + return false; + } + // refresh list on page load to synchronize with preset page private void Page_Loaded(object sender, RoutedEventArgs e) => ReloadList(); From c4f1aab1a699e20de5828b1610003839410ffbab Mon Sep 17 00:00:00 2001 From: srth Date: Sat, 13 Jul 2024 14:53:04 +0000 Subject: [PATCH 3/5] remove comment i forgot why it was here --- Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs b/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs index 4542ca2..d8f4e08 100644 --- a/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs +++ b/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs @@ -264,7 +264,6 @@ namespace Bloxstrap.UI.Elements.Menu.Pages else if (!name.All(x => char.IsLetterOrDigit(x) || x == '_')) errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidCharacter; - // sorry if (name.EndsWith("_PlaceFilter") || name.EndsWith("_DataCenterFilter")) errorMessage = !Validate_Filter(name, value) ? Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPlaceFilter : ""; else if ((name.StartsWith("FInt") || name.StartsWith("DFInt")) && !Int32.TryParse(value, out _)) From 978a2ff3fb701efea859367f2e8f95fee6628d3a Mon Sep 17 00:00:00 2001 From: srthMD Date: Sun, 14 Jul 2024 21:42:13 +0300 Subject: [PATCH 4/5] to pascal case --- Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs b/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs index d8f4e08..767bb96 100644 --- a/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs +++ b/Bloxstrap/UI/Elements/Menu/Pages/FastFlagEditorPage.xaml.cs @@ -265,12 +265,11 @@ namespace Bloxstrap.UI.Elements.Menu.Pages errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidCharacter; if (name.EndsWith("_PlaceFilter") || name.EndsWith("_DataCenterFilter")) - errorMessage = !Validate_Filter(name, value) ? Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPlaceFilter : ""; + errorMessage = !ValidateFilter(name, value) ? Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPlaceFilter : ""; else if ((name.StartsWith("FInt") || name.StartsWith("DFInt")) && !Int32.TryParse(value, out _)) errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidNumberValue; else if ((name.StartsWith("FFlag") || name.StartsWith("DFFlag")) && lowerValue != "true" && lowerValue != "false") errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidBoolValue; - if (!String.IsNullOrEmpty(errorMessage)) { @@ -281,7 +280,7 @@ namespace Bloxstrap.UI.Elements.Menu.Pages return true; } - private bool Validate_Filter(string name, string value) + private bool ValidateFilter(string name, string value) { if(name.StartsWith("FFlag") || name.StartsWith("DFFlag")) return _boolFilterPattern.IsMatch(value); From 6275085e48ab01e8061a9892ea7d5648e97160f3 Mon Sep 17 00:00:00 2001 From: srthMD Date: Mon, 22 Jul 2024 12:52:49 +0300 Subject: [PATCH 5/5] =?UTF-8?q?i=20forgo=F0=9F=92=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bloxstrap/Resources/Strings.Designer.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Bloxstrap/Resources/Strings.Designer.cs b/Bloxstrap/Resources/Strings.Designer.cs index af9ccfd..77db067 100644 --- a/Bloxstrap/Resources/Strings.Designer.cs +++ b/Bloxstrap/Resources/Strings.Designer.cs @@ -1,7 +1,6 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -1703,6 +1702,15 @@ namespace Bloxstrap.Resources { } } + /// + /// Looks up a localized string similar to The entry for '{0}' is not valid as the place filter is not formatted correctly.. + /// + public static string Menu_FastFlagEditor_InvalidPlaceFilter { + get { + return ResourceManager.GetString("Menu.FastFlagEditor.InvalidPlaceFilter", resourceCulture); + } + } + /// /// Looks up a localized string similar to The entry for '{0}' is not valid as the name must start with FFlag, DFInt, etc. ///