diff options
author | 2022-03-30 12:59:51 +0530 | |
---|---|---|
committer | 2022-03-30 12:59:51 +0530 | |
commit | ed5f760bf4c4126d0f5c64bb4a0cba75c963fb9b (patch) | |
tree | 11e44e7f827e43ac3bd3a0fa4c91393293a73f81 /src/mainwindow.cpp | |
parent | fa4012a5c3c3eb6da51b746a6061d828fb681a60 (diff) | |
download | whatsie-ed5f760bf4c4126d0f5c64bb4a0cba75c963fb9b.tar.gz whatsie-ed5f760bf4c4126d0f5c64bb4a0cba75c963fb9b.zip |
fix: improve logout flow, on change password
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r-- | src/mainwindow.cpp | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b9ec4f5..1893448 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -199,6 +199,42 @@ void MainWindow::handleCookieAdded(const QNetworkCookie &cookie) { qDebug() << cookie.toRawForm() << "\n\n\n"; } +void MainWindow::forceLogOut() { + if (webEngine && webEngine->page()) { + webEngine->page()->runJavaScript( + "window.localStorage.clear();", + [=](const QVariant &result) { qDebug() << result; }); + } +} + +bool MainWindow::isLoggedIn(){ + static bool loggedIn = false; + if (webEngine && webEngine->page()) { + webEngine->page()->runJavaScript( + "window.localStorage.getItem('WAToken2')", + [=](const QVariant &result) { qDebug() <<Q_FUNC_INFO << result; + if(result.isValid() && result.toString().isEmpty() == false){ + loggedIn = true; + } + }); + qDebug() << "isLoggedIn" <<loggedIn; + return loggedIn; + }else{ + qDebug() << "isLoggedIn" <<loggedIn; + return loggedIn; + } +} + +void MainWindow::tryLogOut() { + if (webEngine && webEngine->page()) { + webEngine->page()->runJavaScript( + "document.querySelector(\"span[data-testid|='menu']\").click();" + "document.querySelector(\"#side > header > div > div > span > div > " + "span > div > ul > li:nth-child(5) > div\").click()", + [=](const QVariant &result) { qDebug() << Q_FUNC_INFO << result; }); + } +} + void MainWindow::init_settingWidget() { if (settingsWidget == nullptr) { settingsWidget = new SettingsWidget( @@ -597,9 +633,17 @@ void MainWindow::init_lock() { void MainWindow::change_lock_password() { settings.remove("asdfg"); settingsWidget->appLockSetChecked(false); - settingsWidget->clearAllData(); - doAppReload(); - init_lock(); + + tryLogOut(); + QTimer::singleShot(2000, this, [=]() { + if(isLoggedIn()){ + forceLogOut(); + doAppReload(); + } + init_lock(); + }); + + } // check window state and set tray menus |