Skip to content

Update deps and using flowWithLifecycle from ktx #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 0 additions & 12 deletions .idea/runConfigurations.xml

This file was deleted.

2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ dependencies {
implementation(featureMain)
implementation(featureAdd)

implementation(deps.jetbrains.coroutinesAndroid)
implementation(deps.coroutines.android)
implementation(deps.koin.android)

testImplementation(deps.test.junit)
Expand Down
23 changes: 12 additions & 11 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
val kotlinVersion by extra("1.4.0-rc")
repositories {
google()
jcenter()
maven(url = "https://dl.bintray.com/kotlin/kotlin-eap")
mavenCentral()
gradlePluginPortal()
}
dependencies {
classpath("com.android.tools.build:gradle:4.0.1")
classpath("com.android.tools.build:gradle:4.0.2")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
classpath("com.diffplug.spotless:spotless-plugin-gradle:5.3.0")
classpath("com.diffplug.spotless:spotless-plugin-gradle:5.10.0")
}
}

Expand Down Expand Up @@ -61,19 +61,20 @@ subprojects {
}

allprojects {
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
tasks.withType<KotlinCompile> {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
sourceCompatibility = JavaVersion.VERSION_1_8.toString()
targetCompatibility = JavaVersion.VERSION_1_8.toString()
useIR = true

val version = JavaVersion.VERSION_1_8.toString()
jvmTarget = version
sourceCompatibility = version
targetCompatibility = version
}
}

repositories {
google()
jcenter()
mavenCentral()
maven(url = "https://dl.bintray.com/kotlin/kotlin-eap")
}
}

Expand Down
37 changes: 18 additions & 19 deletions buildSrc/src/main/kotlin/deps.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import org.gradle.kotlin.dsl.project
import org.gradle.plugin.use.PluginDependenciesSpec
import org.gradle.plugin.use.PluginDependencySpec

const val ktlintVersion = "0.38.1"
const val kotlinVersion = "1.4.10"
const val ktlintVersion = "0.41.0"
const val kotlinVersion = "1.5.0-M1"

