From 25f29500f8a58f62eb83efe1657374bb78ed00bf Mon Sep 17 00:00:00 2001 From: Nova Date: Sun, 20 Jul 2025 17:43:48 +0330 Subject: [PATCH] Make built-in profiles save-able and deletable --- src/dataStore/Database.cpp | 17 +++++++++++++---- src/dataStore/RouteEntity.cpp | 8 ++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/dataStore/Database.cpp b/src/dataStore/Database.cpp index bd7342c..826b0d2 100644 --- a/src/dataStore/Database.cpp +++ b/src/dataStore/Database.cpp @@ -106,14 +106,23 @@ namespace Configs { profileManager->AddGroup(defaultGroup); } + // First setup if (routes.empty()) { auto defaultRoute = RoutingChain::GetDefaultChain(); profileManager->AddRouteChain(defaultRoute); - } - routes[IranBypassChainID] = RoutingChain::GetIranDefaultChain(); - routes[ChinaBypassChainID] = RoutingChain::GetChinaDefaultChain(); - routes[RussiaBypassChainID] = RoutingChain::GetRussiaDefaultChain(); + routes[IranBypassChainID] = RoutingChain::GetIranDefaultChain(); + routesIdOrder.push_back(IranBypassChainID); + routes[IranBypassChainID]->Save(); + + routes[ChinaBypassChainID] = RoutingChain::GetChinaDefaultChain(); + routesIdOrder.push_back(ChinaBypassChainID); + routes[ChinaBypassChainID]->Save(); + + routes[RussiaBypassChainID] = RoutingChain::GetRussiaDefaultChain(); + routesIdOrder.push_back(RussiaBypassChainID); + routes[RussiaBypassChainID]->Save(); + } } void ProfileManager::SaveManager() { diff --git a/src/dataStore/RouteEntity.cpp b/src/dataStore/RouteEntity.cpp index 75c9b89..b4421d5 100644 --- a/src/dataStore/RouteEntity.cpp +++ b/src/dataStore/RouteEntity.cpp @@ -597,7 +597,7 @@ namespace Configs { auto chain = std::make_shared(); chain->name = "Bypass Iran"; chain->id = IranBypassChainID; - chain->save_control_no_save = true; + chain->fn = QString("route_profiles/%1.json").arg(chain->id); auto rule0 = std::make_shared(); rule0->name = "Route DNS"; @@ -624,7 +624,7 @@ namespace Configs { auto chain = std::make_shared(); chain->name = "Bypass China"; chain->id = ChinaBypassChainID; - chain->save_control_no_save = true; + chain->fn = QString("route_profiles/%1.json").arg(chain->id); auto rule0 = std::make_shared(); rule0->name = "Route DNS"; @@ -651,7 +651,7 @@ namespace Configs { auto chain = std::make_shared(); chain->name = "Bypass Russia"; chain->id = RussiaBypassChainID; - chain->save_control_no_save = true; + chain->fn = QString("route_profiles/%1.json").arg(chain->id); auto rule0 = std::make_shared(); rule0->name = "Route DNS"; @@ -894,7 +894,7 @@ namespace Configs { bool RoutingChain::Save() { castedRules.clear(); for (const auto &item: Rules) { - castedRules.push_back(dynamic_cast(item.get())); + castedRules.push_back(item.get()); } return JsonStore::Save(); }