Revert "fix: some fixes when updating the subscription with exactly the same protocol/host/port pair but different name"

This reverts commit 1cabc14835.
This commit is contained in:
Qv2ray-dev 2020-03-14 16:27:12 +08:00
parent e5755ec107
commit 7273bf9fb8
6 changed files with 16 additions and 17 deletions

View File

@ -1 +1 @@
4688 4687

View File

@ -50,9 +50,9 @@ namespace Qv2ray::core
inline const static auto NullGroupId = GroupId("null"); inline const static auto NullGroupId = GroupId("null");
template<typename IDType> template<typename IDType>
QSet<IDType> StringsToIdSet(const QList<QString> &strings) QList<IDType> StringsToIdList(const QList<QString> &strings)
{ {
QSet<IDType> list; QList<IDType> list;
for (auto str : strings) for (auto str : strings)
{ {
@ -63,7 +63,7 @@ namespace Qv2ray::core
} }
template<typename IDType> template<typename IDType>
QList<QString> IdListToStrings(const QSet<IDType> &ids) QList<QString> IdListToStrings(const QList<IDType> &ids)
{ {
QList<QString> list; QList<QString> list;
@ -104,7 +104,7 @@ namespace Qv2ray::core
{ {
// Implicit base of two types, since group object is actually the group base object. // Implicit base of two types, since group object is actually the group base object.
bool isSubscription = false; bool isSubscription = false;
QSet<ConnectionId> connections; QList<ConnectionId> connections;
// Suger for down casting. // Suger for down casting.
GroupMetaObject() : connections() GroupMetaObject() : connections()
{ {
@ -114,7 +114,7 @@ namespace Qv2ray::core
this->isSubscription = false; this->isSubscription = false;
this->displayName = base.displayName; this->displayName = base.displayName;
this->importDate = base.importDate; this->importDate = base.importDate;
this->connections = StringsToIdSet<ConnectionId>(base.connections); this->connections = StringsToIdList<ConnectionId>(base.connections);
} }
// Suger for down casting. // Suger for down casting.
GroupMetaObject(const SubscriptionObject_Config &base) : GroupMetaObject((GroupObject_Config) base) GroupMetaObject(const SubscriptionObject_Config &base) : GroupMetaObject((GroupObject_Config) base)

View File

@ -223,7 +223,7 @@ namespace Qv2ray::core::handlers
id.toString() + QV2RAY_CONFIG_FILE_EXTENSION); id.toString() + QV2RAY_CONFIG_FILE_EXTENSION);
// //
connections.remove(id); connections.remove(id);
groups[groupId].connections.remove(id); groups[groupId].connections.removeAll(id);
emit OnConnectionDeleted(id, groupId); emit OnConnectionDeleted(id, groupId);
// //
bool exists = connectionFile.exists(); bool exists = connectionFile.exists();
@ -259,8 +259,8 @@ namespace Qv2ray::core::handlers
{ {
LOG(MODULE_FILEIO, "Cannot rename") LOG(MODULE_FILEIO, "Cannot rename")
} }
groups[oldgid].connections.remove(id); groups[oldgid].connections.removeAll(id);
groups[newGroupId].connections << id; groups[newGroupId].connections.append(id);
connections[id].groupId = newGroupId; connections[id].groupId = newGroupId;
// //
emit OnConnectionGroupChanged(id, oldgid, newGroupId); emit OnConnectionGroupChanged(id, oldgid, newGroupId);
@ -521,8 +521,7 @@ namespace Qv2ray::core::handlers
groups[id].connections << _conn; groups[id].connections << _conn;
UpdateConnection(_conn, config); UpdateConnection(_conn, config);
// Remove Connection Id from the list. // Remove Connection Id from the list.
connectionsOrig.remove(_conn); connectionsOrig.removeAll(_conn);
typeMap.remove(typeMap.key(_conn));
} }
else if (canGetOutboundData && typeMap.contains(outboundData)) else if (canGetOutboundData && typeMap.contains(outboundData))
{ {
@ -533,8 +532,7 @@ namespace Qv2ray::core::handlers
UpdateConnection(_conn, config); UpdateConnection(_conn, config);
RenameConnection(_conn, _alias); RenameConnection(_conn, _alias);
// Remove Connection Id from the list. // Remove Connection Id from the list.
connectionsOrig.remove(_conn); connectionsOrig.removeAll(_conn);
nameMap.remove(nameMap.key(_conn));
} }
else else
{ {
@ -552,6 +550,7 @@ namespace Qv2ray::core::handlers
LOG(MODULE_CORE_HANDLER, "Removing: " + conn.toString()) LOG(MODULE_CORE_HANDLER, "Removing: " + conn.toString())
DeleteConnection(conn); DeleteConnection(conn);
} }
// Update the time // Update the time
groups[id].lastUpdated = system_clock::to_time_t(system_clock::now()); groups[id].lastUpdated = system_clock::to_time_t(system_clock::now());

View File

@ -40,7 +40,7 @@ namespace Qv2ray::core::handlers
{ {
return connections.keys(); return connections.keys();
} }
inline const QSet<ConnectionId> Connections(const GroupId &groupId) const inline const QList<ConnectionId> Connections(const GroupId &groupId) const
{ {
CheckGroupExistance(groupId); CheckGroupExistance(groupId);
return groups[groupId].connections; return groups[groupId].connections;
@ -124,7 +124,7 @@ namespace Qv2ray::core::handlers
// //
void OnGroupCreated(const GroupId &id, const QString &displayName); void OnGroupCreated(const GroupId &id, const QString &displayName);
void OnGroupRenamed(const GroupId &id, const QString &oldName, const QString &newName); void OnGroupRenamed(const GroupId &id, const QString &oldName, const QString &newName);
void OnGroupDeleted(const GroupId &id, const QSet<ConnectionId> &connections); void OnGroupDeleted(const GroupId &id, const QList<ConnectionId> &connections);
// //
void OnSubscriptionUpdateFinished(const GroupId &id); void OnSubscriptionUpdateFinished(const GroupId &id);

View File

@ -854,7 +854,7 @@ void MainWindow::OnGroupCreated(const GroupId &id, const QString &displayName)
Q_UNUSED(displayName) Q_UNUSED(displayName)
MWAddGroupItem_p(id); MWAddGroupItem_p(id);
} }
void MainWindow::OnGroupDeleted(const GroupId &id, const QSet<ConnectionId> &connections) void MainWindow::OnGroupDeleted(const GroupId &id, const QList<ConnectionId> &connections)
{ {
for (auto conn : connections) for (auto conn : connections)
{ {

View File

@ -81,7 +81,7 @@ class MainWindow
void OnConnectionGroupChanged(const ConnectionId &id, const GroupId &originalGroup, const GroupId &newGroup); void OnConnectionGroupChanged(const ConnectionId &id, const GroupId &originalGroup, const GroupId &newGroup);
// //
void OnGroupCreated(const GroupId &id, const QString &displayName); void OnGroupCreated(const GroupId &id, const QString &displayName);
void OnGroupDeleted(const GroupId &id, const QSet<ConnectionId> &connections); void OnGroupDeleted(const GroupId &id, const QList<ConnectionId> &connections);
// //
void on_action_StartThis_triggered(); void on_action_StartThis_triggered();
void on_action_RCM_SetAutoConnection_triggered(); void on_action_RCM_SetAutoConnection_triggered();