    1. Silent Upload is implemented with react-native-background-actions
    2. DSP-163297_SilentUpload - this branch only contains Silent Upload support for [ANDROID]
    3. Silent Upload works both for ONLINE and OFFLINE.
    4. By default the uploading is start in the background itself, I found it more effiecient for user
    as it won't try to kill the uploading once the users closes the app.

[FILES]

    1. BackgroundTasks.js
    - contains wrappers written on top of BackgroundService methods.
    2. BackgroundTasksUtils.js
    - contains notification related methods for background service
    3. NotificationsConfig.js
    - contains default notifications content written for specific conditions
    - for ex. if user is not connected to internet user will notified with similar message in the notification
    4. SilentUploadUtils.js
    - contains the required methods to do the background job for both ONLINE and OFFLINE
    - contains method such as collection of data to upload, progress check, reupload, failure handling,success handling,
        calling document last
    5. BackgroundDocumentLast.js
    - contains methods to call document last and submit pi.

Note - BackgroundUploadFile and BackgroundUploadFile2W both uses UploadFile.js

[ONLINE FLOW]

    1. 4W
        - While doing the flow captured RCB images will upload normally
          the background upload will start once user finishes video recording and uploads it
          video won't upload normally, the BackgroundUploadFile(uri,DocumentImageName) called in Camera.js
          will call a UploadFile on the uri and imagename provided.

        - Just after calling the upload file the process will start a function which uploads the failed documents if the are any
          and just after that it calls a 1 second interval that checks for both uploaded and failed documents
          if everthing uploaded it calls document last otherwise it will retry 2 more times.
          if that fails user will be notified

    2. 2W/CV
        - While doing the flow captured images will upload normally
          the background upload will start once the user finishes video recording and uploads it
          video won't upload normally, the BackgroundUploadFile2W(uri, DocumentImageName) called in PreviewImage.js

          before calling the BackgroundUploadFile there is one flag we have to maintain for 2W
          that is PI2WOnProgress, to check that if user has reached progress.js
          once the flag is true thats when the other failed documents can be reuploaded.

          - Just after calling the BackgroundUploadFile2W the process will start a function which uploads the failed documents if the are any and just after that it calls a 1 second interval that checks for both uploaded and failed documents
          if everthing uploaded it calls document last otherwise it will retry 2 more times.
          if that fails user will be notified

[OFFLINE FLOW]

    - Once user finishes doing the offline flow reaches to either VideoPIProgress or WithQuote, a modal will appear on press of button named close the app or once the user kills the app or put it into background
    - A function will be called which collects the data to be uploaded starts a 1 second interval that checks for both uploaded and failed documents if everthing uploaded it calls document last otherwise it will retry 2 more times. if that fails user will be notified
