Bladeren bron

add logic SplashFragment

MrOzOn 5 jaren geleden
bovenliggende
commit
4e70474786

+ 7 - 10
app/src/main/java/com/mrozon/healthdiary/presentation/main/MainActivity.kt

@@ -3,8 +3,11 @@ package com.mrozon.healthdiary.presentation.main
 import android.os.Bundle
 import android.view.View
 import androidx.activity.viewModels
+import androidx.appcompat.app.AppCompatActivity
 import androidx.core.view.GravityCompat
 import androidx.drawerlayout.widget.DrawerLayout
+import androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED
+import androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_UNLOCKED
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.Observer
 import androidx.lifecycle.ViewModelProvider
@@ -45,16 +48,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
     }
 
     private fun initDI() {
-//        val component = SplashFragmentComponent.create(
-//            (fragment.activity?.application
-//                    as AppWithFacade).getFacade()
-//        )
-//        component.inject(fragment)
-//        return component
-//        DaggerMainActivityComponent.builder()
-//            .databaseProvider((application as AppWithFacade).getFacade().provideDatabase())
-//            .build()
-//            .inject(this)
         MainActivityComponent.create((application as AppWithFacade).getFacade())
             .inject(this)
     }
@@ -84,10 +77,14 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
         viewModel.currentUser.observe(this, Observer {
             if(it==null){
                 Timber.d("user is null")
+                supportActionBar?.hide()
+                drawerLayout.setDrawerLockMode(LOCK_MODE_LOCKED_CLOSED)
             }
             else
             {
                 Timber.d("user not null")
+                supportActionBar?.show()
+                drawerLayout.setDrawerLockMode(LOCK_MODE_UNLOCKED)
             }
         })
     }

+ 4 - 3
feature_splash/src/main/java/com/mrozon/feature_splash/di/SplashFragmentComponent.kt

@@ -6,11 +6,12 @@ import com.mrozon.core_api.providers.ProvidersFacade
 import com.mrozon.core_api.viewmodel.ViewModelsFactoryProvider
 import com.mrozon.feature_splash.presentation.SplashFragment
 import dagger.Component
+import javax.inject.Singleton
 
-//@Singleton
+@Singleton
 @Component(
     modules = [SplashFragmentModule::class],
-    dependencies = [SplashNavigator::class]
+    dependencies = [ProvidersFacade::class, SplashNavigator::class]
 )
 interface SplashFragmentComponent: ViewModelsFactoryProvider {
 
@@ -19,7 +20,7 @@ interface SplashFragmentComponent: ViewModelsFactoryProvider {
         fun create(providersFacade: ProvidersFacade): SplashFragmentComponent {
             return DaggerSplashFragmentComponent.builder()
                 .splashNavigator(providersFacade.provideSplashNavigator())
-//                .providersFacade(providersFacade)
+                .providersFacade(providersFacade)
                 .build()
         }
 

+ 18 - 0
feature_splash/src/main/java/com/mrozon/feature_splash/di/SplashFragmentModule.kt

@@ -2,11 +2,17 @@ package com.mrozon.feature_splash.di
 
 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.presentation.SplashFragmentViewModel
+import com.mrozon.feature_splash.repository.LocalUser
+import com.mrozon.feature_splash.repository.LocalUserImp
 import dagger.Binds
 import dagger.Module
+import dagger.Provides
 import dagger.multibindings.IntoMap
+import javax.inject.Singleton
 
 @Module
 interface SplashFragmentModule {
@@ -17,4 +23,16 @@ interface SplashFragmentModule {
 
     @Binds
     fun viewModelFactory(factory: DaggerViewModelFactory): ViewModelProvider.Factory
+
+    @Module
+    companion object {
+
+        @Provides
+        @Singleton
+        @JvmStatic
+        fun provideLocalUser(
+            healthDiaryDao: HealthDiaryDao,
+            mapper: UserToUserDbMapper
+        ): LocalUser = LocalUserImp(healthDiaryDao, mapper)
+    }
 }

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

@@ -7,6 +7,7 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.viewModels
+import androidx.lifecycle.Observer
 import androidx.lifecycle.ViewModelProvider
 import com.mrozon.feature_splash.R
 import com.mrozon.feature_splash.databinding.FragmentSplashBinding
@@ -24,35 +25,21 @@ class SplashFragment : BaseFragment<FragmentSplashBinding>() {
 
     private val viewModel by viewModels<SplashFragmentViewModel> { viewModelFactory }
 
-    private fun setFullscreen() {
-        val flags =
-             View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
-                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
-        requireActivity().window.decorView.systemUiVisibility = flags
-    }
-
-    private fun hideSystemUI() {
-        // Enables regular immersive mode.
-        // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
-        // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
-        requireActivity().window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
-                // Set the content to appear under the system bars so that the
-                // content doesn't resize when the system bars hide and show.
-                or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
-                or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-                // Hide the nav bar and status bar
-                or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-                or View.SYSTEM_UI_FLAG_FULLSCREEN)
-    }
-
     override fun onAttach(context: Context) {
         super.onAttach(context)
         SplashFragmentComponent.injectFragment(this)
     }
 
     override fun subscribeUi() {
-
+        viewModel.currentUser.observe(viewLifecycleOwner, Observer { it ->
+            if(it==null){
+                //auth user
+            }
+            else
+            {
+                //show profiles
+            }
+        })
     }
 
 

+ 7 - 11
feature_splash/src/main/java/com/mrozon/feature_splash/presentation/SplashFragmentViewModel.kt

@@ -1,20 +1,16 @@
 package com.mrozon.feature_splash.presentation
 
-import com.mrozon.core_api.navigation.SplashNavigator
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import com.mrozon.feature_splash.repository.LocalUser
 import com.mrozon.utils.base.BaseViewModel
 import timber.log.Timber
 import javax.inject.Inject
 
-class SplashFragmentViewModel @Inject constructor(): BaseViewModel() {
-
-    fun blaaa() {
-        Timber.d("blaaa")
-    }
-
-    init {
-        Timber.d("init SplashFragmentViewModel")
-    }
-
+class SplashFragmentViewModel @Inject constructor(
+    private val localUser: LocalUser
+): BaseViewModel() {
 
+    val currentUser = localUser.getLocalUser()
 
 }

+ 9 - 0
feature_splash/src/main/java/com/mrozon/feature_splash/repository/LocalUser.kt

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

+ 23 - 0
feature_splash/src/main/java/com/mrozon/feature_splash/repository/LocalUserImp.kt

@@ -0,0 +1,23 @@
+package com.mrozon.feature_splash.repository
+
+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(
+    private val healthDiaryDao: HealthDiaryDao,
+    private val mapper: UserToUserDbMapper
+): LocalUser {
+
+    override fun getLocalUser(): LiveData<User> {
+        val userDb = healthDiaryDao.getUser()
+        return Transformations.map(userDb) {
+            mapper.reverseMap(it)
+        }
+    }
+
+}