package com.module.pay.base

import com.module.pay.service.DevService
import com.module.pay.service.HomeApiService
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import retrofit2.Retrofit
import javax.inject.Named
import javax.inject.Singleton

/**
 * 全局作用域的Home组件网络接口代理依赖注入模块
 *
 * @author Qu Yunshuo
 * @since 6/4/21 5:51 PM
 */
@Module //声明一个@Module注解，表示这一个用于提供依赖注入实例的模块。
@InstallIn(SingletonComponent::class)//ilt 这个模块中定义的依赖项将被安装在应用程序的全局单例组件中。这意味着这些依赖项将在整个应用程序的生命周期内只被创建一次，并在所有需要它们的地方共享。
class DIHomeNetServiceModule {

    /**
     * Home模块的[HomeApiService]依赖提供方法
     *
     * @param retrofit Retrofit
     * @return HomeApiService
     */
    @Singleton//@Singleton 注解也用于 provideDatabase 方法上，以确保返回的 AppDatabase 实例是单例的。
    @Provides//表示provideHomeApiService方法是一个提供依赖项的方法
    fun provideHomeApiService(@FirstApi retrofit: Retrofit): HomeApiService {
        return retrofit.create(HomeApiService::class.java)
    }

    @Singleton//@Singleton 注解也用于 provideDatabase 方法上，以确保返回的 AppDatabase 实例是单例的。
    @Provides//表示provideHomeApiService方法是一个提供依赖项的方法
    fun provideDevApiService(@SecondApi retrofit: Retrofit): DevService {
        return retrofit.create(DevService::class.java)
    }
}