Use react-native-fs instead

This commit is contained in:
Ivan Malison 2024-02-04 23:58:07 -07:00
parent 1cfc6a9ae3
commit f44a1597c0
3 changed files with 44 additions and 21 deletions

View File

@ -3,10 +3,7 @@ import { useIsFocused } from "@react-navigation/native";
import * as gql from "railbird-gql"; import * as gql from "railbird-gql";
import React, { useCallback, useEffect, useRef, useState } from "react"; import React, { useCallback, useEffect, useRef, useState } from "react";
import { Button, StyleSheet, Text, View } from "react-native"; import { Button, StyleSheet, Text, View } from "react-native";
import Upload, { import * as RNFS from "react-native-fs";
CompletedData,
ErrorData,
} from "react-native-background-upload";
import { import {
Camera, Camera,
CameraRuntimeError, CameraRuntimeError,
@ -40,19 +37,29 @@ class StreamUploadManager<TCacheShape> {
async uploadChunk({ filepath, index }: { filepath: string; index: number }) { async uploadChunk({ filepath, index }: { filepath: string; index: number }) {
const uploadUrl = await this.getUploadLink(index); const uploadUrl = await this.getUploadLink(index);
const uploadId = await Upload.startUpload({ const uploadRequest = RNFS.uploadFiles({
url: uploadUrl, toUrl: uploadUrl,
path: filepath, files: [{ filepath: filepath }],
method: "PUT", method: "PUT",
}).catch((err) => console.log("Upload error!", err)); headers: {
// @ts-ignore "Content-Type": "application/octet-stream",
Upload.addListener("error", uploadId, (data: ErrorData) => { },
console.log(`Error on: ${data}% ${index}%`); begin: (res) => {
}); console.log("Start upload", res);
// @ts-ignore },
Upload.addListener("completed", uploadId, (data: CompletedData) => { progress: (res) => {
console.log(`Chunk ${index} completed ${JSON.stringify(data)}`); console.log("Uploading", res);
},
}); });
console.log(JSON.stringify(uploadRequest));
const result = await uploadRequest.promise.catch((err) =>
console.log("Upload error!", err),
);
if (response.statusCode == 200) {
console.log(`${filepath} Uploaded`);
} else {
console.log("SERVER ERROR");
}
} }
async getUploadLink(chunkId: number): Promise<string> { async getUploadLink(chunkId: number): Promise<string> {

View File

@ -49,9 +49,9 @@
"railbird-gql": "git+https://dev.railbird.ai/railbird/railbird-gql.git#db82f66c5d3600d90f09c813f71287e176dc078b", "railbird-gql": "git+https://dev.railbird.ai/railbird/railbird-gql.git#db82f66c5d3600d90f09c813f71287e176dc078b",
"react": "18.2.0", "react": "18.2.0",
"react-native": "0.72.6", "react-native": "0.72.6",
"react-native-background-upload": "git+https://github.com/kashaudhan/react-native-background-upload#c2b5105119242b3ab612ec2b485d510533bb6a37",
"react-native-dotenv": "^3.4.9", "react-native-dotenv": "^3.4.9",
"react-native-dropdown-picker": "^5.4.6", "react-native-dropdown-picker": "^5.4.6",
"react-native-fs": "^2.20.0",
"react-native-reanimated": "^3.6.2", "react-native-reanimated": "^3.6.2",
"react-native-safe-area-context": "^4.8.2", "react-native-safe-area-context": "^4.8.2",
"react-native-screens": "~3.22.0", "react-native-screens": "~3.22.0",
@ -75,7 +75,9 @@
}, },
"private": true, "private": true,
"prettier": { "prettier": {
"plugins": ["prettier-plugin-organize-imports"] "plugins": [
"prettier-plugin-organize-imports"
]
}, },
"resolutions": { "resolutions": {
"@babel/core": "^7.20.2", "@babel/core": "^7.20.2",

View File

@ -4146,6 +4146,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base-64@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb"
integrity sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==
base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1" version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@ -9717,10 +9722,6 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
"react-native-background-upload@git+https://github.com/kashaudhan/react-native-background-upload#c2b5105119242b3ab612ec2b485d510533bb6a37":
version "6.6.0"
resolved "git+https://github.com/kashaudhan/react-native-background-upload#c2b5105119242b3ab612ec2b485d510533bb6a37"
react-native-dotenv@^3.4.9: react-native-dotenv@^3.4.9:
version "3.4.9" version "3.4.9"
resolved "https://registry.yarnpkg.com/react-native-dotenv/-/react-native-dotenv-3.4.9.tgz#621c5b0c1d0c5c7f569bfe5a1d804bec7885c010" resolved "https://registry.yarnpkg.com/react-native-dotenv/-/react-native-dotenv-3.4.9.tgz#621c5b0c1d0c5c7f569bfe5a1d804bec7885c010"
@ -9733,6 +9734,14 @@ react-native-dropdown-picker@^5.4.6:
resolved "https://registry.yarnpkg.com/react-native-dropdown-picker/-/react-native-dropdown-picker-5.4.6.tgz#3736fc468de4a295e4df8d1f65ed2eadaf9b445f" resolved "https://registry.yarnpkg.com/react-native-dropdown-picker/-/react-native-dropdown-picker-5.4.6.tgz#3736fc468de4a295e4df8d1f65ed2eadaf9b445f"
integrity sha512-T1XBHbE++M6aRU3wFYw3MvcOuabhWZ29RK/Ivdls2r1ZkZ62iEBZknLUPeVLMX3x6iUxj4Zgr3X2DGlEGXeHsA== integrity sha512-T1XBHbE++M6aRU3wFYw3MvcOuabhWZ29RK/Ivdls2r1ZkZ62iEBZknLUPeVLMX3x6iUxj4Zgr3X2DGlEGXeHsA==
react-native-fs@^2.20.0:
version "2.20.0"
resolved "https://registry.yarnpkg.com/react-native-fs/-/react-native-fs-2.20.0.tgz#05a9362b473bfc0910772c0acbb73a78dbc810f6"
integrity sha512-VkTBzs7fIDUiy/XajOSNk0XazFE9l+QlMAce7lGuebZcag5CnjszB+u4BdqzwaQOdcYb5wsJIsqq4kxInIRpJQ==
dependencies:
base-64 "^0.1.0"
utf8 "^3.0.0"
react-native-reanimated@^3.6.2: react-native-reanimated@^3.6.2:
version "3.6.2" version "3.6.2"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.6.2.tgz#8a48c37251cbd3b665a659444fa9778f5b510356" resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.6.2.tgz#8a48c37251cbd3b665a659444fa9778f5b510356"
@ -11398,6 +11407,11 @@ use-sync-external-store@^1.0.0:
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
utf8@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1"
integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==
util-deprecate@^1.0.1, util-deprecate@~1.0.1: util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"