1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-21 20:27:45 +00:00

Add option to configure xiv api server url

This commit is contained in:
Joshua Goins 2023-10-08 13:22:34 -04:00
parent 8bf02bcd1d
commit 1157f7b1ab
5 changed files with 43 additions and 2 deletions

View file

@ -32,6 +32,9 @@ SPDX-License-Identifier: CC0-1.0
<entry name="SquareEnixLoginServer" type="String">
<default>square-enix.com</default>
</entry>
<entry name="XivApiServer" type="String">
<default>xivapi.com</default>
</entry>
<entry name="PreferredProtocol" type="String">
<default>https</default>
</entry>

View file

@ -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);

View file

@ -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());

View file

@ -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();

View file

@ -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
}
}
}