package io.coreflodev.openchat.common.dagger;
import android.content.Context;
import dagger.Module;
import dagger.Provides;
import io.coreflodev.openchat.api.ChatService;
import io.coreflodev.openchat.common.network.GsonService;
import io.coreflodev.openchat.common.network.HttpService;
import io.coreflodev.openchat.common.network.NetworkService;
import okhttp3.OkHttpClient;
import retrofit2.converter.gson.GsonConverterFactory;
@Module
public class ApplicationModule {
private Context context;
public ApplicationModule(Context context) {
this.context = context;
}
@Provides
@ApplicationScope
public NetworkService provideNetworkService(OkHttpClient okHttpClient, GsonConverterFactory gsonConverterFactory) {
return new NetworkService(okHttpClient, gsonConverterFactory);
}
@Provides
@ApplicationScope
public ChatService provideChatService(NetworkService networkService) {
return networkService.createService(ChatService.class);
}
@Provides
@ApplicationScope
public OkHttpClient provideOkHttpClient() {
return new HttpService(context).getHttpClient();
}
@Provides
@ApplicationScope
public GsonConverterFactory provideGsonConverterFactory() {
return new GsonService().getGsonConverterFactory();
}
}