Skip to content

Commit c1c0e3a

Browse files
committed
Add ktx
1 parent 01d5247 commit c1c0e3a

File tree

7 files changed

+75
-3
lines changed

7 files changed

+75
-3
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ allprojects {
2424
ext {
2525
targetVersionCode = 46
2626
targetVersionName = "1.5.6"
27-
kotlin_version = '1.3.50'
27+
kotlin_version = '1.3.72'
2828
def autoServiceVersion = '1.0-rc5'
2929
def gradleIncapHelperVersion = '0.3'
3030

moxy-androidx-sample/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ dependencies {
4545
implementation 'androidx.appcompat:appcompat:1.1.0'
4646
implementation project(':moxy')
4747
implementation project(':moxy-androidx')
48+
implementation project(':moxy-ktx')
4849
kapt project(':moxy-compiler')
4950
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
5051
}

moxy-androidx-sample/src/main/kotlin/example/com/moxy_androidx_sample/MainActivity.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package example.com.moxy_androidx_sample
22

33
import android.os.Bundle
44
import android.util.Log
5+
import com.omegar.mvp.ktx.providePresenter
56
import com.omegar.mvp.presenter.InjectPresenter
67
import example.com.moxy_androidx_sample.contract.Contract
78

@@ -30,8 +31,10 @@ class MainActivity : BaseActivity(R.layout.activity_main), Contract.MainView<Dou
3031
// TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
3132
// }
3233

33-
@InjectPresenter
34-
internal lateinit var presenter: MainPresenter
34+
35+
private val presenter: MainPresenter by providePresenter {
36+
MainPresenter()
37+
}
3538

3639
override fun onCreate(savedInstanceState: Bundle?) {
3740
super.onCreate(savedInstanceState)

moxy-ktx/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

moxy-ktx/build.gradle

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
buildscript {
2+
repositories {
3+
google()
4+
jcenter()
5+
mavenCentral()
6+
}
7+
dependencies {
8+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
9+
}
10+
}
11+
12+
13+
apply plugin: 'java-library'
14+
apply plugin: 'kotlin'
15+
16+
17+
java {
18+
sourceCompatibility = JavaVersion.VERSION_1_7
19+
targetCompatibility = JavaVersion.VERSION_1_7
20+
}
21+
22+
dependencies {
23+
api(project(":moxy"))
24+
25+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
26+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.omegar.mvp.ktx
2+
3+
import com.omegar.mvp.MvpDelegateHolder
4+
import com.omegar.mvp.MvpPresenter
5+
import com.omegar.mvp.presenter.PresenterField
6+
import com.omegar.mvp.presenter.PresenterType
7+
import kotlin.reflect.KProperty
8+
9+
/**
10+
* Created by Anton Knyazev on 25.11.2020.
11+
*/
12+
13+
class CustomPresenterFactory<P : MvpPresenter<*>>(tag: String, clz: Class<out MvpPresenter<*>>, private val factoryBlock: () -> P) :
14+
PresenterField<Any?>(tag, PresenterType.LOCAL, null, clz) {
15+
16+
private var presenter: P? = null
17+
18+
override fun bind(container: Any?, presenter: MvpPresenter<*>?) {
19+
@Suppress("UNCHECKED_CAST")
20+
this.presenter = presenter as P
21+
}
22+
23+
override fun providePresenter(delegated: Any?): MvpPresenter<*> {
24+
return factoryBlock()
25+
}
26+
27+
operator fun getValue(thisRef: Any?, property: KProperty<*>): P {
28+
return presenter!!
29+
}
30+
31+
}
32+
33+
inline fun <reified P : MvpPresenter<*>> MvpDelegateHolder.providePresenter(
34+
name: String = "presenter",
35+
noinline factoryBlock: () -> P = { P::class.java.newInstance() }
36+
): CustomPresenterFactory<P> {
37+
return CustomPresenterFactory(P::class.java.name + "." + name, P::class.java, factoryBlock).also {
38+
mvpDelegate.addCustomPresenterFields(it)
39+
}
40+
}

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
include ':moxy-ktx'
12
include ':moxy', ':stub-reflector', ':moxy-android', ':moxy-compiler', ':stub-android', ':moxy-app-compat', ':moxy-androidx', ':stub-appcompat', ':stub-androidx'
23
include ':sample-github'
34
include ':sample-kotlin'

0 commit comments

Comments
 (0)