diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000000..c2c5d194e1c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,12 @@ +name: Regular build +on: [push] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Build + run: ./gradlew build diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c9c34c0ed3..3c155a10ae4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 0.5.8 + +* `Common`: + * New extension `Iterable#firstNotNull` +* `Coroutines` + * New extension `Flow#firstNotNull` + * New extensions `CoroutineContext#LinkedSupervisorJob`, `CoroutineScope#LinkedSupervisorJob` and + `CoroutineScope#LinkedSupervisorScope` + ## 0.5.7 * `Pagination` diff --git a/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/IterableFirstNotNull.kt b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/IterableFirstNotNull.kt new file mode 100644 index 00000000000..b26717d77ac --- /dev/null +++ b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/IterableFirstNotNull.kt @@ -0,0 +1,3 @@ +package dev.inmo.micro_utils.common + +fun Iterable.firstNotNull() = first { it != null }!! diff --git a/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/FlowFirstNotNull.kt b/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/FlowFirstNotNull.kt new file mode 100644 index 00000000000..7626f7757ed --- /dev/null +++ b/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/FlowFirstNotNull.kt @@ -0,0 +1,6 @@ +package dev.inmo.micro_utils.coroutines + +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.first + +suspend fun Flow.firstNotNull() = first { it != null }!! diff --git a/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/SupervisorJob.kt b/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/SupervisorJob.kt new file mode 100644 index 00000000000..df4131ddecd --- /dev/null +++ b/coroutines/src/commonMain/kotlin/dev/inmo/micro_utils/coroutines/SupervisorJob.kt @@ -0,0 +1,17 @@ +package dev.inmo.micro_utils.coroutines + +import kotlinx.coroutines.* +import kotlin.coroutines.CoroutineContext + +fun CoroutineContext.LinkedSupervisorJob( + additionalContext: CoroutineContext? = null +) = SupervisorJob(job).let { if (additionalContext != null) it + additionalContext else it } +fun CoroutineScope.LinkedSupervisorJob( + additionalContext: CoroutineContext? = null +) = coroutineContext.LinkedSupervisorJob(additionalContext) + +fun CoroutineScope.LinkedSupervisorScope( + additionalContext: CoroutineContext? = null +) = CoroutineScope( + coroutineContext + LinkedSupervisorJob(additionalContext) +) diff --git a/gradle.properties b/gradle.properties index 70bf502ed43..c71491698b6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -45,5 +45,5 @@ dokka_version=1.4.32 # Project data group=dev.inmo -version=0.5.7 -android_code_version=48 +version=0.5.8 +android_code_version=49