Skip to content

Commit 034e7fc

Browse files
committed
#3638 websockettokendialog: fix issue with showing edited token instead of stored token
Signed-off-by: Patrizio Bekerle <patrizio@bekerle.com>
1 parent 9cbaa45 commit 034e7fc

3 files changed

Lines changed: 38 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## 26.6.6
44

5+
- Fixed the **Security token** dialog for the QOwnNotes Web Companion browser
6+
extension to keep generated or edited tokens only when pressing **OK**, so
7+
closing the dialog with **Cancel** no longer changes the token for the
8+
current application session (for [#3638](https://github.com/pbek/QOwnNotes/issues/3638))
59
- There was a new release of the **QOwnNotes Web Companion browser extension**
610
[2026.6.0](https://github.com/qownnotes/web-companion/releases/tag/v2026.6.0)
711
- The extension build tooling was updated to Quasar App Vite 3 / Rolldown

src/dialogs/websockettokendialog.cpp

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <utils/misc.h>
44

5+
#include <QShowEvent>
56
#include <QtGui/QClipboard>
67

78
#include "services/settingsservice.h"
@@ -11,31 +12,32 @@ WebSocketTokenDialog::WebSocketTokenDialog(QWidget *parent)
1112
: MasterDialog(parent), ui(new Ui::WebSocketTokenDialog) {
1213
ui->setupUi(this);
1314
afterSetupUI();
15+
}
16+
17+
QString WebSocketTokenDialog::generateToken() const { return Utils::Misc::generateRandomString(8); }
18+
19+
WebSocketTokenDialog::~WebSocketTokenDialog() { delete ui; }
1420

21+
void WebSocketTokenDialog::loadTokenFromSettings() {
1522
SettingsService settings;
16-
QString token = settings.value(QStringLiteral("webSocketServerService/token")).toString();
23+
_initialToken = settings.value(QStringLiteral("webSocketServerService/token")).toString();
1724

18-
if (token.isEmpty()) {
19-
on_generateButton_clicked();
25+
if (_initialToken.isEmpty()) {
26+
ui->tokenLineEdit->setText(generateToken());
27+
on_copyButton_clicked();
2028
} else {
21-
ui->tokenLineEdit->setText(token);
29+
ui->tokenLineEdit->setText(_initialToken);
2230
on_copyButton_clicked();
2331
}
2432
}
2533

26-
QString WebSocketTokenDialog::generateToken() const { return Utils::Misc::generateRandomString(8); }
27-
28-
WebSocketTokenDialog::~WebSocketTokenDialog() { delete ui; }
29-
3034
void WebSocketTokenDialog::on_copyButton_clicked() {
3135
QClipboard *clipboard = QApplication::clipboard();
3236
clipboard->setText(ui->tokenLineEdit->text());
3337
}
3438

3539
void WebSocketTokenDialog::on_generateButton_clicked() {
3640
QString token = generateToken();
37-
SettingsService settings;
38-
settings.setValue(QStringLiteral("webSocketServerService/token"), token);
3941
ui->tokenLineEdit->setText(token);
4042
on_copyButton_clicked();
4143
}
@@ -44,3 +46,16 @@ void WebSocketTokenDialog::on_buttonBox_accepted() {
4446
SettingsService settings;
4547
settings.setValue(QStringLiteral("webSocketServerService/token"), ui->tokenLineEdit->text());
4648
}
49+
50+
void WebSocketTokenDialog::reject() {
51+
SettingsService settings;
52+
settings.setValue(QStringLiteral("webSocketServerService/token"), _initialToken);
53+
ui->tokenLineEdit->setText(_initialToken.isEmpty() ? generateToken() : _initialToken);
54+
55+
MasterDialog::reject();
56+
}
57+
58+
void WebSocketTokenDialog::showEvent(QShowEvent *event) {
59+
loadTokenFromSettings();
60+
MasterDialog::showEvent(event);
61+
}

src/dialogs/websockettokendialog.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
#include "masterdialog.h"
77

8+
class QShowEvent;
9+
810
namespace Ui {
911
class WebSocketTokenDialog;
1012
}
@@ -16,6 +18,11 @@ class WebSocketTokenDialog : public MasterDialog {
1618
explicit WebSocketTokenDialog(QWidget *parent = 0);
1719
~WebSocketTokenDialog();
1820

21+
void reject() override;
22+
23+
protected:
24+
void showEvent(QShowEvent *event) override;
25+
1926
private slots:
2027
void on_copyButton_clicked();
2128

@@ -25,8 +32,10 @@ class WebSocketTokenDialog : public MasterDialog {
2532

2633
private:
2734
Ui::WebSocketTokenDialog *ui;
35+
QString _initialToken;
2836

2937
QString generateToken() const;
38+
void loadTokenFromSettings();
3039
};
3140

3241
#endif // WEBSOCKETTOKENDIALOG_H

0 commit comments

Comments
 (0)