object appConfig {
const val applicationId = "com.hoc.flowmvi"
Expand All @@ -22,16 +22,16 @@ object appConfig {

object deps {
object androidx {
const val appCompat = "androidx.appcompat:appcompat:1.3.0-alpha02"
const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha02"
const val constraintLayout = "androidx.constraintlayout:constraintlayout:2.0.1"
const val recyclerView = "androidx.recyclerview:recyclerview:1.2.0-alpha05"
const val appCompat = "androidx.appcompat:appcompat:1.3.0-rc01"
const val coreKtx = "androidx.core:core-ktx:1.6.0-alpha01"
const val constraintLayout = "androidx.constraintlayout:constraintlayout:2.1.0-beta01"
const val recyclerView = "androidx.recyclerview:recyclerview:1.2.0-rc01"
const val swipeRefreshLayout = "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
const val material = "com.google.android.material:material:1.3.0-alpha02"
const val material = "com.google.android.material:material:1.4.0-alpha01"
}

object lifecycle {
private const val version = "2.3.0-beta01"
private const val version = "2.4.0-alpha01"

const val viewModelKtx = "androidx.lifecycle:lifecycle-viewmodel-ktx:$version" // viewModelScope
const val runtimeKtx = "androidx.lifecycle:lifecycle-runtime-ktx:$version" // lifecycleScope
Expand All @@ -41,26 +41,25 @@ object deps {
object squareup {
const val retrofit = "com.squareup.retrofit2:retrofit:2.9.0"
const val converterMoshi = "com.squareup.retrofit2:converter-moshi:2.9.0"
const val loggingInterceptor = "com.squareup.okhttp3:logging-interceptor:4.8.1"
const val moshiKotlin = "com.squareup.moshi:moshi-kotlin:1.10.0"
const val loggingInterceptor = "com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.2"
const val moshiKotlin = "com.squareup.moshi:moshi-kotlin:1.11.0"
}

object jetbrains {
private const val version = "1.4.0"
object coroutines {
private const val version = "1.4.3"

const val coroutinesCore = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$version"
const val coroutinesAndroid = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$version"
const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$version"
const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$version"
}

object koin {
private const val version = "2.2.2"
private const val version = "3.0.1-beta-2"

const val androidXViewModel = "org.koin:koin-androidx-viewmodel:$version"
const val core = "org.koin:koin-core:$version"
const val android = "org.koin:koin-android:$version"
const val core = "io.insert-koin:koin-core:$version"
const val android = "io.insert-koin:koin-android:$version"
}

const val coil = "io.coil-kt:coil:1.0.0"
const val coil = "io.coil-kt:coil:1.1.1"

object test {
const val junit = "junit:junit:4.13"
Expand Down
4 changes: 2 additions & 2 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ android {
}

dependencies {
implementation(deps.jetbrains.coroutinesCore)
implementation(deps.jetbrains.coroutinesAndroid)
implementation(deps.coroutines.core)
implementation(deps.coroutines.android)

implementation(deps.androidx.coreKtx)
implementation(deps.androidx.swipeRefreshLayout)
Expand Down
41 changes: 0 additions & 41 deletions core/src/main/java/com/hoc/flowmvi/core/Flow+LaunchIn.kt

This file was deleted.

2 changes: 1 addition & 1 deletion data/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ dependencies {
implementation(core)
implementation(domain)

implementation(deps.jetbrains.coroutinesCore)
implementation(deps.coroutines.core)

implementation(deps.squareup.retrofit)
implementation(deps.squareup.moshiKotlin)
Expand Down
2 changes: 1 addition & 1 deletion domain/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ plugins {
}

dependencies {
implementation(deps.jetbrains.coroutinesCore)
implementation(deps.coroutines.core)
implementation(deps.koin.core)
}
4 changes: 2 additions & 2 deletions feature-add/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,6 @@ dependencies {
implementation(deps.androidx.constraintLayout)
implementation(deps.androidx.material)

implementation(deps.jetbrains.coroutinesCore)
implementation(deps.koin.androidXViewModel)
implementation(deps.coroutines.core)
implementation(deps.koin.android)
}
14 changes: 8 additions & 6 deletions feature-add/src/main/java/com/hoc/flowmvi/ui/add/AddActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ import android.util.Log
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isInvisible
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import androidx.transition.AutoTransition
import androidx.transition.TransitionManager
import com.hoc.flowmvi.core.clicks
import com.hoc.flowmvi.core.firstChange
import com.hoc.flowmvi.core.launchWhenStartedUntilStopped
import com.hoc.flowmvi.core.navigator.IntentProviders
import com.hoc.flowmvi.core.textChanges
import com.hoc.flowmvi.core.toast
Expand All @@ -24,14 +25,13 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koin.androidx.viewmodel.scope.emptyState
import org.koin.androidx.viewmodel.ext.android.stateViewModel
import kotlin.LazyThreadSafetyMode.NONE

@FlowPreview
@ExperimentalCoroutinesApi
class AddActivity : AppCompatActivity() {
private val addVM by viewModel<AddVM>(state = emptyState())
private val addVM by stateViewModel<AddVM>()
private val addBinding by lazy(NONE) { ActivityAddBinding.inflate(layoutInflater) }

override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -54,12 +54,14 @@ class AddActivity : AppCompatActivity() {
// observe view model
addVM.viewState
.onEach { render(it) }
.launchWhenStartedUntilStopped(this)
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
.launchIn(lifecycleScope)

// observe single event
addVM.singleEvent
.onEach { handleSingleEvent(it) }
.launchWhenStartedUntilStopped(this)
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
.launchIn(lifecycleScope)

// pass view intent to view model
intents()
Expand Down
4 changes: 2 additions & 2 deletions feature-add/src/main/java/com/hoc/flowmvi/ui/add/AddModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import org.koin.dsl.module
@ExperimentalCoroutinesApi
@FlowPreview
val addModule = module {
viewModel {
viewModel { params ->
AddVM(
addUser = get(),
savedStateHandle = it.get(),
savedStateHandle = params.get(),
)
}

Expand Down
4 changes: 2 additions & 2 deletions feature-main/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ dependencies {
implementation(deps.androidx.swipeRefreshLayout)
implementation(deps.androidx.material)

implementation(deps.jetbrains.coroutinesCore)
implementation(deps.koin.androidXViewModel)
implementation(deps.coroutines.core)
implementation(deps.koin.android)
implementation(deps.coil)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.hoc.flowmvi.core.SwipeLeftToDeleteCallback
import com.hoc.flowmvi.core.clicks
import com.hoc.flowmvi.core.launchWhenStartedUntilStopped
import com.hoc.flowmvi.core.navigator.Navigator
import com.hoc.flowmvi.core.refreshes
import com.hoc.flowmvi.core.safeOffer
Expand Down Expand Up @@ -86,12 +87,14 @@ class MainActivity : AppCompatActivity() {
// observe view model
mainVM.viewState
.onEach { render(it) }
.launchWhenStartedUntilStopped(this)
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
.launchIn(lifecycleScope)

// observe single event
mainVM.singleEvent
.onEach { handleSingleEvent(it) }
.launchWhenStartedUntilStopped(this)
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
.launchIn(lifecycleScope)

// pass view intent to view model
intents()
Expand Down