Improve NRE safety for quick filters
This commit is contained in:
parent
d195dd07dc
commit
4766ea7372
@ -24,14 +24,14 @@ namespace LibationFileManager
|
|||||||
|
|
||||||
|
|
||||||
// load json into memory. if file doesn't exist, nothing to do. save() will create if needed
|
// load json into memory. if file doesn't exist, nothing to do. save() will create if needed
|
||||||
public static FilterState InMemoryState { get; set; } = null!;
|
public static FilterState? InMemoryState { get; set; }
|
||||||
|
|
||||||
public static bool UseDefault
|
public static bool UseDefault
|
||||||
{
|
{
|
||||||
get => InMemoryState.UseDefault;
|
get => InMemoryState?.UseDefault ?? false;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (UseDefault == value)
|
if (InMemoryState is null || UseDefault == value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
lock (locker)
|
lock (locker)
|
||||||
@ -52,7 +52,8 @@ namespace LibationFileManager
|
|||||||
public string? Name { get; set; } = Name;
|
public string? Name { get; set; } = Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<NamedFilter> Filters => InMemoryState.Filters.AsReadOnly();
|
public static IEnumerable<NamedFilter> Filters
|
||||||
|
=> InMemoryState?.Filters.AsReadOnly() ?? Enumerable.Empty<NamedFilter>();
|
||||||
|
|
||||||
public static void Add(NamedFilter namedFilter)
|
public static void Add(NamedFilter namedFilter)
|
||||||
{
|
{
|
||||||
@ -66,6 +67,7 @@ namespace LibationFileManager
|
|||||||
|
|
||||||
lock (locker)
|
lock (locker)
|
||||||
{
|
{
|
||||||
|
InMemoryState ??= new();
|
||||||
// check for duplicates
|
// check for duplicates
|
||||||
if (InMemoryState.Filters.Select(x => x.Filter).ContainsInsensative(namedFilter.Filter))
|
if (InMemoryState.Filters.Select(x => x.Filter).ContainsInsensative(namedFilter.Filter))
|
||||||
return;
|
return;
|
||||||
@ -79,6 +81,8 @@ namespace LibationFileManager
|
|||||||
{
|
{
|
||||||
lock (locker)
|
lock (locker)
|
||||||
{
|
{
|
||||||
|
if (InMemoryState is null)
|
||||||
|
return;
|
||||||
InMemoryState.Filters.Remove(filter);
|
InMemoryState.Filters.Remove(filter);
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
@ -88,8 +92,7 @@ namespace LibationFileManager
|
|||||||
{
|
{
|
||||||
lock (locker)
|
lock (locker)
|
||||||
{
|
{
|
||||||
var index = InMemoryState.Filters.IndexOf(oldFilter);
|
if (InMemoryState is null || InMemoryState.Filters.IndexOf(oldFilter) < 0)
|
||||||
if (index < 0)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
InMemoryState.Filters = InMemoryState.Filters.Select(f => f == oldFilter ? newFilter : f).ToList();
|
InMemoryState.Filters = InMemoryState.Filters.Select(f => f == oldFilter ? newFilter : f).ToList();
|
||||||
@ -107,6 +110,7 @@ namespace LibationFileManager
|
|||||||
filter.Filter = filter.Filter.Trim();
|
filter.Filter = filter.Filter.Trim();
|
||||||
lock (locker)
|
lock (locker)
|
||||||
{
|
{
|
||||||
|
InMemoryState ??= new();
|
||||||
InMemoryState.Filters = new List<NamedFilter>(filters);
|
InMemoryState.Filters = new List<NamedFilter>(filters);
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user