mirror of
https://github.com/2dust/v2rayN.git
synced 2025-07-07 00:04:21 +00:00
Improve and optimize the active rules code in routing settings
This commit is contained in:
parent
1d01476523
commit
da3d4c36a9
5 changed files with 32 additions and 13 deletions
|
@ -1857,12 +1857,25 @@ public class ConfigHandler
|
||||||
/// <returns>0 if successful</returns>
|
/// <returns>0 if successful</returns>
|
||||||
public static async Task<int> SetDefaultRouting(Config config, RoutingItem routingItem)
|
public static async Task<int> SetDefaultRouting(Config config, RoutingItem routingItem)
|
||||||
{
|
{
|
||||||
if (await SQLiteHelper.Instance.TableAsync<RoutingItem>().Where(t => t.Id == routingItem.Id).CountAsync() > 0)
|
var items = await AppHandler.Instance.RoutingItems();
|
||||||
|
if (items.Any(t => t.Id == routingItem.Id && t.IsActive == true))
|
||||||
{
|
{
|
||||||
config.RoutingBasicItem.RoutingIndexId = routingItem.Id;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
await SaveConfig(config);
|
foreach (var item in items)
|
||||||
|
{
|
||||||
|
if (item.Id == routingItem.Id)
|
||||||
|
{
|
||||||
|
item.IsActive = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.IsActive = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await SQLiteHelper.Instance.UpdateAllAsync(items);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1875,7 +1888,7 @@ public class ConfigHandler
|
||||||
/// <returns>The default routing item</returns>
|
/// <returns>The default routing item</returns>
|
||||||
public static async Task<RoutingItem> GetDefaultRouting(Config config)
|
public static async Task<RoutingItem> GetDefaultRouting(Config config)
|
||||||
{
|
{
|
||||||
var item = await AppHandler.Instance.GetRoutingItem(config.RoutingBasicItem.RoutingIndexId);
|
var item = await SQLiteHelper.Instance.TableAsync<RoutingItem>().FirstOrDefaultAsync(it => it.IsActive == true);
|
||||||
if (item is null)
|
if (item is null)
|
||||||
{
|
{
|
||||||
var item2 = await SQLiteHelper.Instance.TableAsync<RoutingItem>().FirstOrDefaultAsync();
|
var item2 = await SQLiteHelper.Instance.TableAsync<RoutingItem>().FirstOrDefaultAsync();
|
||||||
|
@ -1983,6 +1996,18 @@ public class ConfigHandler
|
||||||
|
|
||||||
if (!blImportAdvancedRules && items.Count > 0)
|
if (!blImportAdvancedRules && items.Count > 0)
|
||||||
{
|
{
|
||||||
|
//migrate
|
||||||
|
//TODO Temporary code to be removed later
|
||||||
|
if (config.RoutingBasicItem.RoutingIndexId.IsNotEmpty())
|
||||||
|
{
|
||||||
|
var item = items.FirstOrDefault(t => t.Id == config.RoutingBasicItem.RoutingIndexId);
|
||||||
|
if (item != null)
|
||||||
|
{
|
||||||
|
await SetDefaultRouting(config, item);
|
||||||
|
}
|
||||||
|
config.RoutingBasicItem.RoutingIndexId = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,4 +19,5 @@ public class RoutingItem
|
||||||
public string DomainStrategy { get; set; }
|
public string DomainStrategy { get; set; }
|
||||||
public string DomainStrategy4Singbox { get; set; }
|
public string DomainStrategy4Singbox { get; set; }
|
||||||
public int Sort { get; set; }
|
public int Sort { get; set; }
|
||||||
|
public bool IsActive { get; set; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,5 +3,4 @@ namespace ServiceLib.Models;
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class RoutingItemModel : RoutingItem
|
public class RoutingItemModel : RoutingItem
|
||||||
{
|
{
|
||||||
public bool IsActive { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,11 +91,9 @@ public class RoutingSettingViewModel : MyReactiveObject
|
||||||
var routings = await AppHandler.Instance.RoutingItems();
|
var routings = await AppHandler.Instance.RoutingItems();
|
||||||
foreach (var item in routings)
|
foreach (var item in routings)
|
||||||
{
|
{
|
||||||
var def = item.Id == _config.RoutingBasicItem.RoutingIndexId;
|
|
||||||
|
|
||||||
var it = new RoutingItemModel()
|
var it = new RoutingItemModel()
|
||||||
{
|
{
|
||||||
IsActive = def,
|
IsActive = item.IsActive,
|
||||||
RuleNum = item.RuleNum,
|
RuleNum = item.RuleNum,
|
||||||
Id = item.Id,
|
Id = item.Id,
|
||||||
Remarks = item.Remarks,
|
Remarks = item.Remarks,
|
||||||
|
|
|
@ -372,7 +372,7 @@ public class StatusBarViewModel : MyReactiveObject
|
||||||
foreach (var item in routings)
|
foreach (var item in routings)
|
||||||
{
|
{
|
||||||
_routingItems.Add(item);
|
_routingItems.Add(item);
|
||||||
if (item.Id == _config.RoutingBasicItem.RoutingIndexId)
|
if (item.IsActive)
|
||||||
{
|
{
|
||||||
SelectedRouting = item;
|
SelectedRouting = item;
|
||||||
}
|
}
|
||||||
|
@ -396,10 +396,6 @@ public class StatusBarViewModel : MyReactiveObject
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (_config.RoutingBasicItem.RoutingIndexId == item.Id)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (await ConfigHandler.SetDefaultRouting(_config, item) == 0)
|
if (await ConfigHandler.SetDefaultRouting(_config, item) == 0)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue