diff --git a/launcher/config.kcfg b/launcher/config.kcfg
index 2a83829..cc89bdb 100644
--- a/launcher/config.kcfg
+++ b/launcher/config.kcfg
@@ -32,6 +32,9 @@ SPDX-License-Identifier: CC0-1.0
square-enix.com
+
+ xivapi.com
+
https
diff --git a/launcher/include/launchercore.h b/launcher/include/launchercore.h
index b2876f8..4c2680b 100755
--- a/launcher/include/launchercore.h
+++ b/launcher/include/launchercore.h
@@ -71,6 +71,7 @@ class LauncherCore : public QObject
Q_PROPERTY(QString dalamudDistribServer READ dalamudDistribServer WRITE setDalamudDistribServer NOTIFY dalamudDistribServerChanged)
Q_PROPERTY(QString squareEnixServer READ squareEnixServer WRITE setSquareEnixServer NOTIFY squareEnixServerChanged)
Q_PROPERTY(QString squareEnixLoginServer READ squareEnixLoginServer WRITE setSquareEnixLoginServer NOTIFY squareEnixLoginServerChanged)
+ Q_PROPERTY(QString xivApiServer READ xivApiServer WRITE setXivApiServer NOTIFY xivApiServerChanged)
Q_PROPERTY(QString preferredProtocol READ preferredProtocol WRITE setPreferredProtocol NOTIFY preferredProtocolChanged)
Q_PROPERTY(bool argumentsEncrypted READ argumentsEncrypted WRITE setArgumentsEncrypted NOTIFY encryptedArgumentsChanged)
Q_PROPERTY(Headline *headline READ headline NOTIFY newsChanged)
@@ -143,6 +144,9 @@ public:
[[nodiscard]] QString squareEnixLoginServer() const;
void setSquareEnixLoginServer(const QString &value);
+ [[nodiscard]] QString xivApiServer() const;
+ void setXivApiServer(const QString &value);
+
[[nodiscard]] QString preferredProtocol() const;
void setPreferredProtocol(const QString &value);
@@ -185,6 +189,7 @@ signals:
void dalamudDistribServerChanged();
void squareEnixServerChanged();
void squareEnixLoginServerChanged();
+ void xivApiServerChanged();
void preferredProtocolChanged();
void encryptedArgumentsChanged();
void loginError(QString message);
diff --git a/launcher/src/account.cpp b/launcher/src/account.cpp
index 0745d80..2320e9f 100644
--- a/launcher/src/account.cpp
+++ b/launcher/src/account.cpp
@@ -227,7 +227,13 @@ void Account::fetchAvatar()
const QString filename(QStringLiteral("%1/%2.jpg").arg(cacheLocation, lodestoneId()));
if (!QFile(filename).exists()) {
qDebug() << "Did not find lodestone character " << lodestoneId() << " in cache, fetching from xivapi.";
- QNetworkRequest request(QStringLiteral("https://xivapi.com/character/%1").arg(lodestoneId()));
+
+ QUrl url;
+ url.setScheme(m_launcher.preferredProtocol());
+ url.setHost(m_launcher.xivApiServer());
+ url.setPath(QStringLiteral("/character/%1").arg(lodestoneId()));
+
+ QNetworkRequest request(url);
const auto reply = m_launcher.mgr->get(request);
connect(reply, &QNetworkReply::finished, [this, filename, reply] {
auto document = QJsonDocument::fromJson(reply->readAll());
diff --git a/launcher/src/launchercore.cpp b/launcher/src/launchercore.cpp
index 3874c45..d58d267 100755
--- a/launcher/src/launchercore.cpp
+++ b/launcher/src/launchercore.cpp
@@ -597,6 +597,20 @@ void LauncherCore::setSquareEnixLoginServer(const QString &value)
}
}
+QString LauncherCore::xivApiServer() const
+{
+ return Config::xivApiServer();
+}
+
+void LauncherCore::setXivApiServer(const QString &value)
+{
+ if (value != Config::xivApiServer()) {
+ Config::setXivApiServer(value);
+ Config::self()->save();
+ Q_EMIT xivApiServerChanged();
+ }
+}
+
QString LauncherCore::preferredProtocol() const
{
return Config::preferredProtocol();
diff --git a/launcher/ui/Settings/DeveloperSettings.qml b/launcher/ui/Settings/DeveloperSettings.qml
index 24b3476..65378ce 100644
--- a/launcher/ui/Settings/DeveloperSettings.qml
+++ b/launcher/ui/Settings/DeveloperSettings.qml
@@ -27,7 +27,7 @@ FormCard.FormCardPage {
id: keepPatchesDelegate
text: i18n("Keep Patches")
- description: i18n("Do not delete patches after they're used. Astra will not redownload patch data, if found.")
+ description: i18n("Do not delete patches after they're used. Astra will not download patch data, if found.")
checked: LauncherCore.keepPatches
onCheckedChanged: LauncherCore.keepPatches = checked
}
@@ -102,5 +102,18 @@ FormCard.FormCardPage {
text: LauncherCore.squareEnixLoginServer
onTextChanged: LauncherCore.squareEnixLoginServer = text
}
+
+ FormCard.FormDelegateSeparator {
+ above: loginServerDelegate
+ below: xivApiServerDelegate
+ }
+
+ FormCard.FormTextFieldDelegate {
+ id: xivApiServerDelegate
+
+ label: i18n("XIV Api Server")
+ text: LauncherCore.xivApiServer
+ onTextChanged: LauncherCore.xivApiServer = text
+ }
}
}
\ No newline at end of file