diff --git a/src/login.cpp b/src/login.cpp index 7d764aef8..40747e4e8 100644 --- a/src/login.cpp +++ b/src/login.cpp @@ -3,6 +3,12 @@ #include "login.h" +#ifdef QUOTIENT_07 +#include +#else +#include "neochataccountregistry.h" +#endif + #include #include @@ -39,6 +45,12 @@ void Login::init() return; } + m_isLoggedIn = AccountRegistry::instance().isLoggedIn(m_matrixId); + Q_EMIT isLoggedInChanged(); + if (m_isLoggedIn) { + return; + } + m_testing = true; Q_EMIT testingChanged(); if (!m_connection) { @@ -181,3 +193,8 @@ bool Login::isLoggingIn() const { return m_isLoggingIn; } + +bool Login::isLoggedIn() const +{ + return m_isLoggedIn; +} diff --git a/src/login.h b/src/login.h index da8d942e3..5b1ab2d2f 100644 --- a/src/login.h +++ b/src/login.h @@ -23,6 +23,7 @@ class Login : public QObject Q_PROPERTY(bool supportsPassword READ supportsPassword NOTIFY loginFlowsChanged STORED false) Q_PROPERTY(QUrl ssoUrl READ ssoUrl NOTIFY ssoUrlChanged) Q_PROPERTY(bool isLoggingIn READ isLoggingIn NOTIFY isLoggingInChanged) + Q_PROPERTY(bool isLoggedIn READ isLoggedIn NOTIFY isLoggedInChanged) public: explicit Login(QObject *parent = nullptr); @@ -49,6 +50,8 @@ public: bool isLoggingIn() const; + bool isLoggedIn() const; + Q_INVOKABLE void login(); Q_INVOKABLE void loginWithSso(); @@ -64,6 +67,7 @@ Q_SIGNALS: void errorOccured(QString message); void testingChanged(); void isLoggingInChanged(); + void isLoggedInChanged(); private: void setHomeserverReachable(bool reachable); @@ -78,4 +82,5 @@ private: QUrl m_ssoUrl; bool m_testing = false; bool m_isLoggingIn = false; + bool m_isLoggedIn = false; }; diff --git a/src/qml/Component/Login/Login.qml b/src/qml/Component/Login/Login.qml index 7549a5cf8..07fa19a0e 100644 --- a/src/qml/Component/Login/Login.qml +++ b/src/qml/Component/Login/Login.qml @@ -49,7 +49,7 @@ LoginStep { } action: Kirigami.Action { - text: LoginHelper.testing && matrixIdField.acceptableInput ? i18n("Loading…") : i18nc("@action:button", "Continue") + text: LoginHelper.testing && matrixIdField.acceptableInput ? (LoginHelper.isLoggedIn ? i18n("Already logged in") : i18n("Loading…")) : i18nc("@action:button", "Continue") onTriggered: { if (LoginHelper.supportsSso && LoginHelper.supportsPassword) { processed("qrc:/LoginMethod.qml");