/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ package com.facebook.react.jstasks import com.facebook.react.bridge.WritableMap /** * Class that holds the various parameters needed to start a JS task. * * @property taskKey the key for the JS task to execute. This is the same key that you call * `AppRegistry.registerTask` with in JS. * @property data a map of parameters passed to the JS task executor. * @property timeout the amount of time (in ms) after which the React instance should be terminated * regardless of whether the task has completed or not. This is meant as a safeguard against * accidentally keeping the device awake for long periods of time because JS crashed or some * request timed out. A value of 0 means no timeout (should only be used for long-running tasks * such as music playback). * @property isAllowedInForeground whether to allow this task to run while the app is in the * foreground (i.e. there is a host in resumed mode for the current ReactContext). Only set this * to true if you really need it. Note that tasks run in the same JS thread as UI code, so doing * expensive operations would degrade user experience. * @property retryPolicy the number of times & delays the task should be retried on error. */ public class HeadlessJsTaskConfig @JvmOverloads constructor( public val taskKey: String, public val data: WritableMap, public val timeout: Long = 0, public val isAllowedInForeground: Boolean = false, public val retryPolicy: HeadlessJsTaskRetryPolicy? = NoRetryPolicy.INSTANCE, ) { /** * Copy constructor to create a HeadlessJsTaskConfig from an existing one. Equivalent to calling * [HeadlessJsTaskConfig] with `false` for `allowedInBackground`. */ public constructor( source: HeadlessJsTaskConfig ) : this( source.taskKey, source.data.copy(), source.timeout, source.isAllowedInForeground, source.retryPolicy?.copy(), ) }