Initial commit2
This commit is contained in:
57
app/src/main/java/com/novayaplaneta/di/DatabaseModule.kt
Normal file
57
app/src/main/java/com/novayaplaneta/di/DatabaseModule.kt
Normal file
@@ -0,0 +1,57 @@
|
||||
package com.novayaplaneta.di
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
import com.novayaplaneta.data.local.NewPlanetDatabase
|
||||
import com.novayaplaneta.data.local.dao.ChatMessageDao
|
||||
import com.novayaplaneta.data.local.dao.RewardDao
|
||||
import com.novayaplaneta.data.local.dao.ScheduleDao
|
||||
import com.novayaplaneta.data.local.dao.TaskDao
|
||||
import com.novayaplaneta.data.local.dao.UserDao
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object DatabaseModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideDatabase(@ApplicationContext context: Context): NewPlanetDatabase {
|
||||
return Room.databaseBuilder(
|
||||
context,
|
||||
NewPlanetDatabase::class.java,
|
||||
"newplanet_database"
|
||||
).build()
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideUserDao(database: NewPlanetDatabase): UserDao {
|
||||
return database.userDao()
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideScheduleDao(database: NewPlanetDatabase): ScheduleDao {
|
||||
return database.scheduleDao()
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideTaskDao(database: NewPlanetDatabase): TaskDao {
|
||||
return database.taskDao()
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideRewardDao(database: NewPlanetDatabase): RewardDao {
|
||||
return database.rewardDao()
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideChatMessageDao(database: NewPlanetDatabase): ChatMessageDao {
|
||||
return database.chatMessageDao()
|
||||
}
|
||||
}
|
||||
|
||||
60
app/src/main/java/com/novayaplaneta/di/NetworkModule.kt
Normal file
60
app/src/main/java/com/novayaplaneta/di/NetworkModule.kt
Normal file
@@ -0,0 +1,60 @@
|
||||
package com.novayaplaneta.di
|
||||
|
||||
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
|
||||
import com.novayaplaneta.data.remote.BackendApi
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.logging.HttpLoggingInterceptor
|
||||
import retrofit2.Retrofit
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object NetworkModule {
|
||||
|
||||
private val json = Json {
|
||||
ignoreUnknownKeys = true
|
||||
isLenient = true
|
||||
encodeDefaults = false
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideOkHttpClient(): OkHttpClient {
|
||||
val loggingInterceptor = HttpLoggingInterceptor().apply {
|
||||
level = HttpLoggingInterceptor.Level.BODY
|
||||
}
|
||||
|
||||
return OkHttpClient.Builder()
|
||||
.addInterceptor(loggingInterceptor)
|
||||
.connectTimeout(30, TimeUnit.SECONDS)
|
||||
.readTimeout(30, TimeUnit.SECONDS)
|
||||
.writeTimeout(30, TimeUnit.SECONDS)
|
||||
.build()
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit {
|
||||
val contentType = "application/json".toMediaType()
|
||||
|
||||
return Retrofit.Builder()
|
||||
.baseUrl("https://api.novayaplaneta.ru/")
|
||||
.client(okHttpClient)
|
||||
.addConverterFactory(json.asConverterFactory(contentType))
|
||||
.build()
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideBackendApi(retrofit: Retrofit): BackendApi {
|
||||
return retrofit.create(BackendApi::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
53
app/src/main/java/com/novayaplaneta/di/RepositoryModule.kt
Normal file
53
app/src/main/java/com/novayaplaneta/di/RepositoryModule.kt
Normal file
@@ -0,0 +1,53 @@
|
||||
package com.novayaplaneta.di
|
||||
|
||||
import com.novayaplaneta.data.repository.AIRepositoryImpl
|
||||
import com.novayaplaneta.data.repository.AuthRepositoryImpl
|
||||
import com.novayaplaneta.data.repository.RewardRepositoryImpl
|
||||
import com.novayaplaneta.data.repository.ScheduleRepositoryImpl
|
||||
import com.novayaplaneta.data.repository.TaskRepositoryImpl
|
||||
import com.novayaplaneta.domain.repository.AIRepository
|
||||
import com.novayaplaneta.domain.repository.AuthRepository
|
||||
import com.novayaplaneta.domain.repository.RewardRepository
|
||||
import com.novayaplaneta.domain.repository.ScheduleRepository
|
||||
import com.novayaplaneta.domain.repository.TaskRepository
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
abstract class RepositoryModule {
|
||||
|
||||
@Binds
|
||||
@Singleton
|
||||
abstract fun bindAuthRepository(
|
||||
authRepositoryImpl: AuthRepositoryImpl
|
||||
): AuthRepository
|
||||
|
||||
@Binds
|
||||
@Singleton
|
||||
abstract fun bindScheduleRepository(
|
||||
scheduleRepositoryImpl: ScheduleRepositoryImpl
|
||||
): ScheduleRepository
|
||||
|
||||
@Binds
|
||||
@Singleton
|
||||
abstract fun bindTaskRepository(
|
||||
taskRepositoryImpl: TaskRepositoryImpl
|
||||
): TaskRepository
|
||||
|
||||
@Binds
|
||||
@Singleton
|
||||
abstract fun bindRewardRepository(
|
||||
rewardRepositoryImpl: RewardRepositoryImpl
|
||||
): RewardRepository
|
||||
|
||||
@Binds
|
||||
@Singleton
|
||||
abstract fun bindAIRepository(
|
||||
aiRepositoryImpl: AIRepositoryImpl
|
||||
): AIRepository
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user