Skip to content

Commit 6ef36f5

Browse files
committed
Optimize and improve code
1 parent a02a122 commit 6ef36f5

File tree

2 files changed

+59
-56
lines changed

2 files changed

+59
-56
lines changed

v2rayN/ServiceLib/Handler/ConfigHandler.cs

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -871,13 +871,19 @@ public static async Task<int> AddVlessServer(Config config, ProfileItem profileI
871871
public static async Task<Tuple<int, int>> DedupServerList(Config config, string subId)
872872
{
873873
var lstProfile = await AppHandler.Instance.ProfileItems(subId);
874+
if (lstProfile == null)
875+
{
876+
return new Tuple<int, int>(0, 0);
877+
}
874878

875879
List<ProfileItem> lstKeep = new();
876880
List<ProfileItem> lstRemove = new();
877881
if (!config.GuiItem.KeepOlderDedupl)
882+
{
878883
lstProfile.Reverse();
884+
}
879885

880-
foreach (ProfileItem item in lstProfile)
886+
foreach (var item in lstProfile)
881887
{
882888
if (!lstKeep.Exists(i => CompareProfileItem(i, item, false)))
883889
{
@@ -944,35 +950,35 @@ public static async Task<int> AddServerCommon(Config config, ProfileItem profile
944950
return 0;
945951
}
946952

947-
private static bool CompareProfileItem(ProfileItem o, ProfileItem n, bool remarks)
953+
private static bool CompareProfileItem(ProfileItem? o, ProfileItem? n, bool remarks)
948954
{
949955
if (o == null || n == null)
950956
{
951957
return false;
952958
}
953959

960+
return o.ConfigType == n.ConfigType
961+
&& AreEqual(o.Address, n.Address)
962+
&& o.Port == n.Port
963+
&& AreEqual(o.Id, n.Id)
964+
&& AreEqual(o.Security, n.Security)
965+
&& AreEqual(o.Network, n.Network)
966+
&& AreEqual(o.HeaderType, n.HeaderType)
967+
&& AreEqual(o.RequestHost, n.RequestHost)
968+
&& AreEqual(o.Path, n.Path)
969+
&& (o.ConfigType == EConfigType.Trojan || o.StreamSecurity == n.StreamSecurity)
970+
&& AreEqual(o.Flow, n.Flow)
971+
&& AreEqual(o.Sni, n.Sni)
972+
&& AreEqual(o.Alpn, n.Alpn)
973+
&& AreEqual(o.Fingerprint, n.Fingerprint)
974+
&& AreEqual(o.PublicKey, n.PublicKey)
975+
&& AreEqual(o.ShortId, n.ShortId)
976+
&& (!remarks || o.Remarks == n.Remarks);
977+
954978
static bool AreEqual(string? a, string? b)
955979
{
956980
return string.Equals(a, b) || (string.IsNullOrEmpty(a) && string.IsNullOrEmpty(b));
957981
}
958-
959-
return o.ConfigType == n.ConfigType
960-
&& AreEqual(o.Address, n.Address)
961-
&& o.Port == n.Port
962-
&& AreEqual(o.Id, n.Id)
963-
&& AreEqual(o.Security, n.Security)
964-
&& AreEqual(o.Network, n.Network)
965-
&& AreEqual(o.HeaderType, n.HeaderType)
966-
&& AreEqual(o.RequestHost, n.RequestHost)
967-
&& AreEqual(o.Path, n.Path)
968-
&& (o.ConfigType == EConfigType.Trojan || o.StreamSecurity == n.StreamSecurity)
969-
&& AreEqual(o.Flow, n.Flow)
970-
&& AreEqual(o.Sni, n.Sni)
971-
&& AreEqual(o.Alpn, n.Alpn)
972-
&& AreEqual(o.Fingerprint, n.Fingerprint)
973-
&& AreEqual(o.PublicKey, n.PublicKey)
974-
&& AreEqual(o.ShortId, n.ShortId)
975-
&& (!remarks || o.Remarks == n.Remarks);
976982
}
977983

978984
private static async Task<int> RemoveProfileItem(Config config, string indexId)
@@ -1010,8 +1016,7 @@ public static async Task<RetResult> AddCustomServer4Multiple(Config config, List
10101016
return result;
10111017
}
10121018

1013-
var fileName = configPath;
1014-
if (!File.Exists(fileName))
1019+
if (!File.Exists(configPath))
10151020
{
10161021
return result;
10171022
}

v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ from t33 in t3b.DefaultIfEmpty()
448448

449449
private async Task<List<ProfileItem>?> GetProfileItems(bool latest)
450450
{
451-
var lstSelecteds = new List<ProfileItem>();
451+
var lstSelected = new List<ProfileItem>();
452452
if (SelectedProfiles == null || SelectedProfiles.Count <= 0)
453453
{
454454
return null;
@@ -462,16 +462,16 @@ from t33 in t3b.DefaultIfEmpty()
462462
var item = await AppHandler.Instance.GetProfileItem(profile.IndexId);
463463
if (item is not null)
464464
{
465-
lstSelecteds.Add(item);
465+
lstSelected.Add(item);
466466
}
467467
}
468468
}
469469
else
470470
{
471-
lstSelecteds = JsonUtils.Deserialize<List<ProfileItem>>(JsonUtils.Serialize(orderProfiles));
471+
lstSelected = JsonUtils.Deserialize<List<ProfileItem>>(JsonUtils.Serialize(orderProfiles));
472472
}
473473

474-
return lstSelecteds;
474+
return lstSelected;
475475
}
476476

477477
public async Task EditServerAsync(EConfigType eConfigType)
@@ -509,20 +509,20 @@ public async Task EditServerAsync(EConfigType eConfigType)
509509

510510
public async Task RemoveServerAsync()
511511
{
512-
var lstSelecteds = await GetProfileItems(true);
513-
if (lstSelecteds == null)
512+
var lstSelected = await GetProfileItems(true);
513+
if (lstSelected == null)
514514
{
515515
return;
516516
}
517517
if (await _updateView?.Invoke(EViewAction.ShowYesNo, null) == false)
518518
{
519519
return;
520520
}
521-
var exists = lstSelecteds.Exists(t => t.IndexId == _config.IndexId);
521+
var exists = lstSelected.Exists(t => t.IndexId == _config.IndexId);
522522

523-
await ConfigHandler.RemoveServers(_config, lstSelecteds);
523+
await ConfigHandler.RemoveServers(_config, lstSelected);
524524
NoticeHandler.Instance.Enqueue(ResUI.OperationSuccess);
525-
if (lstSelecteds.Count == _profileItems.Count)
525+
if (lstSelected.Count == _profileItems.Count)
526526
{
527527
_profileItems.Clear();
528528
}
@@ -536,19 +536,22 @@ public async Task RemoveServerAsync()
536536
private async Task RemoveDuplicateServer()
537537
{
538538
var tuple = await ConfigHandler.DedupServerList(_config, _config.SubIndexId);
539-
RefreshServers();
540-
Reload();
539+
if (tuple.Item1 > 0 || tuple.Item2 > 0)
540+
{
541+
RefreshServers();
542+
Reload();
543+
}
541544
NoticeHandler.Instance.Enqueue(string.Format(ResUI.RemoveDuplicateServerResult, tuple.Item1, tuple.Item2));
542545
}
543546

544547
private async Task CopyServer()
545548
{
546-
var lstSelecteds = await GetProfileItems(false);
547-
if (lstSelecteds == null)
549+
var lstSelected = await GetProfileItems(false);
550+
if (lstSelected == null)
548551
{
549552
return;
550553
}
551-
if (await ConfigHandler.CopyServer(_config, lstSelecteds) == 0)
554+
if (await ConfigHandler.CopyServer(_config, lstSelected) == 0)
552555
{
553556
RefreshServers();
554557
NoticeHandler.Instance.Enqueue(ResUI.OperationSuccess);
@@ -564,7 +567,7 @@ public async Task SetDefaultServer()
564567
await SetDefaultServer(SelectedProfile.IndexId);
565568
}
566569

567-
public async Task SetDefaultServer(string indexId)
570+
public async Task SetDefaultServer(string? indexId)
568571
{
569572
if (indexId.IsNullOrEmpty())
570573
{
@@ -594,11 +597,7 @@ private async Task ServerSelectedChanged(bool c)
594597
{
595598
return;
596599
}
597-
if (SelectedServer == null)
598-
{
599-
return;
600-
}
601-
if (SelectedServer.ID.IsNullOrEmpty())
600+
if (SelectedServer == null || SelectedServer.ID.IsNullOrEmpty())
602601
{
603602
return;
604603
}
@@ -624,13 +623,13 @@ public async Task ShareServerAsync()
624623

625624
private async Task SetDefaultMultipleServer(ECoreType coreType)
626625
{
627-
var lstSelecteds = await GetProfileItems(true);
628-
if (lstSelecteds == null)
626+
var lstSelected = await GetProfileItems(true);
627+
if (lstSelected == null)
629628
{
630629
return;
631630
}
632631

633-
var ret = await ConfigHandler.AddCustomServer4Multiple(_config, lstSelecteds, coreType);
632+
var ret = await ConfigHandler.AddCustomServer4Multiple(_config, lstSelected, coreType);
634633
if (ret.Success != true)
635634
{
636635
NoticeHandler.Instance.Enqueue(ResUI.OperationFailed);
@@ -679,19 +678,18 @@ private async Task MoveToGroup(bool c)
679678
return;
680679
}
681680

682-
var lstSelecteds = await GetProfileItems(true);
683-
if (lstSelecteds == null)
681+
var lstSelected = await GetProfileItems(true);
682+
if (lstSelected == null)
684683
{
685684
return;
686685
}
687686

688-
await ConfigHandler.MoveToGroup(_config, lstSelecteds, SelectedMoveToGroup.Id);
687+
await ConfigHandler.MoveToGroup(_config, lstSelected, SelectedMoveToGroup.Id);
689688
NoticeHandler.Instance.Enqueue(ResUI.OperationSuccess);
690689

691690
RefreshServers();
692691
SelectedMoveToGroup = null;
693692
SelectedMoveToGroup = new();
694-
//Reload();
695693
}
696694

697695
public async Task MoveServer(EMove eMove)
@@ -703,7 +701,7 @@ public async Task MoveServer(EMove eMove)
703701
return;
704702
}
705703

706-
int index = _lstProfile.IndexOf(item);
704+
var index = _lstProfile.IndexOf(item);
707705
if (index < 0)
708706
{
709707
return;
@@ -732,14 +730,14 @@ public async Task ServerSpeedtest(ESpeedActionType actionType)
732730
{
733731
SelectedProfiles = _profileItems;
734732
}
735-
var lstSelecteds = await GetProfileItems(false);
736-
if (lstSelecteds == null)
733+
var lstSelected = await GetProfileItems(false);
734+
if (lstSelected == null)
737735
{
738736
return;
739737
}
740738

741739
_speedtestService ??= new SpeedtestService(_config, (SpeedTestResult result) => _updateView?.Invoke(EViewAction.DispatcherSpeedTest, result));
742-
_speedtestService?.RunLoop(actionType, lstSelecteds);
740+
_speedtestService?.RunLoop(actionType, lstSelected);
743741
}
744742

745743
public void ServerSpeedtestStop()
@@ -793,14 +791,14 @@ public async Task Export2ClientConfigResult(string fileName, ProfileItem item)
793791

794792
public async Task Export2ShareUrlAsync(bool blEncode)
795793
{
796-
var lstSelecteds = await GetProfileItems(true);
797-
if (lstSelecteds == null)
794+
var lstSelected = await GetProfileItems(true);
795+
if (lstSelected == null)
798796
{
799797
return;
800798
}
801799

802800
StringBuilder sb = new();
803-
foreach (var it in lstSelecteds)
801+
foreach (var it in lstSelected)
804802
{
805803
var url = FmtHandler.GetShareUri(it);
806804
if (url.IsNullOrEmpty())

0 commit comments

Comments
 (0)