Index: minitube-277583973d3b7732217eab9c097ba9afd415285a/lib/qt-reusable-widgets/actionbutton.cpp =================================================================== --- minitube-277583973d3b7732217eab9c097ba9afd415285a/lib/qt-reusable-widgets/actionbutton.cpp +++ minitube-277583973d3b7732217eab9c097ba9afd415285a/lib/qt-reusable-widgets/actionbutton.cpp 2025-05-15 21:38:17.068101220 -0600 @@ -3,18 +3,19 @@ ActionButton::ActionButton(QWidget *parent) : QPushButton(parent), action(0) {} void ActionButton::setAction(QAction *newAction) { - if (action && action != newAction) { - action->disconnect(this); - disconnect(this, &QAbstractButton::clicked, action, &QAction::trigger); - } - action = newAction; - if (action) { - updateButtonStatusFromAction(); - connect(action, &QAction::changed, this, &ActionButton::updateButtonStatusFromAction); - connect(action, &QAction::visibleChanged, this, - [this] { setVisible(action->isVisible()); }); - connect(this, &QAbstractButton::clicked, action, &QAction::trigger); - } + if (action && action != newAction) { + action->disconnect(this); + disconnect(this, &QAbstractButton::clicked, action, &QAction::trigger); + } + action = newAction; + if (action) { + updateButtonStatusFromAction(); + connect(action, &QAction::changed, this, &ActionButton::updateButtonStatusFromAction); + connect(action, &QAction::changed, this, [this] { + setVisible(action->isVisible()); + }); + connect(this, &QAbstractButton::clicked, action, &QAction::trigger); + } } void ActionButton::setToolButtonStyle(Qt::ToolButtonStyle value) { Index: minitube-277583973d3b7732217eab9c097ba9afd415285a/lib/promises/jspromise.h =================================================================== --- minitube-277583973d3b7732217eab9c097ba9afd415285a/lib/promises/jspromise.h +++ minitube-277583973d3b7732217eab9c097ba9afd415285a/lib/promises/jspromise.h 2025-05-15 21:36:58.348106363 -0600 @@ -8,38 +8,40 @@ * */ class JSPromise : public QObject { - Q_OBJECT + Q_OBJECT + + public: + explicit JSPromise(QJSEngine *parent) : QObject(parent), engine(parent) { + connect(this, &JSPromise::resolveJSValue, this, &QObject::deleteLater); + connect(this, &JSPromise::reject, this, &QObject::deleteLater); + } + + QJSValue toJSValue() { return engine->toScriptValue(this); } + + Q_INVOKABLE QJSValue then(QJSValue func) { + connect(this, &JSPromise::resolveJSValue, this, [&func](auto value) { func.call({value}); }); + return toJSValue(); + } + + Q_INVOKABLE QJSValue onFailed(QJSValue func) { + connect(this, &JSPromise::reject, this, [&func](auto msg) { func.call({msg}); }); + return toJSValue(); + } + + Q_INVOKABLE QJSValue finally(QJSValue func) { + connect(this, &JSPromise::destroyed, this, [&func]() { func.call(); }); + return toJSValue(); +} -public: - explicit JSPromise(QJSEngine *parent) : QObject(parent), engine(parent) { - connect(this, &JSPromise::resolveJSValue, this, &QObject::deleteLater); - connect(this, &JSPromise::reject, this, &QObject::deleteLater); - } +template void resolve(T value) { emit resolveJSValue(engine->toScriptValue(value)); } - QJSValue toJSValue() { return engine->toScriptValue(this); } - - Q_INVOKABLE QJSValue then(QJSValue func) { - connect(this, &JSPromise::resolveJSValue, this, [func](auto value) { func.call({value}); }); - return toJSValue(); - } - - Q_INVOKABLE QJSValue onFailed(QJSValue func) { - connect(this, &JSPromise::reject, this, [func](auto msg) { func.call({msg}); }); - return toJSValue(); - } - - Q_INVOKABLE QJSValue finally(QJSValue func) { - connect(this, &JSPromise::destroyed, this, [func]() { func.call(); }); - return toJSValue(); - } - - template void resolve(T value) { emit resolveJSValue(engine->toScriptValue(value)); } signals: - void resolveJSValue(QJSValue value); - void reject(const QString &message); +void resolveJSValue(QJSValue value); +void reject(const QString &message); private: - QJSEngine *engine; +QJSEngine *engine; }; + #endif // JSPROMISE_H