|
@@ -18,17 +18,18 @@ import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.text.font.FontFamily
|
|
import androidx.compose.ui.text.font.FontFamily
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.util.fastForEach
|
|
import androidx.compose.ui.util.fastForEach
|
|
-import androidx.lifecycle.asFlow
|
|
|
|
import androidx.work.WorkInfo
|
|
import androidx.work.WorkInfo
|
|
import androidx.work.WorkQuery
|
|
import androidx.work.WorkQuery
|
|
import cafe.adriel.voyager.core.model.ScreenModel
|
|
import cafe.adriel.voyager.core.model.ScreenModel
|
|
import cafe.adriel.voyager.core.model.rememberScreenModel
|
|
import cafe.adriel.voyager.core.model.rememberScreenModel
|
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
|
import cafe.adriel.voyager.navigator.currentOrThrow
|
|
import cafe.adriel.voyager.navigator.currentOrThrow
|
|
|
|
+import eu.kanade.domain.ui.UiPreferences
|
|
import eu.kanade.presentation.components.AppBar
|
|
import eu.kanade.presentation.components.AppBar
|
|
import eu.kanade.presentation.components.AppBarActions
|
|
import eu.kanade.presentation.components.AppBarActions
|
|
import eu.kanade.presentation.util.Screen
|
|
import eu.kanade.presentation.util.Screen
|
|
import eu.kanade.presentation.util.ioCoroutineScope
|
|
import eu.kanade.presentation.util.ioCoroutineScope
|
|
|
|
+import eu.kanade.tachiyomi.util.lang.toDateTimestampString
|
|
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
|
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
|
import eu.kanade.tachiyomi.util.system.workManager
|
|
import eu.kanade.tachiyomi.util.system.workManager
|
|
import kotlinx.collections.immutable.persistentListOf
|
|
import kotlinx.collections.immutable.persistentListOf
|
|
@@ -39,6 +40,9 @@ import tachiyomi.i18n.MR
|
|
import tachiyomi.presentation.core.components.material.Scaffold
|
|
import tachiyomi.presentation.core.components.material.Scaffold
|
|
import tachiyomi.presentation.core.i18n.stringResource
|
|
import tachiyomi.presentation.core.i18n.stringResource
|
|
import tachiyomi.presentation.core.util.plus
|
|
import tachiyomi.presentation.core.util.plus
|
|
|
|
+import uy.kohesive.injekt.Injekt
|
|
|
|
+import uy.kohesive.injekt.api.get
|
|
|
|
+import java.util.Date
|
|
|
|
|
|
class WorkerInfoScreen : Screen() {
|
|
class WorkerInfoScreen : Screen() {
|
|
|
|
|
|
@@ -116,22 +120,19 @@ class WorkerInfoScreen : Screen() {
|
|
private val workManager = context.workManager
|
|
private val workManager = context.workManager
|
|
|
|
|
|
val finished = workManager
|
|
val finished = workManager
|
|
- .getWorkInfosLiveData(
|
|
|
|
|
|
+ .getWorkInfosFlow(
|
|
WorkQuery.fromStates(WorkInfo.State.SUCCEEDED, WorkInfo.State.FAILED, WorkInfo.State.CANCELLED),
|
|
WorkQuery.fromStates(WorkInfo.State.SUCCEEDED, WorkInfo.State.FAILED, WorkInfo.State.CANCELLED),
|
|
)
|
|
)
|
|
- .asFlow()
|
|
|
|
.map(::constructString)
|
|
.map(::constructString)
|
|
.stateIn(ioCoroutineScope, SharingStarted.WhileSubscribed(), "")
|
|
.stateIn(ioCoroutineScope, SharingStarted.WhileSubscribed(), "")
|
|
|
|
|
|
val running = workManager
|
|
val running = workManager
|
|
- .getWorkInfosLiveData(WorkQuery.fromStates(WorkInfo.State.RUNNING))
|
|
|
|
- .asFlow()
|
|
|
|
|
|
+ .getWorkInfosFlow(WorkQuery.fromStates(WorkInfo.State.RUNNING))
|
|
.map(::constructString)
|
|
.map(::constructString)
|
|
.stateIn(ioCoroutineScope, SharingStarted.WhileSubscribed(), "")
|
|
.stateIn(ioCoroutineScope, SharingStarted.WhileSubscribed(), "")
|
|
|
|
|
|
val enqueued = workManager
|
|
val enqueued = workManager
|
|
- .getWorkInfosLiveData(WorkQuery.fromStates(WorkInfo.State.ENQUEUED))
|
|
|
|
- .asFlow()
|
|
|
|
|
|
+ .getWorkInfosFlow(WorkQuery.fromStates(WorkInfo.State.ENQUEUED))
|
|
.map(::constructString)
|
|
.map(::constructString)
|
|
.stateIn(ioCoroutineScope, SharingStarted.WhileSubscribed(), "")
|
|
.stateIn(ioCoroutineScope, SharingStarted.WhileSubscribed(), "")
|
|
|
|
|
|
@@ -146,6 +147,16 @@ class WorkerInfoScreen : Screen() {
|
|
appendLine(" - $it")
|
|
appendLine(" - $it")
|
|
}
|
|
}
|
|
appendLine("State: ${workInfo.state}")
|
|
appendLine("State: ${workInfo.state}")
|
|
|
|
+ if (workInfo.state == WorkInfo.State.ENQUEUED) {
|
|
|
|
+ appendLine(
|
|
|
|
+ "Next scheduled run: ${Date(workInfo.nextScheduleTimeMillis).toDateTimestampString(
|
|
|
|
+ UiPreferences.dateFormat(
|
|
|
|
+ Injekt.get<UiPreferences>().dateFormat().get(),
|
|
|
|
+ ),
|
|
|
|
+ )}",
|
|
|
|
+ )
|
|
|
|
+ appendLine("Attempt #${workInfo.runAttemptCount + 1}")
|
|
|
|
+ }
|
|
appendLine()
|
|
appendLine()
|
|
}
|
|
}
|
|
}
|
|
}
|