diff --git a/CHANGELOG.md b/CHANGELOG.md index b4dff22..e1b9da8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 2.1.1 + +* `asFlowWithoutDelays` and `asTzFlowWithoutDelays` will have nullable `since` parameters with default to `null` + to avoid any inconsistency of `Flow` idiom. +
+ About the reason of changes + Cold flows should not contain some state by default. So, it was not right to save some `DateTime`/`DateTimeTz` + by default. Now it will not use some external state unless developers will set it manually +
+ ## 2.1.0 * Versions diff --git a/gradle.properties b/gradle.properties index 56fa1b8..c635ba5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -36,5 +36,5 @@ androidx_work_version=2.8.1 ## Common -version=2.1.0 -android_code_version=27 +version=2.1.1 +android_code_version=28 diff --git a/src/commonMain/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt b/src/commonMain/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt index 55971d2..a3bf055 100644 --- a/src/commonMain/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/utils/SchedulerFlow.kt @@ -18,10 +18,11 @@ import kotlinx.coroutines.isActive * Will emit all the [KronScheduler.next] as soon as possible. In case [KronScheduler.next] return null, flow will * be completed * - * @param since Will be used as the first parameter for [KronScheduler.next] fun + * @param since Will be used as the first parameter for [KronScheduler.next] fun. If passed null, `flow` + * will always start since the moment of collecting start */ -fun KronScheduler.asTzFlowWithoutDelays(since: DateTimeTz = DateTime.nowLocal()): Flow = flow { - var previous = since +fun KronScheduler.asTzFlowWithoutDelays(since: DateTimeTz? = null): Flow = flow { + var previous = since ?: DateTime.nowLocal() while (currentCoroutineContext().isActive) { val next = next(previous) ?: break emit(next) @@ -57,10 +58,11 @@ fun KronScheduler.asTzFlow(): Flow = asTzFlowWithDelays() * Will emit all the [KronScheduler.next] as soon as possible. In case [KronScheduler.next] return null, flow will * be completed * - * @param since Will be used as the first parameter for [KronScheduler.next] fun + * @param since Will be used as the first parameter for [KronScheduler.next] fun. If passed null, `flow` + * will always start since the moment of collecting start */ -fun KronScheduler.asFlowWithoutDelays(since: DateTime = DateTime.now()): Flow = flow { - var previous = since +fun KronScheduler.asFlowWithoutDelays(since: DateTime? = null): Flow = flow { + var previous = since ?: DateTime.now() while (currentCoroutineContext().isActive) { val next = next(previous) ?: break emit(next)