feature: added share vpn key to subscription settings page

This commit is contained in:
vladimir.kuznetsov 2025-02-12 12:43:11 +07:00
parent 07baf0ed65
commit db3164223a
12 changed files with 147 additions and 52 deletions

View file

@ -1,10 +1,11 @@
#include "ApiConfigsController.h"
#include "apiConfigsController.h"
#include "configurators/wireguard_configurator.h"
#include "core/api/apiDefs.h"
#include "core/controllers/gatewayController.h"
#include "version.h"
#include "core/qrCodeUtils.h"
#include "ui/controllers/systemController.h"
#include "version.h"
namespace
{
@ -43,7 +44,7 @@ namespace
}
ApiConfigsController::ApiConfigsController(const QSharedPointer<ServersModel> &serversModel, const std::shared_ptr<Settings> &settings,
QObject *parent)
QObject *parent)
: QObject(parent), m_serversModel(serversModel), m_settings(settings)
{
}
@ -84,6 +85,19 @@ bool ApiConfigsController::exportNativeConfig(const QString &serverCountryCode,
return true;
}
void ApiConfigsController::prepareVpnKeyExport()
{
auto serverConfigObject = m_serversModel->getServerConfig(m_serversModel->getProcessedServerIndex());
auto apiConfigObject = serverConfigObject.value(configKey::apiConfig).toObject();
auto vpnKey = apiConfigObject.value(apiDefs::key::vpnKey).toString();
auto qr = qrCodeUtuls::generateQrCode(vpnKey.toUtf8());
m_qrCodes << qrCodeUtuls::svgToBase64(QString::fromStdString(toSvgString(qr, 1)));
emit vpnKeyExportReady();
}
ApiConfigsController::ApiPayloadData ApiConfigsController::generateApiPayloadData(const QString &protocol)
{
ApiConfigsController::ApiPayloadData apiPayload;
@ -111,3 +125,13 @@ QJsonObject ApiConfigsController::fillApiPayload(const QString &protocol, const
return obj;
}
QList<QString> ApiConfigsController::getQrCodes()
{
return m_qrCodes;
}
int ApiConfigsController::getQrCodesCount()
{
return m_qrCodes.size();
}

View file

@ -13,11 +13,17 @@ public:
ApiConfigsController(const QSharedPointer<ServersModel> &serversModel, const std::shared_ptr<Settings> &settings,
QObject *parent = nullptr);
Q_PROPERTY(QList<QString> qrCodes READ getQrCodes NOTIFY vpnKeyExportReady)
Q_PROPERTY(int qrCodesCount READ getQrCodesCount NOTIFY vpnKeyExportReady)
public slots:
bool exportNativeConfig(const QString &serverCountryCode, const QString &fileName);
// bool exportVpnKey(const QString &fileName);
void prepareVpnKeyExport();
signals:
void errorOccurred(ErrorCode errorCode);
void vpnKeyExportReady();
private:
struct ApiPayloadData
@ -31,6 +37,11 @@ private:
ApiPayloadData generateApiPayloadData(const QString &protocol);
QJsonObject fillApiPayload(const QString &protocol, const ApiPayloadData &apiPayloadData);
QList<QString> getQrCodes();
int getQrCodesCount();
QList<QString> m_qrCodes;
QSharedPointer<ServersModel> m_serversModel;
std::shared_ptr<Settings> m_settings;
};