mirror of
https://github.com/InsanusMokrassar/krontab.git
synced 2024-09-27 21:16:15 +00:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
4651a290d0 | |||
30df50c192 | |||
05c6d74f7b | |||
7269833c6f | |||
6e97a365e5 | |||
0c497f5dcb | |||
552ec14d66 | |||
3845f6e0c5 | |||
3bd4a7a245 | |||
f90d8d03d9 | |||
36671cb379 | |||
68be768763 | |||
9546eb5aec |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
.idea
|
||||
.kotlin
|
||||
out/*
|
||||
*.iml
|
||||
target
|
||||
|
20
CHANGELOG.md
20
CHANGELOG.md
@ -1,5 +1,25 @@
|
||||
# Changelog
|
||||
|
||||
## 2.5.0
|
||||
|
||||
* `Version`:
|
||||
* `Kotlin`: `2.0.20`
|
||||
* `Coroutines`: `1.9.0`
|
||||
* `Serialization`: `1.7.3`
|
||||
|
||||
## 2.4.0
|
||||
|
||||
* `Version`:
|
||||
* `Kotlin`: `2.0.10`
|
||||
* `Coroutines`: `1.8.1`
|
||||
* `Serialization`: `1.7.1`
|
||||
* `Klock`: `5.4.0`
|
||||
* `AndroidXWork`: `2.9.1`
|
||||
|
||||
## 2.3.0
|
||||
|
||||
* `doWhile` now will guarantee that it will not call `doOnce` more than once for time
|
||||
|
||||
## 2.2.9
|
||||
|
||||
* `Version`:
|
||||
|
@ -9,9 +9,9 @@ android.useAndroidX=true
|
||||
android.enableJetifier=false
|
||||
|
||||
|
||||
kotlin_version=1.9.23
|
||||
kotlin_coroutines_version=1.8.0
|
||||
kotlin_serialization_version=1.6.3
|
||||
kotlin_version=2.0.20
|
||||
kotlin_coroutines_version=1.9.0
|
||||
kotlin_serialization_version=1.7.3
|
||||
|
||||
dokka_version=1.9.20
|
||||
|
||||
@ -23,18 +23,18 @@ github_release_plugin_version=2.5.2
|
||||
|
||||
## Android
|
||||
|
||||
android_gradle_version=8.1.4
|
||||
android_gradle_version=8.2.2
|
||||
android_minSdkVersion=21
|
||||
android_compileSdkVersion=34
|
||||
android_buildToolsVersion=34.0.0
|
||||
android_compileSdkVersion=35
|
||||
android_buildToolsVersion=35.0.0
|
||||
dexcount_version=4.0.0
|
||||
junit_version=4.12
|
||||
test_ext_junit_version=1.1.3
|
||||
espresso_core=3.4.0
|
||||
|
||||
androidx_work_version=2.9.0
|
||||
androidx_work_version=2.9.1
|
||||
|
||||
## Common
|
||||
|
||||
version=2.2.9
|
||||
android_code_version=39
|
||||
version=2.5.0
|
||||
android_code_version=42
|
||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
||||
|
@ -139,10 +139,14 @@ abstract class KronSchedulerWork(
|
||||
}
|
||||
throw e
|
||||
}
|
||||
when (result) {
|
||||
is Result.Failure -> if (prolongOnFailure) prolong()
|
||||
is Result.Success -> if (prolongOnSuccess) prolong()
|
||||
}
|
||||
result.checkResults(
|
||||
onFailure = {
|
||||
if (prolongOnFailure) prolong()
|
||||
},
|
||||
onSuccess = {
|
||||
if (prolongOnSuccess) prolong()
|
||||
}
|
||||
)
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
15
src/androidMain/kotlin/ResultChecker.kt
Normal file
15
src/androidMain/kotlin/ResultChecker.kt
Normal file
@ -0,0 +1,15 @@
|
||||
package dev.inmo.krontab
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.work.ListenableWorker
|
||||
|
||||
@SuppressLint("RestrictedApi")
|
||||
internal inline fun ListenableWorker.Result.checkResults(
|
||||
onFailure: () -> Unit,
|
||||
onSuccess: () -> Unit
|
||||
) {
|
||||
when (this) {
|
||||
is ListenableWorker.Result.Failure -> onFailure()
|
||||
is ListenableWorker.Result.Success -> onSuccess()
|
||||
}
|
||||
}
|
@ -71,9 +71,18 @@ suspend inline fun <T> doOnceTz(
|
||||
* Will execute [block] while it will return true as a result of its calculation
|
||||
*/
|
||||
suspend inline fun KronScheduler.doWhile(block: (DateTime) -> Boolean) {
|
||||
var latest: DateTime? = null
|
||||
do {
|
||||
delay(1L)
|
||||
} while (doOnce(block))
|
||||
val result = doOnce {
|
||||
if (latest != it) {
|
||||
latest = it
|
||||
block(it)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
} while (result == null || result)
|
||||
}
|
||||
/**
|
||||
* Will execute [block] while it will return true as a result of its calculation
|
||||
@ -85,9 +94,18 @@ suspend inline fun KronScheduler.doWhileLocal(block: (DateTime) -> Boolean) = do
|
||||
* Will execute [block] while it will return true as a result of its calculation
|
||||
*/
|
||||
suspend inline fun KronScheduler.doWhileTz(noinline block: suspend (DateTimeTz) -> Boolean) {
|
||||
var latest: DateTimeTz? = null
|
||||
do {
|
||||
delay(1L)
|
||||
} while (doOnceTz(block))
|
||||
val result = doOnceTz {
|
||||
if (latest != it) {
|
||||
latest = it
|
||||
block(it)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
} while (result == null || result)
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user