mirror of
https://github.com/redstrate/Astra.git
synced 2025-04-22 04:37:46 +00:00
Implement manual password store for Steam Deck Game Mode
This commit is contained in:
parent
167a94a2fe
commit
8d4ee7b19d
1 changed files with 34 additions and 24 deletions
|
@ -271,41 +271,51 @@ void Account::fetchAvatar()
|
||||||
|
|
||||||
void Account::setKeychainValue(const QString &key, const QString &value)
|
void Account::setKeychainValue(const QString &key, const QString &value)
|
||||||
{
|
{
|
||||||
auto job = new QKeychain::WritePasswordJob(QStringLiteral("Astra"), this);
|
if (m_launcher.isSteamDeck()) {
|
||||||
job->setTextData(value);
|
auto stateConfig = KSharedConfig::openStateConfig();
|
||||||
#ifdef FLATPAK
|
|
||||||
job->setKey(QStringLiteral("flatpak-") + m_key + QStringLiteral("-") + key);
|
|
||||||
#else
|
|
||||||
job->setKey(m_key + QStringLiteral("-") + key);
|
|
||||||
#endif
|
|
||||||
job->setInsecureFallback(m_launcher.isSteamDeck()); // The Steam Deck does not have secrets provider in Game Mode
|
|
||||||
job->start();
|
|
||||||
|
|
||||||
connect(job, &QKeychain::WritePasswordJob::finished, this, [job] {
|
stateConfig->group(QStringLiteral("Passwords")).writeEntry(m_key + QStringLiteral("-") + key, value);
|
||||||
if (job->error() != QKeychain::NoError) {
|
stateConfig->sync();
|
||||||
qWarning(ASTRA_LOG) << "Error when writing" << job->errorString();
|
} else {
|
||||||
}
|
auto job = new QKeychain::WritePasswordJob(QStringLiteral("Astra"), this);
|
||||||
});
|
job->setTextData(value);
|
||||||
|
#ifdef FLATPAK
|
||||||
|
job->setKey(QStringLiteral("flatpak-") + m_key + QStringLiteral("-") + key);
|
||||||
|
#else
|
||||||
|
job->setKey(m_key + QStringLiteral("-") + key);
|
||||||
|
#endif
|
||||||
|
job->setInsecureFallback(m_launcher.isSteamDeck()); // The Steam Deck does not have secrets provider in Game Mode
|
||||||
|
job->start();
|
||||||
|
|
||||||
|
connect(job, &QKeychain::WritePasswordJob::finished, this, [job] {
|
||||||
|
if (job->error() != QKeychain::NoError) {
|
||||||
|
qWarning(ASTRA_LOG) << "Error when writing" << job->errorString();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QCoro::Task<QString> Account::getKeychainValue(const QString &key)
|
QCoro::Task<QString> Account::getKeychainValue(const QString &key)
|
||||||
{
|
{
|
||||||
auto job = new QKeychain::ReadPasswordJob(QStringLiteral("Astra"), this);
|
if (m_launcher.isSteamDeck()) {
|
||||||
|
co_return KSharedConfig::openStateConfig()->group(QStringLiteral("Passwords")).readEntry(m_key + QStringLiteral("-") + key);
|
||||||
|
} else {
|
||||||
|
auto job = new QKeychain::ReadPasswordJob(QStringLiteral("Astra"), this);
|
||||||
#ifdef FLATPAK
|
#ifdef FLATPAK
|
||||||
job->setKey(QStringLiteral("flatpak-") + m_key + QStringLiteral("-") + key);
|
job->setKey(QStringLiteral("flatpak-") + m_key + QStringLiteral("-") + key);
|
||||||
#else
|
#else
|
||||||
job->setKey(m_key + QStringLiteral("-") + key);
|
job->setKey(m_key + QStringLiteral("-") + key);
|
||||||
#endif
|
#endif
|
||||||
job->setInsecureFallback(m_launcher.isSteamDeck());
|
job->start();
|
||||||
job->start();
|
|
||||||
|
|
||||||
co_await qCoro(job, &QKeychain::ReadPasswordJob::finished);
|
co_await qCoro(job, &QKeychain::ReadPasswordJob::finished);
|
||||||
|
|
||||||
if (job->error() != QKeychain::NoError) {
|
if (job->error() != QKeychain::NoError) {
|
||||||
qWarning(ASTRA_LOG) << "Error when reading" << key << job->errorString();
|
qWarning(ASTRA_LOG) << "Error when reading" << key << job->errorString();
|
||||||
|
}
|
||||||
|
|
||||||
|
co_return job->textData();
|
||||||
}
|
}
|
||||||
|
|
||||||
co_return job->textData();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Account::updateConfig()
|
void Account::updateConfig()
|
||||||
|
|
Loading…
Add table
Reference in a new issue