浏览代码

refactoring code

MrOzOn 5 年之前
父节点
当前提交
36ea0272c2

+ 2 - 2
app/src/main/java/com/mrozon/healthdiary/repository/LocalUserDataSource.kt → app/src/main/java/com/mrozon/healthdiary/data/UserRepository.kt

@@ -1,9 +1,9 @@
-package com.mrozon.healthdiary.repository
+package com.mrozon.healthdiary.data
 
 import androidx.lifecycle.LiveData
 import com.mrozon.core_api.entity.User
 
-interface LocalUserDataSource {
+interface UserRepository {
 
     fun getLocalUser(): LiveData<User>
 

+ 3 - 6
app/src/main/java/com/mrozon/healthdiary/repository/LocalUserDataSourceImp.kt → app/src/main/java/com/mrozon/healthdiary/data/UserRepositoryImp.kt

@@ -1,19 +1,16 @@
-package com.mrozon.healthdiary.repository
+package com.mrozon.healthdiary.data
 
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.Transformations
 import com.mrozon.core_api.db.HealthDiaryDao
 import com.mrozon.core_api.entity.User
 import com.mrozon.core_api.mapper.UserToUserDbMapper
-import com.mrozon.core_api.network.model.toUserDb
-import kotlinx.coroutines.*
-import timber.log.Timber
 import javax.inject.Inject
 
-class LocalUserDataSourceImp @Inject constructor(
+class UserRepositoryImp @Inject constructor(
     private val healthDiaryDao: HealthDiaryDao,
     private val mapper: UserToUserDbMapper
-): LocalUserDataSource {
+): UserRepository {
 
     override fun getLocalUser(): LiveData<User> {
         val userDb = healthDiaryDao.getUser()

+ 7 - 20
app/src/main/java/com/mrozon/healthdiary/di/main/MainActivityModule.kt

@@ -2,39 +2,26 @@ package com.mrozon.healthdiary.di.main
 
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
-import com.mrozon.core_api.db.HealthDiaryDao
-import com.mrozon.core_api.mapper.UserToUserDbMapper
 import com.mrozon.core_api.viewmodel.ViewModelKey
 import com.mrozon.feature_splash.di.DaggerViewModelFactory
+import com.mrozon.healthdiary.data.UserRepository
+import com.mrozon.healthdiary.data.UserRepositoryImp
 import com.mrozon.healthdiary.presentation.main.MainActivityViewModel
-import com.mrozon.healthdiary.repository.LocalUserDataSource
-import com.mrozon.healthdiary.repository.LocalUserDataSourceImp
 import dagger.Binds
 import dagger.Module
-import dagger.Provides
 import dagger.multibindings.IntoMap
-import javax.inject.Singleton
 
 @Module
-abstract class MainActivityModule {
+interface MainActivityModule {
     @Binds
     @IntoMap
     @ViewModelKey(MainActivityViewModel::class)
-    abstract fun bindViewModel(viewmodel: MainActivityViewModel): ViewModel
+    fun bindViewModel(viewmodel: MainActivityViewModel): ViewModel
 
     @Binds
-    abstract fun viewModelFactory(factory: DaggerViewModelFactory): ViewModelProvider.Factory
+    fun viewModelFactory(factory: DaggerViewModelFactory): ViewModelProvider.Factory
 
-    @Module
-    companion object {
-
-        @Provides
-        @Singleton
-        @JvmStatic
-        fun provideLocalUser(
-            healthDiaryDao: HealthDiaryDao,
-            mapper: UserToUserDbMapper
-        ): LocalUserDataSource = LocalUserDataSourceImp(healthDiaryDao, mapper)
-    }
+    @Binds
+    fun provideUserRepository(repository: UserRepositoryImp): UserRepository
 
 }

+ 4 - 4
app/src/main/java/com/mrozon/healthdiary/presentation/main/MainActivityViewModel.kt

@@ -4,16 +4,16 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import com.mrozon.core_api.entity.User
-import com.mrozon.healthdiary.repository.LocalUserDataSource
+import com.mrozon.healthdiary.data.UserRepository
 import kotlinx.coroutines.*
 import timber.log.Timber
 import javax.inject.Inject
 
 class MainActivityViewModel @Inject constructor(
-    private val localUserDataSource: LocalUserDataSource
+    private val userRepository: UserRepository
 ): ViewModel() {
 
-    val currentUser = localUserDataSource.getLocalUser()
+    val currentUser = userRepository.getLocalUser()
 
     private val _cleared = MutableLiveData<Boolean>(false)
     val cleared: LiveData<Boolean>
@@ -21,7 +21,7 @@ class MainActivityViewModel @Inject constructor(
 
     fun logoutUser(user: User) {
         CoroutineScope(Dispatchers.IO).launch(getJobErrorHandler()) {
-            localUserDataSource.clearLocalUser(user)
+            userRepository.clearLocalUser(user)
             withContext(Dispatchers.Main){
                 _cleared.value = true
             }

+ 2 - 2
feature_splash/src/main/java/com/mrozon/feature_splash/repository/LocalUser.kt → feature_splash/src/main/java/com/mrozon/feature_splash/data/LocalUserRepository.kt

@@ -1,9 +1,9 @@
-package com.mrozon.feature_splash.repository
+package com.mrozon.feature_splash.data
 
 import androidx.lifecycle.LiveData
 import com.mrozon.core_api.entity.User
 
-interface LocalUser {
+interface LocalUserRepository {
 
     fun getLocalUser(): LiveData<User>
 }

+ 3 - 4
feature_splash/src/main/java/com/mrozon/feature_splash/repository/LocalUserImp.kt → feature_splash/src/main/java/com/mrozon/feature_splash/data/LocalUserRepositoryImp.kt

@@ -1,17 +1,16 @@
-package com.mrozon.feature_splash.repository
+package com.mrozon.feature_splash.data
 
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.Transformations
-import com.mrozon.core_api.db.DatabaseProvider
 import com.mrozon.core_api.db.HealthDiaryDao
 import com.mrozon.core_api.entity.User
 import com.mrozon.core_api.mapper.UserToUserDbMapper
 import javax.inject.Inject
 
-class LocalUserImp @Inject constructor(
+class LocalUserRepositoryImp @Inject constructor(
     private val healthDiaryDao: HealthDiaryDao,
     private val mapper: UserToUserDbMapper
-): LocalUser {
+): LocalUserRepository {
 
     override fun getLocalUser(): LiveData<User> {
         val userDb = healthDiaryDao.getUser()

+ 4 - 12
feature_splash/src/main/java/com/mrozon/feature_splash/di/SplashFragmentModule.kt

@@ -6,8 +6,8 @@ import com.mrozon.core_api.db.HealthDiaryDao
 import com.mrozon.core_api.mapper.UserToUserDbMapper
 import com.mrozon.core_api.viewmodel.ViewModelKey
 import com.mrozon.feature_splash.presentation.SplashFragmentViewModel
-import com.mrozon.feature_splash.repository.LocalUser
-import com.mrozon.feature_splash.repository.LocalUserImp
+import com.mrozon.feature_splash.data.LocalUserRepository
+import com.mrozon.feature_splash.data.LocalUserRepositoryImp
 import dagger.Binds
 import dagger.Module
 import dagger.Provides
@@ -24,15 +24,7 @@ interface SplashFragmentModule {
     @Binds
     fun viewModelFactory(factory: DaggerViewModelFactory): ViewModelProvider.Factory
 
-    @Module
-    companion object {
+    @Binds
+    fun provideLocalUserRepository(repository: LocalUserRepositoryImp): LocalUserRepository
 
-        @Provides
-        @Singleton
-        @JvmStatic
-        fun provideLocalUser(
-            healthDiaryDao: HealthDiaryDao,
-            mapper: UserToUserDbMapper
-        ): LocalUser = LocalUserImp(healthDiaryDao, mapper)
-    }
 }

+ 1 - 1
feature_splash/src/main/java/com/mrozon/feature_splash/presentation/SplashFragment.kt

@@ -37,7 +37,7 @@ class SplashFragment : BaseFragment<FragmentSplashBinding>() {
     }
 
     override fun subscribeUi() {
-        viewModel.currentUser.observe(viewLifecycleOwner, Observer { it ->
+        viewModel.currentUser.observe(viewLifecycleOwner, Observer {
             if(it==null){
                 //auth user
                 navigator.navigateToAuth(findNavController())

+ 2 - 5
feature_splash/src/main/java/com/mrozon/feature_splash/presentation/SplashFragmentViewModel.kt

@@ -1,14 +1,11 @@
 package com.mrozon.feature_splash.presentation
 
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import com.mrozon.feature_splash.repository.LocalUser
+import com.mrozon.feature_splash.data.LocalUserRepository
 import com.mrozon.utils.base.BaseViewModel
-import timber.log.Timber
 import javax.inject.Inject
 
 class SplashFragmentViewModel @Inject constructor(
-    private val localUser: LocalUser
+    localUser: LocalUserRepository
 ): BaseViewModel() {
 
     val currentUser = localUser.getLocalUser()