Skip to content

Commit ed4eb12

Browse files
authored
Merge pull request TeamNewPipe#8734 from Stypox/feed-group-factory
Improve `FeedGroupDialogViewModel` factory
2 parents 4070007 + 8dce66d commit ed4eb12

2 files changed

Lines changed: 19 additions & 16 deletions

File tree

app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,13 @@ class FeedGroupDialog : DialogFragment(), BackPressable {
124124

125125
viewModel = ViewModelProvider(
126126
this,
127-
FeedGroupDialogViewModel.Factory(
127+
FeedGroupDialogViewModel.getFactory(
128128
requireContext(),
129-
groupId, subscriptionsCurrentSearchQuery, subscriptionsShowOnlyUngrouped
129+
groupId,
130+
subscriptionsCurrentSearchQuery,
131+
subscriptionsShowOnlyUngrouped
130132
)
131-
).get(FeedGroupDialogViewModel::class.java)
133+
)[FeedGroupDialogViewModel::class.java]
132134

133135
viewModel.groupLiveData.observe(viewLifecycleOwner, Observer(::handleGroup))
134136
viewModel.subscriptionsLiveData.observe(viewLifecycleOwner) {

app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialogViewModel.kt

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import android.content.Context
44
import androidx.lifecycle.LiveData
55
import androidx.lifecycle.MutableLiveData
66
import androidx.lifecycle.ViewModel
7-
import androidx.lifecycle.ViewModelProvider
7+
import androidx.lifecycle.viewmodel.initializer
8+
import androidx.lifecycle.viewmodel.viewModelFactory
89
import io.reactivex.rxjava3.core.Completable
910
import io.reactivex.rxjava3.core.Flowable
1011
import io.reactivex.rxjava3.disposables.Disposable
@@ -115,18 +116,18 @@ class FeedGroupDialogViewModel(
115116

116117
data class Filter(val query: String, val showOnlyUngrouped: Boolean)
117118

118-
class Factory(
119-
private val context: Context,
120-
private val groupId: Long = FeedGroupEntity.GROUP_ALL_ID,
121-
private val initialQuery: String = "",
122-
private val initialShowOnlyUngrouped: Boolean = false
123-
) : ViewModelProvider.Factory {
124-
@Suppress("UNCHECKED_CAST")
125-
override fun <T : ViewModel> create(modelClass: Class<T>): T {
126-
return FeedGroupDialogViewModel(
127-
context.applicationContext,
128-
groupId, initialQuery, initialShowOnlyUngrouped
129-
) as T
119+
companion object {
120+
fun getFactory(
121+
context: Context,
122+
groupId: Long,
123+
initialQuery: String,
124+
initialShowOnlyUngrouped: Boolean
125+
) = viewModelFactory {
126+
initializer {
127+
FeedGroupDialogViewModel(
128+
context.applicationContext, groupId, initialQuery, initialShowOnlyUngrouped
129+
)
130+
}
130131
}
131132
}
132133
}

0 commit comments

Comments
 (0)