Nocturnal Practitioners of Magic

    @cuvent/react-native-better-tus-client
    TypeScript icon, indicating that this package has built-in type declarations

    0.5.1 • Public • Published

    react-native-better-tus-client

    A (better & up-to-date) tus client for react-native with background upload support

    Installation

    npm i --save @cuvent/react-native-better-tus-client

    Setup:

    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.

    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.

    Modify the auto-resume behavior / max uploads at a time in parallel mode

    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();
      }
    }
    

    Usage

    // TODO

    Contributing

    See the contributing guide to learn how to contribute to the repository and the development workflow.

    License

    MIT

    Install

    npm i @cuvent/react-native-better-tus-client

    DownloadsWeekly Downloads

    22

    Version

    0.5.1

    License

    MIT

    Unpacked Size

    55.7 kB

    Total Files

    32

    Last publish

    Collaborators

    • hannojg
    • mrousavy
    • cuvent-admin