diff options
author | Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com> | 2020-01-03 15:09:29 +0300 |
---|---|---|
committer | Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com> | 2020-01-03 15:09:29 +0300 |
commit | b32310b8a6b298e7bc96df14205e00d8bd1f8c00 (patch) | |
tree | 443eb2248f892062f2df438934af5c4ce9c7b859 /src/gui/accountstate.cpp | |
parent | 556a1a5ef2b132e39bd199b96040f41e84286928 (diff) |
Gigantic ton of changes and deletions: ActivityListModel, tray GUI, Account logic.
Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
Diffstat (limited to 'src/gui/accountstate.cpp')
-rw-r--r-- | src/gui/accountstate.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/gui/accountstate.cpp b/src/gui/accountstate.cpp index 7893a7a3b..9d2fa1830 100644 --- a/src/gui/accountstate.cpp +++ b/src/gui/accountstate.cpp @@ -74,6 +74,11 @@ AccountPtr AccountState::account() const return _account; } +bool AccountState::hasTalk() const +{ + return _hasTalk; +} + AccountState::ConnectionStatus AccountState::connectionStatus() const { return _connectionStatus; @@ -89,6 +94,23 @@ AccountState::State AccountState::state() const return _state; } +void AccountState::setTalkCapability() +{ + QNetworkAccessManager *manager = new QNetworkAccessManager(this); + connect(manager, &QNetworkAccessManager::finished, + this, [=](QNetworkReply *reply) { + if (reply->error()) { + return; + } + //TODO: This is **** dirty, but atm I don't see a capability-way to determine talk integration + _hasTalk = (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 303) ? true : false; + }); + QNetworkRequest request; + QString url = this->account()->url().toString() + "/apps/spreed"; + request.setUrl(QUrl(url)); + manager->get(request); +} + void AccountState::setState(State state) { if (_state != state) { @@ -267,7 +289,7 @@ void AccountState::slotConnectionValidatorResult(ConnectionValidator::Status sta // Come online gradually from 503 or maintenance mode if (status == ConnectionValidator::Connected && (_connectionStatus == ConnectionValidator::ServiceUnavailable - || _connectionStatus == ConnectionValidator::MaintenanceMode)) { + || _connectionStatus == ConnectionValidator::MaintenanceMode)) { if (!_timeSinceMaintenanceOver.isValid()) { qCInfo(lcAccountState) << "AccountState reconnection: delaying for" << _maintenanceToConnectedDelay << "ms"; @@ -293,6 +315,7 @@ void AccountState::slotConnectionValidatorResult(ConnectionValidator::Status sta case ConnectionValidator::Connected: if (_state != Connected) { setState(Connected); + setTalkCapability(); } break; case ConnectionValidator::Undefined: |