A (better & up-to-date) tus client for react-native with background upload support
npm i --save @cuvent/react-native-better-tus-client
Both on android and iOS the default concurrency mode is in-sequence, which means that one upload will be processed after each other. This behavior can be changed on android.
To change the concurrency mode in android change the config from e.g. you MainApplication's onCreate
:
@Override
public void onCreate() {
super.onCreate();
BetterTusClientConfig.INSTANCE.getConfig().setConcurrencyMode(ConcurrencyMode.PARALLEL);
// ...
}
Two modes are available:
ConcurrencyMode.PARALLEL
executes all uploads in parallel. Good when you only process a few uploads.ConcurrencyMode.SEQUENCE
(Default) executes one upload after another. Good when you have a lot of uploads and want to make sure that each upload gets processed without timeouts or similar.
These changes are only needed if you want to change the auto-resume and concurrency behavior of the uploading queue
When you apply these changes the queue won't automatically resume on app start. You need to call
resumeAll
to continue with the uploading of prior uploads.
Add the to your AndroidManifest under the Application
tag. Note: You probably need to add the tools
namespace to your manifest definition:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
xmlns:tools="http://schemas.android.com/tools">
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
This enables on-demand initialization of the worker manager, which improves the app startup time + gives the possibility to configure the worker manager on our own.
In your Application class implement the Configuration.Provider
interface, like so:
import androidx.work.Configuration;
import java.util.concurrent.Executors;
class MainApplication extends Application implements Configuration.Provider {
//...
@NonNull
@Override
public Configuration getWorkManagerConfiguration() {
return new Configuration.Builder()
.setExecutor(Executors.newFixedThreadPool(2)) // you can set here the number of concurrent worker (= uploads per time)
//.setExecutor(Executors.newSingleThreadExecutor()) // use this to have a sequential upload queue --> use concurrencyMode SEQUENCE for this!
.build();
}
}
// TODO
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT