Как заинжектить классы модели в presenter?

До недавних пор я писал весь код работы с базами данных и сетью прямо в presenter(MVP moxy). Сейчас я хочу изменить это и как я понял и мне подсказали необходимо создать класс для работы с сетью, базой данных и тд, на каждый свой. И самое главное - презенер инжектить во view - activity/fragment.А уже классы модели в презентер. Вот я не конца понимаю, как заинжектить классы модели в презентер?до этого я с помощью dagger 2 инжектил классы во view и далее передавал как аргументы в функции презентера. Спасибо


Ответы (1 шт):

Автор решения: Sergei Buvaka

Вы можете все зависимости прокинуть в конструктор Presenter-a и указать аннотацию @Inject.

class Presenter @Inject constructor (
    private val cahce: Cache,
    private val remote: Remote
){
    // some code
}

Далее в Activity вы просто инжектите презентер:

class SomeActivity : AppCompatActivity() {

    @Inject
    lateinit var presenter: Presenter
}

Ну и соответственно нужно помнить, что все зависимости Remote и Caсhe так же должны быть прописаны в модулях или через аннотацию @Inject.

В целом можно презентер и не через конструктор инжектить, как в примере, а просто прописывать @Provide метод в модуле аналогично любому другому классу.

→ Ссылка