Conversation
antonkazakov
left a comment
There was a problem hiding this comment.
Привет. Оставил замечания
|
|
||
| override fun onCreate() { | ||
| super.onCreate() | ||
| appComponent = DaggerApplicationComponent.factory().create(this, DataModule()) |
There was a problem hiding this comment.
А зачем ты модуль прокинул в фабрику?
| @BindsInstance | ||
| @Named("ApplicationContext") | ||
| appContext: Context, | ||
| dataModule: DataModule, |
|
|
||
| @Named("ApplicationContext") | ||
| fun provideContext(): Context | ||
| fun provideColorFlow(): MutableSharedFlow<Int> |
There was a problem hiding this comment.
Нужно их перенести на уровень активити компонента
|
|
||
|
|
||
| @Module | ||
| @Named("DataModule") |
|
|
||
| @Module | ||
| @Named("DataModule") | ||
| class DataModule { |
There was a problem hiding this comment.
Подключи его в активитикомпонент
| import javax.inject.Named | ||
|
|
||
| class ViewModelProducer @Inject constructor( | ||
| @Named("ActivityContext") private val context: Context, |
There was a problem hiding this comment.
У тебя здесь будет утечка памяти, потому что ссылка на активити контекс будет жить в ВМ, а активити будет пересоздана
| @Named("ActivityContext") private val context: Context, | ||
| private val colorGenerator: ColorGenerator, | ||
| private val colorFlow: MutableSharedFlow<Int>, | ||
| private val stateFlow: MutableSharedFlow<State> |
There was a problem hiding this comment.
Не совсем понял зачем тебе 2 флоу
| private val colorFlow: MutableSharedFlow<Int>, | ||
| private val stateFlow: MutableSharedFlow<State> | ||
| ) : ViewModel(){ | ||
| val state = MutableLiveData<State>() |
There was a problem hiding this comment.
Правильнее конечно чтобы публичная лайвдата была иммутабельная
|
|
||
| override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
| super.onViewCreated(view, savedInstanceState) | ||
| (requireActivity() as MainActivity).mainActivityComponent |
There was a problem hiding this comment.
Я бы это перенес в oncreate/onattach, onViewCreated слишком часто вызывается
|
|
||
| class ViewModelReceiver @Inject constructor( | ||
| @Named("ApplicationContext") private val context: Context, | ||
| private val colorFlow: MutableSharedFlow<Int>, |
There was a problem hiding this comment.
Неправильно что у тебя в приемнике есть возможность эмитить эвенты во флоу, здесь должен быть SharedFlow
Ради интереса еще сделал обратный отклик из Ресивер фрагмента в Продюсер фрагмент.
Но тема даггера все еще сложновата =( Буду пересматривать лекции