diff --git a/CHANGELOG.md b/CHANGELOG.md index 54d6185..66aaf56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2.6.0 + +* Fix of `doOnceTz` behaviour: now it will use local time as utc time to get next waking up time + ## 2.5.1 * Add cleaning up of incoming template, which must remove all malformed parts from string template (fix of [#126](https://github.com/InsanusMokrassar/krontab/issues/126)) diff --git a/gradle.properties b/gradle.properties index f9510e3..2e6ae2d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -36,5 +36,5 @@ androidx_work_version=2.10.0 ## Common -version=2.5.1 -android_code_version=43 +version=2.6.0 +android_code_version=44 diff --git a/src/commonMain/kotlin/Executes.kt b/src/commonMain/kotlin/Executes.kt index 90a31ba..751222d 100644 --- a/src/commonMain/kotlin/Executes.kt +++ b/src/commonMain/kotlin/Executes.kt @@ -35,6 +35,8 @@ suspend inline fun KronScheduler.doOnceLocal(block: (DateTime) -> T): T = do /** * Execute [block] once at the [KronScheduler.next] time and return result of [block] calculation. * + * WARNING!!! This method will use local time instead of utc + * * WARNING!!! If you want to launch it in parallel, you must do this explicitly. * * WARNING!!! In case if [KronScheduler.next] of [this] instance will return null, [block] will be called immediatelly @@ -42,7 +44,7 @@ suspend inline fun KronScheduler.doOnceLocal(block: (DateTime) -> T): T = do suspend inline fun KronScheduler.doOnceTz(noinline block: suspend (DateTimeTz) -> T): T { val time = when (this) { is KronSchedulerTz -> nextOrNowWithOffset() - else -> nextOrNow().local + else -> nextTimeZoned() ?: DateTimeTz.nowLocal() } delay((time - DateTimeTz.nowLocal()).millisecondsLong) return block(time)