Size: a a a

Moxy – MVP библиотека под Android

2020 July 17

AU

Alex Urzhumtcev in Moxy – MVP библиотека под Android
Alex Urzhumtcev
версия 2.1.2, сейчас попробую что-то похожее изобразить в гисте
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
ошибка компиляции из-за BasePresenter, сделайте ему не MvpView а свой интерфейс MyBaseView, можно пустой. пока такой костыль)
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
а базовый презентер с двумя дженерик параметрами это вообще опасная дорожка, Мокси к такому может быть не готова)
источник

AU

Alex Urzhumtcev in Moxy – MVP библиотека под Android
Алексей Ершов
ошибка компиляции из-за BasePresenter, сделайте ему не MvpView а свой интерфейс MyBaseView, можно пустой. пока такой костыль)
во всем проекте придётся переделать) сейчас попробую
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
и в целом наследование презентеров это немного странно, я бы попробовал всё-таки сделать один класс, а отличающуюся логику вынести в его зависимости
источник
2020 July 18

YS

Yury Sedymov in Moxy – MVP библиотека под Android
Всем привет 🤚
Я делал тестовое в одну компанию, использовал Moxy и Dagger (сабкомпоненты и скоупы).
Зависимости инжектил во фрагмент, затем передавал в презентер через конструктор. Честно говоря, всегда так делал.
Пришел фидбек: “Попробовать подружить Moxy и Dagger2,  избавиться от огромного количества инжектов во фрагменты и от проксирования их в констурктор презентера”.
Подскажите, в какую сторону копать?
источник

AD

Aleksey D. in Moxy – MVP библиотека под Android
Yury Sedymov
Всем привет 🤚
Я делал тестовое в одну компанию, использовал Moxy и Dagger (сабкомпоненты и скоупы).
Зависимости инжектил во фрагмент, затем передавал в презентер через конструктор. Честно говоря, всегда так делал.
Пришел фидбек: “Попробовать подружить Moxy и Dagger2,  избавиться от огромного количества инжектов во фрагменты и от проксирования их в констурктор презентера”.
Подскажите, в какую сторону копать?
источник

AD

Aleksey D. in Moxy – MVP библиотека под Android
можно еще проще:

val component = FeatureComponent() // dagger
val presenter by moxyPresenter { component.getFeaturePresenter() }
источник

AU

Alex Urzhumtcev in Moxy – MVP библиотека под Android
Алексей Ершов
ошибка компиляции из-за BasePresenter, сделайте ему не MvpView а свой интерфейс MyBaseView, можно пустой. пока такой костыль)
по этому моменту есть вопрос, если сделать MyBaseView, он же все равно будет от MvpView наследоваться, т.к. в библиотеке MvpPresenter<View extends MvpView>. И в этом случае ошибка остается
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Alex Urzhumtcev
по этому моменту есть вопрос, если сделать MyBaseView, он же все равно будет от MvpView наследоваться, т.к. в библиотеке MvpPresenter<View extends MvpView>. И в этом случае ошибка остается
Не останется ошибка, так как не будет больше одного презентера, у которого в дженерике напрямую указан mvpview
источник

YS

Yury Sedymov in Moxy – MVP библиотека под Android
🙏 спасибо!
источник

AU

Alex Urzhumtcev in Moxy – MVP библиотека под Android
Алексей Ершов
Не останется ошибка, так как не будет больше одного презентера, у которого в дженерике напрямую указан mvpview
спасибо, пропустил в нескольких местах, теперь завелось
источник
2020 July 19

ДГ

Дмитрий Городков... in Moxy – MVP библиотека под Android
Простите, может этот вопрос поднимался здесь, но я не нашел. В общем использую Moxy 2 и Dagger мне надо заинжектить сервисы в презентер через конструктор. Как это сделать? Если не трудно то по подробней описать процесс. В интернете инфы ооочень мало и по сути ничего нет. По этому решил спросить здесь
источник

AD

Aleksey D. in Moxy – MVP библиотека под Android
Переслано от Aleksey D.
источник

ДГ

Дмитрий Городков... in Moxy – MVP библиотека под Android
Я просил по подробнее. Так смотрите. Мне к примеру надо заинжектить в конструктор context У меня есть класс презентера с таким кодом class AuthPresenter @Inject constructor(context: Context): MvpPresenter<AuthView>()  Когда я пишу код во fragment который указан в инструкции
@Inject lateinit var presenterProvider: Provider<AuthPresenter>
private val presenter by moxyPresenter { presenterProvider.get() }

То получаю ошибку lateinit property presenterProvider has not been initialized.
источник

AO

Artem Osipov in Moxy – MVP библиотека под Android
Покажите код, потому что в целом нет никаких проблем с даггером и мокси
источник

ДГ

Дмитрий Городков... in Moxy – MVP библиотека под Android
Dagger:

@Module
class AppModule (private val context: Application) {

   @Provides
   @Singleton
   fun provideContext(): Context = context
}

@Singleton
@Component(modules = [AppModule::class])
interface AppComponent {

    fun inject (presenter: AuthPresenter)
}

class App: Application() {

   override fun onCreate() {
       super.onCreate()

       DI.appComponent = DaggerAppComponent.builder()
           .appModule(AppModule(this))
           .build()
       
   }
}

Presenter and View:

@InjectViewState
class AuthPresenter @Inject constructor(context: Context): MvpPresenter<AuthView>() {
   ...
}

class AuthFragment : MvpAppCompatFragment(R.layout.fragment_auth), AuthView {
   
   @Inject
   lateinit var presenterProvider: Provider<AuthPresenter>

    private val presenter by moxyPresenter { presenterProvider.get() }
}
источник

AD

Aleksey D. in Moxy – MVP библиотека под Android
Дмитрий Городков
Dagger:

@Module
class AppModule (private val context: Application) {

   @Provides
   @Singleton
   fun provideContext(): Context = context
}

@Singleton
@Component(modules = [AppModule::class])
interface AppComponent {

    fun inject (presenter: AuthPresenter)
}

class App: Application() {

   override fun onCreate() {
       super.onCreate()

       DI.appComponent = DaggerAppComponent.builder()
           .appModule(AppModule(this))
           .build()
       
   }
}

Presenter and View:

@InjectViewState
class AuthPresenter @Inject constructor(context: Context): MvpPresenter<AuthView>() {
   ...
}

class AuthFragment : MvpAppCompatFragment(R.layout.fragment_auth), AuthView {
   
   @Inject
   lateinit var presenterProvider: Provider<AuthPresenter>

    private val presenter by moxyPresenter { presenterProvider.get() }
}
нужно до onCreate инжектить
источник

ДГ

Дмитрий Городков... in Moxy – MVP библиотека под Android
В смысле? Есть пример где можно посмотреть реализацию?
источник

AD

Aleksey D. in Moxy – MVP библиотека под Android
Дмитрий Городков
В смысле? Есть пример где можно посмотреть реализацию?
а, конечно. нужно найти любой пример по даггеру и смотреть, как инжектить зависимости - не вижу инжекта внутри фрагмента. аннотации для этого мало.
источник