Skip to content

Migrate internal interfaces to pigeon #613

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ SPEC CHECKSUMS:
path_provider_foundation: 608fcb11be570ce83519b076ab6a1fffe2474f05
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
workmanager_apple: f540d652595dfe5c8b8200c4c85ba622d6fb5c5b
workmanager_apple: f073c5f57af569af5c2dab83ae031bd4396c8a95

PODFILE CHECKSUM: 4225ca2ac155c3e63d4d416fa6b1b890e2563502

Expand Down
4 changes: 4 additions & 0 deletions melos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ scripts:
generate:dart:
run: melos exec -c 1 --depends-on="build_runner" --no-flutter -- "dart run build_runner build --delete-conflicting-outputs"
description: Build all generated files for Dart packages in this project.

generate:pigeon:
run: cd workmanager_platform_interface && dart run pigeon --input pigeons/workmanager_api.dart
description: Generate Pigeon type-safe platform channel code for workmanager_platform_interface.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,25 +1,45 @@
package dev.fluttercommunity.workmanager

import android.content.Context
import android.content.SharedPreferences
import androidx.core.content.edit

object SharedPreferenceHelper {
private const val SHARED_PREFS_FILE_NAME = "flutter_workmanager_plugin"
private const val CALLBACK_DISPATCHER_HANDLE_KEY = "dev.fluttercommunity.workmanager.CALLBACK_DISPATCHER_HANDLE_KEY"

private fun Context.prefs() = getSharedPreferences(SHARED_PREFS_FILE_NAME, Context.MODE_PRIVATE)
class SharedPreferenceHelper(
private val context: Context,
private val dispatcherHandleListener: DispatcherHandleListener

Check failure on line 9 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/SharedPreferenceHelper.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/SharedPreferenceHelper.kt#L9 <standard:trailing-comma-on-declaration-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/SharedPreferenceHelper.kt:9:67: error: Missing trailing comma before ")" (standard:trailing-comma-on-declaration-site)
) {
// Interface to listen for changes in the dispatcher handle.
// This allows the plugin to react when the dispatcher handle is updated.
interface DispatcherHandleListener {
// Called when the dispatcher handle changes.
fun onDispatcherHandleChanged(handle: Long)
}

fun saveCallbackDispatcherHandleKey(
ctx: Context,
callbackHandle: Long,
) {
ctx
.prefs()
.edit()
.putLong(CALLBACK_DISPATCHER_HANDLE_KEY, callbackHandle)
.apply()
companion object {
private const val SHARED_PREFS_FILE_NAME = "flutter_workmanager_plugin"
private const val CALLBACK_DISPATCHER_HANDLE_KEY =
"dev.fluttercommunity.workmanager.CALLBACK_DISPATCHER_HANDLE_KEY"
}

fun getCallbackHandle(ctx: Context): Long = ctx.prefs().getLong(CALLBACK_DISPATCHER_HANDLE_KEY, -1L)
private val preferences: SharedPreferences
get() = context.getSharedPreferences(SHARED_PREFS_FILE_NAME, Context.MODE_PRIVATE)

private val preferenceListener: (sharedPreferences: SharedPreferences, key: String?) -> Unit =
{ preferences, key ->
if (key == CALLBACK_DISPATCHER_HANDLE_KEY) {
dispatcherHandleListener.onDispatcherHandleChanged(
preferences.getLong(CALLBACK_DISPATCHER_HANDLE_KEY, -1L)

Check failure on line 31 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/SharedPreferenceHelper.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/SharedPreferenceHelper.kt#L31 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/SharedPreferenceHelper.kt:31:77: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)
}
}

fun hasCallbackHandle(ctx: Context) = ctx.prefs().contains(CALLBACK_DISPATCHER_HANDLE_KEY)
init {
preferences.registerOnSharedPreferenceChangeListener(preferenceListener)
}

fun saveCallbackDispatcherHandleKey(callbackHandle: Long) {
preferences.edit {
putLong(CALLBACK_DISPATCHER_HANDLE_KEY, callbackHandle)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,258 @@
package dev.fluttercommunity.workmanager

import android.content.Context
import android.os.Build
import androidx.annotation.RequiresApi

Check failure on line 5 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L5 <standard:no-unused-imports>

Unused import
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:5:1: error: Unused import (standard:no-unused-imports)
import androidx.work.BackoffPolicy
import androidx.work.Constraints
import androidx.work.Data
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.ExistingWorkPolicy
import androidx.work.NetworkType
import androidx.work.OneTimeWorkRequest
import androidx.work.OutOfQuotaPolicy
import androidx.work.PeriodicWorkRequest
import androidx.work.WorkManager
import dev.fluttercommunity.workmanager.BackgroundWorker.Companion.DART_TASK_KEY
import dev.fluttercommunity.workmanager.BackgroundWorker.Companion.IS_IN_DEBUG_MODE_KEY
import java.util.concurrent.TimeUnit

// Constants
const val DEFAULT_INITIAL_DELAY_SECONDS = 0L
const val DEFAULT_FLEX_INTERVAL_SECONDS =
PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS / 1000

// Default values
val defaultOneOffExistingWorkPolicy = ExistingWorkPolicy.KEEP
val defaultPeriodExistingWorkPolicy = ExistingPeriodicWorkPolicy.KEEP
val defaultConstraints: Constraints = Constraints.NONE
val defaultOutOfQuotaPolicy: OutOfQuotaPolicy? = null


Check failure on line 31 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L31 <standard:no-consecutive-blank-lines>

Needless blank line(s)
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:31:1: error: Needless blank line(s) (standard:no-consecutive-blank-lines)
// Extension functions to convert Pigeon types to Android WorkManager types
private fun dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.toAndroidWorkPolicy(): ExistingWorkPolicy {

Check failure on line 33 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L33 <standard:function-expression-body>

Function body should be replaced with body expression
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:33:114: error: Function body should be replaced with body expression (standard:function-expression-body)
return when (this) {
dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.APPEND -> ExistingWorkPolicy.APPEND_OR_REPLACE
dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.KEEP -> ExistingWorkPolicy.KEEP
dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.REPLACE -> ExistingWorkPolicy.REPLACE
dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.UPDATE -> ExistingWorkPolicy.APPEND_OR_REPLACE
}
}

private fun dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.toAndroidPeriodicWorkPolicy(): ExistingPeriodicWorkPolicy {

Check failure on line 42 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L42 <standard:function-expression-body>

Function body should be replaced with body expression
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:42:130: error: Function body should be replaced with body expression (standard:function-expression-body)
return when (this) {
dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.APPEND -> ExistingPeriodicWorkPolicy.REPLACE
dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.KEEP -> ExistingPeriodicWorkPolicy.KEEP
dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.REPLACE -> ExistingPeriodicWorkPolicy.REPLACE
dev.fluttercommunity.workmanager.pigeon.ExistingWorkPolicy.UPDATE -> ExistingPeriodicWorkPolicy.UPDATE
}
}

private fun dev.fluttercommunity.workmanager.pigeon.OutOfQuotaPolicy.toAndroidOutOfQuotaPolicy(): OutOfQuotaPolicy {

Check failure on line 51 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L51 <standard:function-expression-body>

Function body should be replaced with body expression
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:51:116: error: Function body should be replaced with body expression (standard:function-expression-body)
return when (this) {
dev.fluttercommunity.workmanager.pigeon.OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST -> OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST

Check failure on line 53 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L53 <standard:max-line-length>

Exceeded max line length (140)
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:53:141: error: Exceeded max line length (140) (standard:max-line-length)
dev.fluttercommunity.workmanager.pigeon.OutOfQuotaPolicy.DROP_WORK_REQUEST -> OutOfQuotaPolicy.DROP_WORK_REQUEST
}
}

private fun dev.fluttercommunity.workmanager.pigeon.Constraints.toAndroidConstraints(): Constraints {
val builder = Constraints.Builder()

networkType?.let { builder.setRequiredNetworkType(it.toAndroidNetworkType()) }
requiresBatteryNotLow?.let { builder.setRequiresBatteryNotLow(it) }
requiresCharging?.let { builder.setRequiresCharging(it) }
requiresDeviceIdle?.let {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
builder.setRequiresDeviceIdle(it)
}
}
requiresStorageNotLow?.let { builder.setRequiresStorageNotLow(it) }

return builder.build()
}

private fun dev.fluttercommunity.workmanager.pigeon.NetworkType.toAndroidNetworkType(): NetworkType {

Check failure on line 74 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L74 <standard:function-expression-body>

Function body should be replaced with body expression
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:74:101: error: Function body should be replaced with body expression (standard:function-expression-body)
return when (this) {
dev.fluttercommunity.workmanager.pigeon.NetworkType.CONNECTED -> NetworkType.CONNECTED
dev.fluttercommunity.workmanager.pigeon.NetworkType.METERED -> NetworkType.METERED
dev.fluttercommunity.workmanager.pigeon.NetworkType.NOT_REQUIRED -> NetworkType.NOT_REQUIRED
dev.fluttercommunity.workmanager.pigeon.NetworkType.NOT_ROAMING -> NetworkType.NOT_ROAMING
dev.fluttercommunity.workmanager.pigeon.NetworkType.UNMETERED -> NetworkType.UNMETERED
dev.fluttercommunity.workmanager.pigeon.NetworkType.TEMPORARILY_UNMETERED -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
NetworkType.TEMPORARILY_UNMETERED
} else {
NetworkType.UNMETERED
}
}
}
}


Check failure on line 91 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L91 <standard:no-consecutive-blank-lines>

Needless blank line(s)
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:91:1: error: Needless blank line(s) (standard:no-consecutive-blank-lines)
private fun dev.fluttercommunity.workmanager.pigeon.BackoffPolicy.toAndroidBackoffPolicy(): BackoffPolicy {

Check failure on line 92 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L92 <standard:function-expression-body>

Function body should be replaced with body expression
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:92:107: error: Function body should be replaced with body expression (standard:function-expression-body)
return when (this) {
dev.fluttercommunity.workmanager.pigeon.BackoffPolicy.EXPONENTIAL -> BackoffPolicy.EXPONENTIAL
dev.fluttercommunity.workmanager.pigeon.BackoffPolicy.LINEAR -> BackoffPolicy.LINEAR
}
}

// Helper function to filter out null keys from Map<String?, Any?>
private fun Map<String?, Any?>.filterNotNullKeys(): Map<String, Any> {

Check failure on line 100 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L100 <standard:function-expression-body>

Function body should be replaced with body expression
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:100:70: error: Function body should be replaced with body expression (standard:function-expression-body)
return this.mapNotNull { (key, value) ->

Check failure on line 101 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L101 <standard:chain-method-continuation>

Expected newline before '.'
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:101:16: error: Expected newline before '.' (standard:chain-method-continuation)
if (key != null && value != null) key to value else null
}.toMap()
}

class WorkManagerWrapper(val context: Context) {

Check failure on line 106 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L106 <standard:class-signature>

Newline expected after opening parenthesis
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:106:26: error: Newline expected after opening parenthesis (standard:class-signature)

Check failure on line 106 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L106 <standard:class-signature>

Newline expected before closing parenthesis
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:106:46: error: Newline expected before closing parenthesis (standard:class-signature)
private val workManager = WorkManager.getInstance(context)

fun enqueueOneOffTask(
request: dev.fluttercommunity.workmanager.pigeon.OneOffTaskRequest,
isInDebugMode: Boolean = false,
) {
try {
val oneOffTaskRequest =
OneTimeWorkRequest
.Builder(BackgroundWorker::class.java)
.setInputData(
buildTaskInputData(
request.taskName,
isInDebugMode,
request.inputData?.filterNotNullKeys()

Check failure on line 121 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L121 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:121:67: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)

Check failure on line 122 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L122 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:122:26: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)
.setInitialDelay(

Check failure on line 124 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L124 <standard:chain-method-continuation>

Unexpected newline before '.'
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:124:21: error: Unexpected newline before '.' (standard:chain-method-continuation)
request.initialDelaySeconds ?: DEFAULT_INITIAL_DELAY_SECONDS,
TimeUnit.SECONDS

Check failure on line 126 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L126 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:126:41: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)
.setConstraints(

Check failure on line 128 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L128 <standard:chain-method-continuation>

Unexpected newline before '.'
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:128:21: error: Unexpected newline before '.' (standard:chain-method-continuation)
request.constraints?.toAndroidConstraints() ?: defaultConstraints

Check failure on line 129 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L129 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:129:90: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)
.apply {

Check failure on line 131 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L131 <standard:chain-method-continuation>

Unexpected newline before '.'
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:131:21: error: Unexpected newline before '.' (standard:chain-method-continuation)
request.backoffPolicy?.let { backoffConfig ->
if (backoffConfig.backoffPolicy != null && backoffConfig.backoffDelayMillis != null) {
setBackoffCriteria(
backoffConfig.backoffPolicy.toAndroidBackoffPolicy(),
backoffConfig.backoffDelayMillis.toLong(),
TimeUnit.MILLISECONDS,
)
}
}
}.apply {
request.tag?.let(::addTag)
request.outOfQuotaPolicy?.toAndroidOutOfQuotaPolicy()?.let(::setExpedited)
}.build()
workManager.enqueueUniqueWork(
request.uniqueName,
request.existingWorkPolicy?.toAndroidWorkPolicy()
?: defaultOneOffExistingWorkPolicy,
oneOffTaskRequest

Check failure on line 149 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L149 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:149:34: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)
} catch (e: Exception) {
throw e
}
}

fun enqueuePeriodicTask(
request: dev.fluttercommunity.workmanager.pigeon.PeriodicTaskRequest,
isInDebugMode: Boolean = false,
) {
val periodicTaskRequest =
PeriodicWorkRequest
.Builder(
BackgroundWorker::class.java,
request.frequencySeconds,
TimeUnit.SECONDS,
request.flexIntervalSeconds ?: DEFAULT_FLEX_INTERVAL_SECONDS,
TimeUnit.SECONDS,
).setInputData(
buildTaskInputData(
request.taskName,
isInDebugMode,
request.inputData?.filterNotNullKeys()

Check failure on line 172 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L172 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:172:63: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)

Check failure on line 173 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L173 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:173:22: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)
.setInitialDelay(

Check failure on line 175 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L175 <standard:chain-method-continuation>

Unexpected newline before '.'
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:175:17: error: Unexpected newline before '.' (standard:chain-method-continuation)
request.initialDelaySeconds ?: DEFAULT_INITIAL_DELAY_SECONDS,
TimeUnit.SECONDS

Check failure on line 177 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L177 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:177:37: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)
.setConstraints(request.constraints?.toAndroidConstraints() ?: defaultConstraints)

Check failure on line 179 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L179 <standard:chain-method-continuation>

Unexpected newline before '.'
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:179:17: error: Unexpected newline before '.' (standard:chain-method-continuation)
.apply {
request.backoffPolicy?.let { backoffConfig ->
if (backoffConfig.backoffPolicy != null && backoffConfig.backoffDelayMillis != null) {
setBackoffCriteria(
backoffConfig.backoffPolicy.toAndroidBackoffPolicy(),
backoffConfig.backoffDelayMillis.toLong(),
TimeUnit.MILLISECONDS,
)
}
}
}.apply {
request.tag?.let(::addTag)
// Note: outOfQuotaPolicy is not supported for periodic tasks
}.build()
workManager.enqueueUniquePeriodicWork(
request.uniqueName,
request.existingWorkPolicy?.toAndroidPeriodicWorkPolicy()
?: defaultPeriodExistingWorkPolicy,
periodicTaskRequest

Check failure on line 198 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L198 <standard:trailing-comma-on-call-site>

Missing trailing comma before ")"
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:198:32: error: Missing trailing comma before ")" (standard:trailing-comma-on-call-site)
)
}

private fun buildTaskInputData(
dartTask: String,
isInDebugMode: Boolean,
payload: Map<String, Any>?,
): Data {
val builder =
Data
.Builder()
.putString(DART_TASK_KEY, dartTask)
.putBoolean(IS_IN_DEBUG_MODE_KEY, isInDebugMode)

// Add payload data if provided
payload?.forEach { (key, value) ->
when (value) {
is String -> builder.putString("payload_$key", value)
is Boolean -> builder.putBoolean("payload_$key", value)
is Int -> builder.putInt("payload_$key", value)
is Long -> builder.putLong("payload_$key", value)
is Float -> builder.putFloat("payload_$key", value)
is Double -> builder.putDouble("payload_$key", value)
is Array<*> ->
builder.putStringArray(
"payload_$key",
value.filterIsInstance<String>().toTypedArray(),
)

is List<*> ->
builder.putStringArray(
"payload_$key",
value.filterIsInstance<String>().toTypedArray(),
)

is ByteArray -> builder.putByteArray("payload_$key", value)

else -> {
throw IllegalArgumentException(
"Unsupported payload type for key '$key': ${value::class.java.simpleName}. " +
"Consider converting it to a supported type.",

Check failure on line 239 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L239 <standard:indent>

Unexpected indentation (32) (should be 28)
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:239:1: error: Unexpected indentation (32) (should be 28) (standard:indent)
)
}
}
}

return builder.build()
}

fun getWorkInfoByUniqueName(uniqueWorkName: String) =

Check failure on line 248 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L248 <standard:function-signature>

First line of body expression fits on same line as function signature
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:248:58: error: First line of body expression fits on same line as function signature (standard:function-signature)
workManager.getWorkInfosForUniqueWork(uniqueWorkName)

fun cancelByUniqueName(uniqueWorkName: String) =

Check failure on line 251 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L251 <standard:function-signature>

First line of body expression fits on same line as function signature
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:251:53: error: First line of body expression fits on same line as function signature (standard:function-signature)
workManager.cancelUniqueWork(uniqueWorkName)

fun cancelByTag(tag: String) =

Check failure on line 254 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L254 <standard:function-signature>

First line of body expression fits on same line as function signature
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:254:35: error: First line of body expression fits on same line as function signature (standard:function-signature)
workManager.cancelAllWorkByTag(tag)

fun cancelAll() = workManager.cancelAllWork()
}

Check failure on line 258 in workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt

View workflow job for this annotation

GitHub Actions / ktlint

[ktlint] workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt#L258 <standard:final-newline>

File must end with a newline (\n)
Raw output
workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkManagerUtils.kt:258:1: error: File must end with a newline (\n) (standard:final-newline)
Loading
Loading