feat: auth screen with auto-redirect, sync favorites/history with backend
This commit is contained in:
@@ -2,16 +2,27 @@ package com.radiola.di
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
|
||||
import com.radiola.data.local.AppDatabase
|
||||
import com.radiola.data.local.LocalStationDataSource
|
||||
import com.radiola.data.local.MIGRATION_1_2
|
||||
import com.radiola.data.local.MIGRATION_2_3
|
||||
import com.radiola.data.local.MIGRATION_3_4
|
||||
import com.radiola.data.remote.AuthInterceptor
|
||||
import com.radiola.data.remote.RecordApi
|
||||
import com.radiola.data.remote.RadiolaApi
|
||||
import com.radiola.data.repository.AuthRepositoryImpl
|
||||
import com.radiola.data.repository.FavoritesRepositoryImpl
|
||||
import com.radiola.data.repository.NowPlayingRepositoryImpl
|
||||
import com.radiola.data.repository.RecordingRepositoryImpl
|
||||
import com.radiola.data.repository.SettingsRepositoryImpl
|
||||
import com.radiola.data.repository.StationRepositoryImpl
|
||||
import com.radiola.data.repository.SyncRepositoryImpl
|
||||
import com.radiola.data.repository.TrackHistoryRepositoryImpl
|
||||
import com.radiola.domain.repository.AuthRepository
|
||||
import com.radiola.domain.repository.FavoritesRepository
|
||||
import com.radiola.domain.repository.SyncRepository
|
||||
import com.radiola.domain.repository.NowPlayingRepository
|
||||
import com.radiola.domain.repository.RecordingRepository
|
||||
import com.radiola.domain.repository.SettingsRepository
|
||||
import com.radiola.domain.repository.StationRepository
|
||||
import com.radiola.domain.repository.TrackHistoryRepository
|
||||
@@ -25,6 +36,8 @@ import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.logging.HttpLoggingInterceptor
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.kotlinx.serialization.asConverterFactory
|
||||
import javax.inject.Named
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@@ -40,7 +53,9 @@ object AppModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideOkHttpClient(): OkHttpClient = OkHttpClient.Builder()
|
||||
fun provideBaseOkHttpClient(): OkHttpClient = OkHttpClient.Builder()
|
||||
.connectTimeout(5, java.util.concurrent.TimeUnit.SECONDS)
|
||||
.readTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
|
||||
.addInterceptor(HttpLoggingInterceptor().apply {
|
||||
level = HttpLoggingInterceptor.Level.BASIC
|
||||
})
|
||||
@@ -48,7 +63,18 @@ object AppModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRetrofit(okHttpClient: OkHttpClient, json: Json): Retrofit = Retrofit.Builder()
|
||||
@Named("radiolaClient")
|
||||
fun provideRadiolaOkHttpClient(
|
||||
baseClient: OkHttpClient,
|
||||
authInterceptor: AuthInterceptor
|
||||
): OkHttpClient = baseClient.newBuilder()
|
||||
.addInterceptor(authInterceptor)
|
||||
.build()
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
@Named("record")
|
||||
fun provideRecordRetrofit(okHttpClient: OkHttpClient, json: Json): Retrofit = Retrofit.Builder()
|
||||
.baseUrl("https://www.radiorecord.ru/")
|
||||
.client(okHttpClient)
|
||||
.addConverterFactory(json.asConverterFactory("application/json".toMediaType()))
|
||||
@@ -56,14 +82,38 @@ object AppModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRecordApi(retrofit: Retrofit): RecordApi = retrofit.create(RecordApi::class.java)
|
||||
@Named("radiola")
|
||||
fun provideRadiolaRetrofit(
|
||||
@Named("radiolaClient") okHttpClient: OkHttpClient,
|
||||
json: Json
|
||||
): Retrofit = Retrofit.Builder()
|
||||
.baseUrl("http://121.127.37.212:3000/")
|
||||
.client(okHttpClient)
|
||||
.addConverterFactory(json.asConverterFactory("application/json".toMediaType()))
|
||||
.build()
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRecordApi(@Named("record") retrofit: Retrofit): RecordApi = retrofit.create(RecordApi::class.java)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRadiolaApi(@Named("radiola") retrofit: Retrofit): RadiolaApi = retrofit.create(RadiolaApi::class.java)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideDatabase(@ApplicationContext context: Context): AppDatabase =
|
||||
Room.databaseBuilder(context, AppDatabase::class.java, "radiola.db")
|
||||
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4)
|
||||
.build()
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideLocalStationDataSource(
|
||||
@ApplicationContext context: Context,
|
||||
json: Json
|
||||
): LocalStationDataSource = LocalStationDataSource(context, json)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideStationRepository(impl: StationRepositoryImpl): StationRepository = impl
|
||||
@@ -83,4 +133,16 @@ object AppModule {
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideSettingsRepository(impl: SettingsRepositoryImpl): SettingsRepository = impl
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRecordingRepository(impl: RecordingRepositoryImpl): RecordingRepository = impl
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideAuthRepository(impl: AuthRepositoryImpl): AuthRepository = impl
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideSyncRepository(impl: SyncRepositoryImpl): SyncRepository = impl
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user