Skip to content

Commit c8a4390

Browse files
author
murat.cakir
committed
Deleted ViewModelModule.kt and AppModule.kt according the PR Reviews.
.
1 parent 547fcbd commit c8a4390

19 files changed

Lines changed: 48 additions & 160 deletions

File tree

app/src/main/kotlin/com/adesso/movee/base/BaseActivity.kt

Lines changed: 0 additions & 22 deletions
This file was deleted.

app/src/main/kotlin/com/adesso/movee/base/BaseBindingActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package com.adesso.movee.base
22

33
import androidx.annotation.LayoutRes
4+
import androidx.appcompat.app.AppCompatActivity
45
import androidx.databinding.DataBindingUtil
56
import androidx.databinding.ViewDataBinding
67
import com.adesso.movee.internal.util.functional.lazyThreadSafetyNone
78

8-
abstract class BaseBindingActivity<VM : BaseAndroidViewModel, B : ViewDataBinding> :
9-
BaseActivity<VM>() {
9+
abstract class BaseBindingActivity<B : ViewDataBinding> : AppCompatActivity() {
1010

1111
protected val binder by lazyThreadSafetyNone<B> {
1212
DataBindingUtil.setContentView(this, layoutId)

app/src/main/kotlin/com/adesso/movee/base/BaseFragment.kt

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,26 @@ import android.os.Bundle
44
import android.view.LayoutInflater
55
import android.view.View
66
import android.view.ViewGroup
7-
import androidx.annotation.IdRes
87
import androidx.annotation.LayoutRes
98
import androidx.core.net.toUri
109
import androidx.databinding.DataBindingUtil
1110
import androidx.databinding.ViewDataBinding
1211
import androidx.fragment.app.Fragment
13-
import androidx.fragment.app.activityViewModels
14-
import androidx.fragment.app.viewModels
15-
import androidx.lifecycle.ViewModel
16-
import androidx.lifecycle.ViewModelProvider
12+
import androidx.fragment.app.createViewModelLazy
13+
import androidx.lifecycle.HasDefaultViewModelProviderFactory
1714
import androidx.navigation.fragment.FragmentNavigator
1815
import androidx.navigation.fragment.FragmentNavigatorExtras
1916
import androidx.navigation.fragment.findNavController
20-
import androidx.navigation.navGraphViewModels
2117
import com.adesso.movee.BR
2218
import com.adesso.movee.internal.extension.observeNonNull
2319
import com.adesso.movee.internal.extension.showPopup
24-
import com.adesso.movee.internal.util.functional.lazyThreadSafetyNone
2520
import com.adesso.movee.navigation.NavigationCommand
2621
import com.adesso.movee.scene.main.MainActivity
2722
import com.google.android.material.snackbar.Snackbar
2823
import java.lang.reflect.ParameterizedType
29-
import javax.inject.Inject
3024

3125
abstract class BaseFragment<VM : BaseAndroidViewModel, B : ViewDataBinding> : Fragment() {
3226

33-
@Inject
34-
lateinit var viewModelFactory: ViewModelProvider.Factory
35-
3627
protected lateinit var binder: B
3728

3829
@get:LayoutRes
@@ -41,29 +32,20 @@ abstract class BaseFragment<VM : BaseAndroidViewModel, B : ViewDataBinding> : Fr
4132
open fun initialize() {}
4233

4334
@Suppress("UNCHECKED_CAST")
44-
protected open val viewModel by lazyThreadSafetyNone {
45-
val persistentViewModelClass =
46-
(javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<VM>
47-
return@lazyThreadSafetyNone ViewModelProvider(this, viewModelFactory).get(
48-
persistentViewModelClass
49-
)
50-
}
51-
52-
protected inline fun <reified VM : ViewModel> activityViewModels(): Lazy<VM> {
53-
return activityViewModels { viewModelFactory }
54-
}
55-
56-
protected inline fun <reified VM : ViewModel> viewModels(): Lazy<VM> {
57-
return viewModels { viewModelFactory }
58-
}
59-
60-
protected inline fun <reified VM : ViewModel> parentViewModels(): Lazy<VM> {
61-
return requireParentFragment().viewModels { viewModelFactory }
62-
}
63-
64-
protected inline fun <reified VM : ViewModel> navGraphViewModels(@IdRes navGraphId: Int):
65-
Lazy<VM> {
66-
return navGraphViewModels(navGraphId) { viewModelFactory }
35+
protected open val viewModel: VM
36+
get() {
37+
val persistentViewModelClass =
38+
(javaClass.genericSuperclass as ParameterizedType)
39+
.actualTypeArguments[0] as Class<VM>
40+
val lazyVM = createViewModelLazy(
41+
viewModelClass = persistentViewModelClass.kotlin,
42+
storeProducer = { viewModelStore },
43+
factoryProducer = {
44+
(this as? HasDefaultViewModelProviderFactory)?.defaultViewModelProviderFactory
45+
?: defaultViewModelProviderFactory
46+
}
47+
)
48+
return lazyVM.value
6749
}
6850

6951
override fun onActivityCreated(savedInstanceState: Bundle?) {

app/src/main/kotlin/com/adesso/movee/internal/injection/module/AppModule.kt

Lines changed: 0 additions & 20 deletions
This file was deleted.

app/src/main/kotlin/com/adesso/movee/internal/injection/module/NetworkModule.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import dagger.Lazy
2121
import dagger.Module
2222
import dagger.Provides
2323
import dagger.hilt.InstallIn
24+
import dagger.hilt.android.qualifiers.ApplicationContext
2425
import dagger.hilt.components.SingletonComponent
2526
import okhttp3.Cache
2627
import okhttp3.OkHttpClient
@@ -44,7 +45,7 @@ object NetworkModule {
4445
*/
4546
@Provides
4647
@Singleton
47-
fun providesCache(context: Context): Cache = Cache(
48+
fun providesCache(@ApplicationContext context: Context): Cache = Cache(
4849
File(
4950
context.cacheDir,
5051
CLIENT_CACHE_DIRECTORY
@@ -79,7 +80,7 @@ object NetworkModule {
7980
@Provides
8081
@Singleton
8182
fun provideOkHttpClient(
82-
context: Context,
83+
@ApplicationContext context: Context,
8384
cache: Cache,
8485
loggingInterceptor: HttpLoggingInterceptor,
8586
curlInterceptor: CurlInterceptor,

app/src/main/kotlin/com/adesso/movee/internal/injection/viewmodel/ViewModelModule.kt

Lines changed: 0 additions & 76 deletions
This file was deleted.

app/src/main/kotlin/com/adesso/movee/internal/util/api/RequiresSessionTokenInterceptor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.Context
44
import com.adesso.movee.R
55
import com.adesso.movee.data.local.datasource.LoginLocalDataSource
66
import com.adesso.movee.internal.util.Failure
7+
import dagger.hilt.android.qualifiers.ApplicationContext
78
import javax.inject.Inject
89
import okhttp3.Interceptor
910
import okhttp3.Response
@@ -12,7 +13,7 @@ const val HEADER_REQUIRE_SESSION_TOKEN =
1213
"${RequiresSessionTokenInterceptor.HEADER_KEY}: ${RequiresSessionTokenInterceptor.HEADER_VALUE}"
1314

1415
class RequiresSessionTokenInterceptor @Inject constructor(
15-
context: Context,
16+
@ApplicationContext context: Context,
1617
private val loginLocalDataSource: LoginLocalDataSource
1718
) : Interceptor {
1819

app/src/main/kotlin/com/adesso/movee/scene/login/LoginViewModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ import com.adesso.movee.domain.LoginUseCase
1010
import com.adesso.movee.internal.util.Event
1111
import com.github.michaelbull.result.onFailure
1212
import com.github.michaelbull.result.onSuccess
13+
import dagger.hilt.android.lifecycle.HiltViewModel
1314
import kotlinx.coroutines.launch
1415
import javax.inject.Inject
1516

17+
@HiltViewModel
1618
class LoginViewModel @Inject constructor(
1719
private val loginUseCase: LoginUseCase,
1820
application: Application

app/src/main/kotlin/com/adesso/movee/scene/main/MainActivity.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.Context
44
import android.content.Intent
55
import android.os.Bundle
66
import android.view.View
7+
import androidx.activity.viewModels
78
import androidx.core.net.toUri
89
import androidx.navigation.NavController
910
import androidx.navigation.findNavController
@@ -17,9 +18,10 @@ import com.adesso.movee.navigation.NavigationCommand
1718
import dagger.hilt.android.AndroidEntryPoint
1819

1920
@AndroidEntryPoint
20-
class MainActivity : BaseBindingActivity<MainViewModel, ActivityMainBinding>() {
21+
class MainActivity : BaseBindingActivity<ActivityMainBinding>() {
2122

2223
override val layoutId get() = R.layout.activity_main
24+
private val viewModel: MainViewModel by viewModels()
2325

2426
val navController: NavController by lazy { findNavController(R.id.main_host_fragment) }
2527

app/src/main/kotlin/com/adesso/movee/scene/main/MainViewModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package com.adesso.movee.scene.main
22

33
import android.app.Application
44
import com.adesso.movee.base.BaseAndroidViewModel
5+
import dagger.hilt.android.lifecycle.HiltViewModel
56
import javax.inject.Inject
67

8+
@HiltViewModel
79
class MainViewModel @Inject constructor(
810
application: Application
911
) : BaseAndroidViewModel(application)

0 commit comments

Comments
 (0)