mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-08 14:33:23 +00:00
chore: add isInAppPurchase and isTestPurchase in primary config
This commit is contained in:
@@ -72,6 +72,7 @@ namespace apiDefs
|
||||
|
||||
constexpr QLatin1String transactionId("transaction_id");
|
||||
constexpr QLatin1String isTestPurchase("is_test_purchase");
|
||||
constexpr QLatin1String isInAppPurchase("is_in_app_purchase");
|
||||
|
||||
constexpr QLatin1String userCountryCode("user_country_code");
|
||||
|
||||
|
||||
@@ -343,6 +343,7 @@ QStringList GatewayController::getProxyUrls(const QString &serviceType, const QS
|
||||
qDebug() << "empty storage endpoint list";
|
||||
return {};
|
||||
}
|
||||
|
||||
std::random_device randomDevice;
|
||||
std::mt19937 generator(randomDevice());
|
||||
std::shuffle(baseUrls.begin(), baseUrls.end(), generator);
|
||||
|
||||
@@ -980,18 +980,13 @@ ErrorCode ApiConfigsController::importServiceFromBilling(const QByteArray &respo
|
||||
return ErrorCode::ApiPurchaseError;
|
||||
}
|
||||
|
||||
duplicateServerIndex = m_serversModel->indexOfServerWithVpnKey(key);
|
||||
if (duplicateServerIndex >= 0) {
|
||||
qInfo().noquote() << "[IAP] Subscription config with the same vpn_key already exists";
|
||||
return ErrorCode::ApiConfigAlreadyAdded;
|
||||
}
|
||||
|
||||
QString normalizedKey = key;
|
||||
normalizedKey.replace(QStringLiteral("vpn://"), QString());
|
||||
|
||||
QByteArray configString = QByteArray::fromBase64(normalizedKey.toUtf8(), QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals);
|
||||
QByteArray configUncompressed = qUncompress(configString);
|
||||
if (!configUncompressed.isEmpty()) {
|
||||
const bool payloadWasCompressed = !configUncompressed.isEmpty();
|
||||
if (payloadWasCompressed) {
|
||||
configString = configUncompressed;
|
||||
}
|
||||
|
||||
@@ -1002,12 +997,27 @@ ErrorCode ApiConfigsController::importServiceFromBilling(const QByteArray &respo
|
||||
|
||||
QJsonObject configObject = QJsonDocument::fromJson(configString).object();
|
||||
|
||||
quint16 crc = qChecksum(QJsonDocument(configObject).toJson());
|
||||
auto apiConfig = configObject.value(apiDefs::key::apiConfig).toObject();
|
||||
apiConfig[apiDefs::key::vpnKey] = normalizedKey;
|
||||
apiConfig[apiDefs::key::isTestPurchase] = isTestPurchase;
|
||||
|
||||
apiConfig.insert(apiDefs::key::isTestPurchase, isTestPurchase);
|
||||
apiConfig.insert(apiDefs::key::isInAppPurchase, true);
|
||||
configObject.insert(apiDefs::key::apiConfig, apiConfig);
|
||||
|
||||
configString = QJsonDocument(configObject).toJson();
|
||||
if (payloadWasCompressed) {
|
||||
configString = qCompress(configString, 8);
|
||||
}
|
||||
normalizedKey = QString(configString.toBase64(QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals));
|
||||
|
||||
duplicateServerIndex = m_serversModel->indexOfServerWithVpnKey(normalizedKey);
|
||||
if (duplicateServerIndex >= 0) {
|
||||
qInfo().noquote() << "[IAP] Subscription config with the same vpn_key already exists";
|
||||
return ErrorCode::ApiConfigAlreadyAdded;
|
||||
}
|
||||
|
||||
apiConfig.insert(apiDefs::key::vpnKey, normalizedKey);
|
||||
configObject.insert(apiDefs::key::apiConfig, apiConfig);
|
||||
|
||||
quint16 crc = qChecksum(QJsonDocument(configObject).toJson());
|
||||
configObject.insert(config_key::crc, crc);
|
||||
m_serversModel->addServer(configObject);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user