import Foundation

/// 极光 Registration ID 上报能力，允许推送管理器注入测试替身。
@MainActor
protocol PushRegistrationServing: AnyObject {
    /// 将当前设备的极光 Registration ID 绑定到已登录业务账号。
    func registerJPushID(_ registrationID: String) async throws
}

/// 推送 API，复用 Android 当前使用的 Registration ID 上报接口。
@MainActor
final class PushAPI: PushRegistrationServing {
    private let client: APIClient

    /// 使用共享网络客户端创建推送 API。
    init(client: APIClient) {
        self.client = client
    }

    /// 上报极光 Registration ID；后端字段名沿用 `jpush_reg_id`。
    func registerJPushID(_ registrationID: String) async throws {
        let _: EmptyPayload = try await client.send(
            APIRequest(
                method: .post,
                path: "/api/app/user/register-jpush-id",
                queryItems: [URLQueryItem(name: "jpush_reg_id", value: registrationID)]
            )
        )
    }
}
