#pragma once #include #include #include #include "AuthService.hpp" // geopro::net::AuthService::Captcha namespace geopro::net { class IApiCall; class ApiChain; // 验证码加载句柄(net 层,自管理):接管一个 getImageCode 的 IApiCall, // 完成后解析 {data.id, data.code} -> done(Captcha);失败 -> failed(msg)。 // 安全不变量见 spec §5.0:aborted_ 入口守卫 + 一律 deleteLater(禁同步 delete)。 class CaptchaLoad : public QObject { Q_OBJECT public: explicit CaptchaLoad(IApiCall* call, QObject* parent = nullptr); void abort(); signals: void done(const geopro::net::AuthService::Captcha& captcha); void failed(const QString& message); private: QPointer call_; bool aborted_ = false; }; // 登录加载句柄(net 层,自管理):接管一个 verifyCodeCheck->RSA->login2 的 ApiChain, // succeeded 取末步 data.accessToken -> done(token);缺 token 或 failed -> failed(msg)。 class LoginLoad : public QObject { Q_OBJECT public: explicit LoginLoad(ApiChain* chain, QObject* parent = nullptr); void abort(); signals: void done(const QString& token); void failed(const QString& message); private: QPointer chain_; bool aborted_ = false; }; } // namespace geopro::net