#pragma once #include #include #include #include class Settings; class ConfigManager { public: struct ConfigData { QString ownerUuid; QString serverName; QString serializedConfig; QJsonObject parsedConfig; }; explicit ConfigManager(const std::shared_ptr &settings); std::optional buildConfig(QString &errorDescription) const; bool writeTempConfig(const QString &serializedConfig, QString &configPath, QString &errorDescription) const; bool removeTempConfig() const; QString tempConfigPath() const; private: std::optional findServerByUuid(const QString &uuid) const; std::optional extractSerializedXrayConfig(const QJsonObject &server) const; QString tempDirectory() const; std::shared_ptr m_settings; };