feature: added page for export api native configs
This commit is contained in:
parent
389c1f5327
commit
42d3d9b98a
30 changed files with 461 additions and 129 deletions
|
@ -12,9 +12,9 @@ namespace
|
|||
namespace configKey
|
||||
{
|
||||
constexpr char availableCountries[] = "available_countries";
|
||||
constexpr char serverCountryCode[] = "server_country_code";
|
||||
constexpr char serverCountryName[] = "server_country_name";
|
||||
constexpr char lastUpdated[] = "last_updated";
|
||||
// constexpr char serverCountryCode[] = "server_country_code";
|
||||
// constexpr char serverCountryName[] = "server_country_name";
|
||||
// constexpr char lastUpdated[] = "last_updated";
|
||||
constexpr char activeDeviceCount[] = "active_device_count";
|
||||
constexpr char maxDeviceCount[] = "max_device_count";
|
||||
constexpr char subscriptionEndDate[] = "subscription_end_date";
|
||||
|
@ -38,7 +38,7 @@ QVariant ApiAccountInfoModel::data(const QModelIndex &index, int role) const
|
|||
|
||||
switch (role) {
|
||||
case SubscriptionStatusRole: {
|
||||
return ApiUtils::isSubscriptionExpired(m_accountInfoData.subscriptionEndDate) ? tr("Inactive") : tr("Active");
|
||||
return apiUtils::isSubscriptionExpired(m_accountInfoData.subscriptionEndDate) ? tr("Inactive") : tr("Active");
|
||||
}
|
||||
case EndDateRole: {
|
||||
return QDateTime::fromString(m_accountInfoData.subscriptionEndDate, Qt::ISODate).toLocalTime().toString("d MMM yyyy");
|
||||
|
@ -46,9 +46,15 @@ QVariant ApiAccountInfoModel::data(const QModelIndex &index, int role) const
|
|||
case ConnectedDevicesRole: {
|
||||
return tr("%1 out of %2").arg(m_accountInfoData.activeDeviceCount).arg(m_accountInfoData.maxDeviceCount);
|
||||
}
|
||||
// case ServiceDescriptionRole: {
|
||||
// return apiServiceData.serviceInfo.name;
|
||||
// }
|
||||
case ServiceDescriptionRole: {
|
||||
if (m_accountInfoData.configType == apiDefs::ConfigType::AmneziaPremiumV2) {
|
||||
return tr("Classic VPN for comfortable work, downloading large files and watching videos. Works for any sites. Speed up to 200 "
|
||||
"Mb/s");
|
||||
} else if (m_accountInfoData.configType == apiDefs::ConfigType::AmneziaFreeV3) {
|
||||
return tr("Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and "
|
||||
"more. YouTube is not included in the free plan.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
|
@ -60,21 +66,23 @@ void ApiAccountInfoModel::updateModel(const QJsonObject &accountInfoObject, cons
|
|||
|
||||
AccountInfoData accountInfoData;
|
||||
|
||||
auto availableCountries = accountInfoObject.value(configKey::availableCountries).toArray();
|
||||
for (const auto &country : availableCountries) {
|
||||
auto countryObject = country.toObject();
|
||||
CountryInfo countryInfo;
|
||||
countryInfo.serverCountryCode = countryObject.value(configKey::serverCountryCode).toString();
|
||||
countryInfo.serverCountryName = countryObject.value(configKey::serverCountryName).toString();
|
||||
countryInfo.lastUpdated = countryObject.value(configKey::lastUpdated).toString();
|
||||
m_availableCountries = accountInfoObject.value(configKey::availableCountries).toArray();
|
||||
// for (const auto &country : availableCountries) {
|
||||
// auto countryObject = country.toObject();
|
||||
// CountryInfo countryInfo;
|
||||
// countryInfo.serverCountryCode = countryObject.value(configKey::serverCountryCode).toString();
|
||||
// countryInfo.serverCountryName = countryObject.value(configKey::serverCountryName).toString();
|
||||
// countryInfo.lastUpdated = countryObject.value(configKey::lastUpdated).toString();
|
||||
|
||||
accountInfoData.AvailableCountries.push_back(countryInfo);
|
||||
}
|
||||
// accountInfoData.AvailableCountries.push_back(countryInfo);
|
||||
// }
|
||||
|
||||
accountInfoData.activeDeviceCount = accountInfoObject.value(configKey::activeDeviceCount).toInt();
|
||||
accountInfoData.maxDeviceCount = accountInfoObject.value(configKey::maxDeviceCount).toInt();
|
||||
accountInfoData.subscriptionEndDate = accountInfoObject.value(configKey::subscriptionEndDate).toString();
|
||||
|
||||
accountInfoData.configType = apiUtils::getConfigType(serverConfig);
|
||||
|
||||
m_accountInfoData = accountInfoData;
|
||||
|
||||
endResetModel();
|
||||
|
@ -93,6 +101,11 @@ QVariant ApiAccountInfoModel::data(const QString &roleString)
|
|||
return {};
|
||||
}
|
||||
|
||||
QJsonArray ApiAccountInfoModel::getAvailableCountries()
|
||||
{
|
||||
return m_availableCountries;
|
||||
}
|
||||
|
||||
QHash<int, QByteArray> ApiAccountInfoModel::roleNames() const
|
||||
{
|
||||
QHash<int, QByteArray> roles;
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
#include <QJsonArray>
|
||||
#include <QJsonObject>
|
||||
|
||||
#include "core/api/apiDefs.h"
|
||||
|
||||
class ApiAccountInfoModel : public QAbstractListModel
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -27,29 +29,23 @@ public slots:
|
|||
void updateModel(const QJsonObject &accountInfoObject, const QJsonObject &serverConfig);
|
||||
QVariant data(const QString &roleString);
|
||||
|
||||
QJsonArray getAvailableCountries();
|
||||
|
||||
protected:
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
|
||||
private:
|
||||
struct CountryInfo
|
||||
{
|
||||
QString serverCountryCode;
|
||||
QString serverCountryName;
|
||||
QString lastUpdated;
|
||||
};
|
||||
|
||||
struct AccountInfoData
|
||||
{
|
||||
QString subscriptionEndDate;
|
||||
int activeDeviceCount;
|
||||
int maxDeviceCount;
|
||||
|
||||
QString vpnKey;
|
||||
|
||||
QVector<CountryInfo> AvailableCountries;
|
||||
apiDefs::ConfigType configType;
|
||||
};
|
||||
|
||||
AccountInfoData m_accountInfoData;
|
||||
QJsonArray m_availableCountries;
|
||||
};
|
||||
|
||||
#endif // APIACCOUNTINFOMODEL_H
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include "servers_model.h"
|
||||
|
||||
#include "core/api/apiDefs.h"
|
||||
#include "core/controllers/serverController.h"
|
||||
#include "core/enums/apiEnums.h"
|
||||
#include "core/networkUtilities.h"
|
||||
|
||||
#ifdef Q_OS_IOS
|
||||
|
@ -132,10 +132,10 @@ QVariant ServersModel::data(const QModelIndex &index, int role) const
|
|||
return serverHasInstalledContainers(index.row());
|
||||
}
|
||||
case IsServerFromTelegramApiRole: {
|
||||
return server.value(config_key::configVersion).toInt() == ApiConfigSources::Telegram;
|
||||
return server.value(config_key::configVersion).toInt() == apiDefs::ConfigSource::Telegram;
|
||||
}
|
||||
case IsServerFromGatewayApiRole: {
|
||||
return server.value(config_key::configVersion).toInt() == ApiConfigSources::AmneziaGateway;
|
||||
return server.value(config_key::configVersion).toInt() == apiDefs::ConfigSource::AmneziaGateway;
|
||||
}
|
||||
case ApiConfigRole: {
|
||||
return apiConfig;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue