mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-23 02:00:20 +07:00
Feat: Add deep link
This commit is contained in:
@@ -340,3 +340,19 @@ void CoreController::importConfigFromData(const QString &data)
|
||||
m_importController->importConfig();
|
||||
}
|
||||
}
|
||||
|
||||
void CoreController::openVpnKeyImportPreview(const QString &data)
|
||||
{
|
||||
if (!m_importController || data.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
emit m_pageController->goToPageHome();
|
||||
if (!m_importController->extractConfigFromData(data)) {
|
||||
return;
|
||||
}
|
||||
emit m_pageController->goToPageViewConfig();
|
||||
#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
|
||||
emit m_pageController->raiseMainWindow();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -116,6 +116,8 @@ public:
|
||||
|
||||
void openConnectionByIndex(int serverIndex);
|
||||
void importConfigFromData(const QString &data);
|
||||
/** Navigate home, parse key, open preview (same path as mobile deep link / share). */
|
||||
void openVpnKeyImportPreview(const QString &data);
|
||||
void updateTranslator(const QLocale &locale);
|
||||
|
||||
signals:
|
||||
|
||||
@@ -361,10 +361,8 @@ void CoreSignalHandlers::initAndroidConnectionHandler()
|
||||
m_coreController->m_connectionController->restoreConnection();
|
||||
});
|
||||
connect(AndroidController::instance(), &AndroidController::importConfigFromOutside, this, [this](QString data) {
|
||||
emit m_coreController->m_pageController->goToPageHome();
|
||||
m_coreController->m_importController->extractConfigFromData(data);
|
||||
m_coreController->openVpnKeyImportPreview(data);
|
||||
data.clear();
|
||||
emit m_coreController->m_pageController->goToPageViewConfig();
|
||||
});
|
||||
#endif
|
||||
}
|
||||
@@ -373,9 +371,7 @@ void CoreSignalHandlers::initIosImportHandler()
|
||||
{
|
||||
#ifdef Q_OS_IOS
|
||||
connect(IosController::Instance(), &IosController::importConfigFromOutside, this, [this](QString data) {
|
||||
emit m_coreController->m_pageController->goToPageHome();
|
||||
m_coreController->m_importController->extractConfigFromData(data);
|
||||
emit m_coreController->m_pageController->goToPageViewConfig();
|
||||
m_coreController->openVpnKeyImportPreview(data);
|
||||
});
|
||||
connect(IosController::Instance(), &IosController::importBackupFromOutside, this, [this](QString filePath) {
|
||||
emit m_coreController->m_pageController->goToPageHome();
|
||||
|
||||
@@ -387,6 +387,7 @@ void ImportController::importConfig(const QJsonObject &config)
|
||||
} else if (config.contains(configKey::configVersion)) {
|
||||
quint16 crc = qChecksum(QJsonDocument(config).toJson());
|
||||
if (m_serversRepository->hasServerWithCrc(crc)) {
|
||||
// Same API key / subscription blob already present (incl. deep link re-import).
|
||||
emit importErrorOccurred(ErrorCode::ApiConfigAlreadyAdded, true);
|
||||
} else {
|
||||
QJsonObject configWithCrc = config;
|
||||
|
||||
Reference in New Issue
Block a user