Closer/app/src/main/java/app/closer/di/RepositoryModule.kt

78 lines
3.2 KiB
Kotlin

package app.closer.di
import app.closer.core.billing.EntitlementChecker
import app.closer.core.billing.FirestoreEntitlementChecker
import app.closer.data.local.SettingsDataStore
import app.closer.data.repository.BucketListRepositoryImpl
import app.closer.data.repository.CoupleRepositoryImpl
import app.closer.data.repository.DateMatchRepositoryImpl
import app.closer.data.repository.DatePlanRepositoryImpl
import app.closer.domain.repository.BucketListRepository
import app.closer.domain.repository.DateMatchRepository
import app.closer.domain.repository.DatePlanRepository
import app.closer.data.repository.QuestionSessionRepositoryImpl
import app.closer.data.repository.FirebaseAuthRepositoryImpl
import app.closer.data.repository.InviteRepositoryImpl
import app.closer.data.repository.SharedPreferencesLocalAnswerRepository
import app.closer.data.repository.RoomQuestionRepository
import app.closer.data.repository.QuestionThreadRepositoryImpl
import app.closer.data.repository.UserRepositoryImpl
import app.closer.domain.repository.AuthRepository
import app.closer.domain.repository.CoupleRepository
import app.closer.domain.repository.QuestionSessionRepository
import app.closer.domain.repository.InviteRepository
import app.closer.domain.repository.LocalAnswerRepository
import app.closer.domain.repository.QuestionRepository
import app.closer.domain.repository.QuestionThreadRepository
import app.closer.domain.repository.SettingsRepository
import app.closer.domain.repository.UserRepository
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(impl: FirebaseAuthRepositoryImpl): AuthRepository
@Binds @Singleton
abstract fun bindUserRepository(impl: UserRepositoryImpl): UserRepository
@Binds @Singleton
abstract fun bindInviteRepository(impl: InviteRepositoryImpl): InviteRepository
@Binds @Singleton
abstract fun bindCoupleRepository(impl: CoupleRepositoryImpl): CoupleRepository
@Binds @Singleton
abstract fun bindDateMatchRepository(impl: DateMatchRepositoryImpl): DateMatchRepository
@Binds @Singleton
abstract fun bindDatePlanRepository(impl: DatePlanRepositoryImpl): DatePlanRepository
@Binds @Singleton
abstract fun bindBucketListRepository(impl: BucketListRepositoryImpl): BucketListRepository
@Binds @Singleton
abstract fun bindQuestionThreadRepository(impl: QuestionThreadRepositoryImpl): QuestionThreadRepository
@Binds @Singleton
abstract fun bindQuestionRepository(impl: RoomQuestionRepository): QuestionRepository
@Binds @Singleton
abstract fun bindLocalAnswerRepository(impl: SharedPreferencesLocalAnswerRepository): LocalAnswerRepository
@Binds @Singleton
abstract fun bindEntitlementChecker(impl: FirestoreEntitlementChecker): EntitlementChecker
@Binds @Singleton
abstract fun bindSettingsRepository(impl: SettingsDataStore): SettingsRepository
@Binds @Singleton
abstract fun bindQuestionSessionRepository(impl: QuestionSessionRepositoryImpl): QuestionSessionRepository
}