package com.narutohuo.xindazhou.common.networkrx

import io.reactivex.disposables.Disposable

/**
 * API 观察者
 * 
 * 提供基础的 API 响应观察功能
 */
abstract class ApiDisposableObserver<T> {
    
    /**
     * 成功回调
     */
    protected abstract fun onSuccess(data: T)
    
    /**
     * 错误回调
     */
    protected open fun onError(code: Int, message: String) {
        // 默认实现
    }
    
    /**
     * 订阅回调
     */
    protected open fun onSubscribe(d: Disposable) {
        // 默认实现
    }
    
    /**
     * 完成回调
     */
    protected open fun onComplete() {
        // 默认实现
    }
}

/**
 * 简化的 API 观察者
 */
class SimpleApiDisposableObserver<T>(
    private val onSuccess: (T) -> Unit,
    private val onError: ((Int, String) -> Unit)? = null
) : ApiDisposableObserver<T>() {
    
    override fun onSuccess(data: T) {
        onSuccess(data)
    }
    
    override fun onError(code: Int, message: String) {
        onError?.invoke(code, message)
    }
}