From 158f35423b6450dd13bd72df08b794fba4c5b3e4 Mon Sep 17 00:00:00 2001 From: simbadMarino Date: Thu, 18 Nov 2021 07:39:07 -0600 Subject: [PATCH] dCloud v0.9.1 Release Notes: -WhitePaper 1.0 in progress and added to github -Multiple file selection added (Known issues with list rendering) -dBrowse improved with uploading progress for each file -Timers/Intervals cleared after component unmount to preven memory leaks in RN --- App.js | 45 ++- WP/WhitePaper1.0.odt | Bin 0 -> 52660 bytes WP/WhitePaper1.0.pdf | Bin 0 -> 44421 bytes WP/dCloud BTFS.drawio | 1 + WP/dCloud BTFS.svg | 3 + .../arm64-v8a/json_generation_record.json | 58 +--- .../armeabi-v7a/json_generation_record.json | 58 +--- .../x86/json_generation_record.json | 58 +--- .../x86_64/json_generation_record.json | 58 +--- android/app/build.gradle | 2 +- components/fileList.js | 8 + components/filePicker.js | 302 ++++++++++-------- package.json | 4 +- yarn.lock | 14 +- 14 files changed, 215 insertions(+), 396 deletions(-) create mode 100644 WP/WhitePaper1.0.odt create mode 100644 WP/WhitePaper1.0.pdf create mode 100644 WP/dCloud BTFS.drawio create mode 100644 WP/dCloud BTFS.svg create mode 100644 components/fileList.js diff --git a/App.js b/App.js index 9a999e4..42e183c 100755 --- a/App.js +++ b/App.js @@ -187,25 +187,7 @@ function getConfig() { -const backUpJSON = async () => { - try { - const result = await Share.share({ - message: - 'BackUp your FileList JSON', - }); - if (result.action === Share.sharedAction) { - if (result.activityType) { - // shared with activity type of result.activityType - } else { - // shared - } - } else if (result.action === Share.dismissedAction) { - // dismissed - } - } catch (error) { - alert(error.message); - } - }; + function promptPassword() { try{ @@ -653,12 +635,7 @@ const getData = async () => { Get BTFS Data - - - BackUp Files List JSON - + @@ -711,12 +688,26 @@ state = { getBalanceBTT(); getTronAddress(); - this.interval = setInterval(getBalanceBTT,10000); - this.interval = setInterval(getTronAddress,5000); + this.intervalBalance = setInterval(getBalanceBTT,10000); + this.intervalAddress = setInterval(getTronAddress,5000); } + componentWillUnMount() { + //myVar7 = setInterval(this.updateFilesList,1000); + if (this.intervalBalance) { // Is our timer running + // Yes, clear it + clearTimeout(this.intervalBalance); + this.intervalBalance = 0; + } + if (this.intervalAddress) { // Is our timer running + // Yes, clear it + clearTimeout(this.intervalAddress); + this.intervalAddress = 0; + } + } + render() { diff --git a/WP/WhitePaper1.0.odt b/WP/WhitePaper1.0.odt new file mode 100644 index 0000000000000000000000000000000000000000..147ff7243c9e3df0fa57ea05c4b1c3f01dce47a5 GIT binary patch literal 52660 zcmeGCWpEr#&@PCM$YQdXnVFf%7Be$5GqY@sn3W1; zKW_I_SJPB?Wo2ePPi8C1KtQ4c05AZ+u9dZl{s=1q6#xMEuYgVg?5ym}T)iC4j2s

|GgM%{*Nd|EDn+7?}TQ4D|p1?*a$f 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 literal 0 HcmV?d00001 diff --git a/WP/WhitePaper1.0.pdf b/WP/WhitePaper1.0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c8c7bba59eb30fb69344ddb3913992a981b70a63 GIT binary patch literal 44421 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 OE$~r6M<=c*f%;$T@Z1vs literal 0 HcmV?d00001 diff --git a/WP/dCloud BTFS.drawio b/WP/dCloud BTFS.drawio new file mode 100644 index 0000000..788082e --- /dev/null +++ b/WP/dCloud BTFS.drawio @@ -0,0 +1 @@ +7Vrfc6M2EP5rPNM++IYfNocfbSe+pJPrZc5pnbeOAAFqAFEhYvv++pOMhAHJPqc1cTqXFxt2FxD77S7fLgzsebr5REAef8YBTAaWEWwG9tXAssyPpsv+uGQrJOPxx0oSERQI2V6wRN+gEBpCWqIAFi1DinFCUd4W+jjLoE9bMkAIXrfNQpy0r5qDCCqCpQ8SVbpCAY0rqTs29vIbiKJYXtk0hCYF0lgIihgEeN0Q2dcDe04wptVWupnDhHtP+qU6bnFAWy+MwIyecsAiv/LSze31byv6SMopLFbrm6GA5xkkpbhhsVi6lR4guMwCyE9iDuzZOkYULnPgc+2agc5kMU0ToQ5AEde26grFop8hoXDTEIkVf4I4hZRsmYnUGuPqEBE/tnT8eg+GKT0cN4GQQiACIKrPvfcR2xBueoHLPv5fXPYjF9l2Xy4yFRcBkn4IoKd4iiVFzjd5XkLCHBDijC6FnjukYH5DWfSAcy4wmIQCT2biSOzXGWiOKsE9LhBFOGOiBIa07fAQJckcJ5jslmCHYWj5Pr8UJfgJNjSB4zlj50yoSARkITTVQJ5oQHL6wshSMEKO67yD1ATJ0lSbVwXJVhMJED92Ru84tZLJvTBOIwWnjev8tXnHqY3T6MIwjRWYAkDWKPuQP0XvKNUca2JfFqaJAtMdysoNE3mgYFSJr9dJuOs8wrYivlVsCwpTreqXaRYQzK5ozbX6r6DIPUh2LrlH7OfL8pDpNONGiVhNgDguvx6MHL8kyXZGgP8E6Y95YJs0tlghxxKxnmSaoIgHToqCgF9sFmOCvrGwBEk7Ju92kXU1NM3JeWJk3HkwqomsZZhmbwxTpZhXu1RuBMmxkEAcY9aj+V+Wr4CfgsqZqL7TSVwNXdHBMukNFZVUSt/nLRc7/5S87Z2lgEQMM3vKtEbOc2rnGKOSDykvrVznNHTMN3QIqkzgOp/5D5L9OSXGNepSEOGhR8NCytkdeoot6UqYVd6VxYrVv7q7qvxzpcuV6vq57exhwSM1ADDF4lQPWxadmgU3zNcgSSBVzXV30/vab3BB2d8ft29kPV9FwFx4RadFXKc0ibiX1AGzWhEmu6kSpw6dwQLB+QNbDA+EK6NbkzpUgwWYG2qphuO70AvPU7Bst12xTA0jNHVco6aO569Zao91+IGA0xxnu9uf/Q0p3Uq250pBTfdGWocdr5qnM7aTyryUEZgAip7bA02dH8X17jHK6P5iQ2vUJvHtE+AwLFiEdWGoF/0fkFG7KpkjnIprk5IrhsVuisxTz7R0uSfqgIcyQBBsPhCq8x7IPf7gURIkY/HQySYhatJ63jlUo20GttpJHOR3Mt3FM66HYaGpGRYammDqL//Upuwd5b5QPjZFf13UnbfMFOuGccHvY9cqMK6gaySOkclLU8cV9P5EcF3Z3YEtLukh2vgAScryJDlk/7o8bVWxV3ZQJIyXkDwj/7K0cYHYudkef6fIs/S4V1+Xy3Uqj8LhXMuzHUdlfbPrxcId98PtRtohge5VndFblTnhXV3P3M55qRt/Dm4ngXib9Z+XQz7he7u1XRbs67SsbIt2hewW+HvgP/EvHSzjM8jYBtEedZnWsy5C3TLWQ1HSvHXV9pu9jcisi7ebder9vCXpfvGYzq07YzI01mnw+20xWj5qPloI5gku+SR5uWI/U+LzAbBPSwIPdQ2NFDi1gVDI/8E2QTd/3g+dDU3H0Uyoc70sstsJNXTUjLKPhccLMort7j+PqmDef2VmX38H \ No newline at end of file diff --git a/WP/dCloud BTFS.svg b/WP/dCloud BTFS.svg new file mode 100644 index 0000000..c1672bd --- /dev/null +++ b/WP/dCloud BTFS.svg @@ -0,0 +1,3 @@ + + +
arm.deb
arm.deb
i686.deb
i686.deb
aarch64.deb
aarch64.deb
x86_x64.deb
x86_x64.deb
darwin.pkg
darwin.pkg
Linux based
system
(Android,
Raspberry Pi OS,
Any linux distro)
Linux based...
Darwin based system
(iOS macOS)
Darwin based system...

go-btfs


+ BTFS daemon: Type
+ BTFS wallet: Type

+ BTFS Host UI: Type

+ BTFS Renter UI: Type


go-btfs...
BTFS binaries
BTFS binaries
BTFS binaries
BTFS binaries

Android/ iOS UI


+ WebView: Layout
+ TerminalView: Layout

+ Wallet mgt: Service

+ BTFS File Browser: Layout

Android/ iOS UI...

Termux


+ TerminalEmu: service
+ Package Manager: service

Termux...
dCloud SW Architecture
dCloud SW Architecture
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/android/app/.cxx/ndkBuild/updatedRelease/arm64-v8a/json_generation_record.json b/android/app/.cxx/ndkBuild/updatedRelease/arm64-v8a/json_generation_record.json index decf7ba..3ba28c1 100644 --- a/android/app/.cxx/ndkBuild/updatedRelease/arm64-v8a/json_generation_record.json +++ b/android/app/.cxx/ndkBuild/updatedRelease/arm64-v8a/json_generation_record.json @@ -8,63 +8,7 @@ }, { "level": "INFO", - "message": "rebuilding JSON /home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/arm64-v8a/android_gradle_build.json due to:", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|arm64-v8a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "- a dependent build file changed", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|arm64-v8a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": " - /home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|arm64-v8a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "keeping json folder \u0027/home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/arm64-v8a\u0027 but regenerating project", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|arm64-v8a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "executing ndkBuild Executable : /home/simbad/Android/Sdk/ndk/21.1.6352462/ndk-build\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk\nAPP_ABI\u003darm64-v8a\nNDK_ALL_ABIS\u003darm64-v8a\nNDK_DEBUG\u003d0\nAPP_PLATFORM\u003dandroid-29\nNDK_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/obj\nNDK_LIBS_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/lib\nAPP_CFLAGS+\u003d-std\u003dc11\nAPP_CFLAGS+\u003d-Wall\nAPP_CFLAGS+\u003d-Wextra\nAPP_CFLAGS+\u003d-Werror\nAPP_CFLAGS+\u003d-Os\nAPP_CFLAGS+\u003d-fno-stack-protector\nAPP_CFLAGS+\u003d-Wl,--gc-sections\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|arm64-v8a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "Executable : /home/simbad/Android/Sdk/ndk/21.1.6352462/ndk-build\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk\nAPP_ABI\u003darm64-v8a\nNDK_ALL_ABIS\u003darm64-v8a\nNDK_DEBUG\u003d0\nAPP_PLATFORM\u003dandroid-29\nNDK_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/obj\nNDK_LIBS_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/lib\nAPP_CFLAGS+\u003d-std\u003dc11\nAPP_CFLAGS+\u003d-Wall\nAPP_CFLAGS+\u003d-Wextra\nAPP_CFLAGS+\u003d-Werror\nAPP_CFLAGS+\u003d-Os\nAPP_CFLAGS+\u003d-fno-stack-protector\nAPP_CFLAGS+\u003d-Wl,--gc-sections\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|arm64-v8a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "parse and convert ndk-build output to build configuration JSON", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|arm64-v8a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "done executing ndkBuild", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|arm64-v8a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "write command file /home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/arm64-v8a/build_command.txt", + "message": "JSON \u0027/home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/arm64-v8a/android_gradle_build.json\u0027 was up-to-date", "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", "tag": "updatedRelease|arm64-v8a", "diagnosticCode": "UNKNOWN" diff --git a/android/app/.cxx/ndkBuild/updatedRelease/armeabi-v7a/json_generation_record.json b/android/app/.cxx/ndkBuild/updatedRelease/armeabi-v7a/json_generation_record.json index 836a453..d69f95e 100644 --- a/android/app/.cxx/ndkBuild/updatedRelease/armeabi-v7a/json_generation_record.json +++ b/android/app/.cxx/ndkBuild/updatedRelease/armeabi-v7a/json_generation_record.json @@ -8,63 +8,7 @@ }, { "level": "INFO", - "message": "rebuilding JSON /home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/armeabi-v7a/android_gradle_build.json due to:", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|armeabi-v7a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "- a dependent build file changed", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|armeabi-v7a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": " - /home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|armeabi-v7a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "keeping json folder \u0027/home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/armeabi-v7a\u0027 but regenerating project", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|armeabi-v7a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "executing ndkBuild Executable : /home/simbad/Android/Sdk/ndk/21.1.6352462/ndk-build\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk\nAPP_ABI\u003darmeabi-v7a\nNDK_ALL_ABIS\u003darmeabi-v7a\nNDK_DEBUG\u003d0\nAPP_PLATFORM\u003dandroid-29\nNDK_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/obj\nNDK_LIBS_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/lib\nAPP_CFLAGS+\u003d-std\u003dc11\nAPP_CFLAGS+\u003d-Wall\nAPP_CFLAGS+\u003d-Wextra\nAPP_CFLAGS+\u003d-Werror\nAPP_CFLAGS+\u003d-Os\nAPP_CFLAGS+\u003d-fno-stack-protector\nAPP_CFLAGS+\u003d-Wl,--gc-sections\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|armeabi-v7a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "Executable : /home/simbad/Android/Sdk/ndk/21.1.6352462/ndk-build\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk\nAPP_ABI\u003darmeabi-v7a\nNDK_ALL_ABIS\u003darmeabi-v7a\nNDK_DEBUG\u003d0\nAPP_PLATFORM\u003dandroid-29\nNDK_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/obj\nNDK_LIBS_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/lib\nAPP_CFLAGS+\u003d-std\u003dc11\nAPP_CFLAGS+\u003d-Wall\nAPP_CFLAGS+\u003d-Wextra\nAPP_CFLAGS+\u003d-Werror\nAPP_CFLAGS+\u003d-Os\nAPP_CFLAGS+\u003d-fno-stack-protector\nAPP_CFLAGS+\u003d-Wl,--gc-sections\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|armeabi-v7a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "parse and convert ndk-build output to build configuration JSON", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|armeabi-v7a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "done executing ndkBuild", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|armeabi-v7a", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "write command file /home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/armeabi-v7a/build_command.txt", + "message": "JSON \u0027/home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/armeabi-v7a/android_gradle_build.json\u0027 was up-to-date", "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", "tag": "updatedRelease|armeabi-v7a", "diagnosticCode": "UNKNOWN" diff --git a/android/app/.cxx/ndkBuild/updatedRelease/x86/json_generation_record.json b/android/app/.cxx/ndkBuild/updatedRelease/x86/json_generation_record.json index f65a309..f0a0854 100644 --- a/android/app/.cxx/ndkBuild/updatedRelease/x86/json_generation_record.json +++ b/android/app/.cxx/ndkBuild/updatedRelease/x86/json_generation_record.json @@ -8,63 +8,7 @@ }, { "level": "INFO", - "message": "rebuilding JSON /home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/x86/android_gradle_build.json due to:", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "- a dependent build file changed", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": " - /home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "keeping json folder \u0027/home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/x86\u0027 but regenerating project", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "executing ndkBuild Executable : /home/simbad/Android/Sdk/ndk/21.1.6352462/ndk-build\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk\nAPP_ABI\u003dx86\nNDK_ALL_ABIS\u003dx86\nNDK_DEBUG\u003d0\nAPP_PLATFORM\u003dandroid-29\nNDK_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/obj\nNDK_LIBS_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/lib\nAPP_CFLAGS+\u003d-std\u003dc11\nAPP_CFLAGS+\u003d-Wall\nAPP_CFLAGS+\u003d-Wextra\nAPP_CFLAGS+\u003d-Werror\nAPP_CFLAGS+\u003d-Os\nAPP_CFLAGS+\u003d-fno-stack-protector\nAPP_CFLAGS+\u003d-Wl,--gc-sections\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "Executable : /home/simbad/Android/Sdk/ndk/21.1.6352462/ndk-build\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk\nAPP_ABI\u003dx86\nNDK_ALL_ABIS\u003dx86\nNDK_DEBUG\u003d0\nAPP_PLATFORM\u003dandroid-29\nNDK_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/obj\nNDK_LIBS_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/lib\nAPP_CFLAGS+\u003d-std\u003dc11\nAPP_CFLAGS+\u003d-Wall\nAPP_CFLAGS+\u003d-Wextra\nAPP_CFLAGS+\u003d-Werror\nAPP_CFLAGS+\u003d-Os\nAPP_CFLAGS+\u003d-fno-stack-protector\nAPP_CFLAGS+\u003d-Wl,--gc-sections\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "parse and convert ndk-build output to build configuration JSON", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "done executing ndkBuild", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "write command file /home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/x86/build_command.txt", + "message": "JSON \u0027/home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/x86/android_gradle_build.json\u0027 was up-to-date", "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", "tag": "updatedRelease|x86", "diagnosticCode": "UNKNOWN" diff --git a/android/app/.cxx/ndkBuild/updatedRelease/x86_64/json_generation_record.json b/android/app/.cxx/ndkBuild/updatedRelease/x86_64/json_generation_record.json index 0f516c5..809a854 100644 --- a/android/app/.cxx/ndkBuild/updatedRelease/x86_64/json_generation_record.json +++ b/android/app/.cxx/ndkBuild/updatedRelease/x86_64/json_generation_record.json @@ -8,63 +8,7 @@ }, { "level": "INFO", - "message": "rebuilding JSON /home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/x86_64/android_gradle_build.json due to:", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86_64", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "- a dependent build file changed", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86_64", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": " - /home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86_64", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "keeping json folder \u0027/home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/x86_64\u0027 but regenerating project", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86_64", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "executing ndkBuild Executable : /home/simbad/Android/Sdk/ndk/21.1.6352462/ndk-build\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk\nAPP_ABI\u003dx86_64\nNDK_ALL_ABIS\u003dx86_64\nNDK_DEBUG\u003d0\nAPP_PLATFORM\u003dandroid-29\nNDK_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/obj\nNDK_LIBS_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/lib\nAPP_CFLAGS+\u003d-std\u003dc11\nAPP_CFLAGS+\u003d-Wall\nAPP_CFLAGS+\u003d-Wextra\nAPP_CFLAGS+\u003d-Werror\nAPP_CFLAGS+\u003d-Os\nAPP_CFLAGS+\u003d-fno-stack-protector\nAPP_CFLAGS+\u003d-Wl,--gc-sections\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86_64", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "Executable : /home/simbad/Android/Sdk/ndk/21.1.6352462/ndk-build\narguments : \nNDK_PROJECT_PATH\u003dnull\nAPP_BUILD_SCRIPT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk\nAPP_ABI\u003dx86_64\nNDK_ALL_ABIS\u003dx86_64\nNDK_DEBUG\u003d0\nAPP_PLATFORM\u003dandroid-29\nNDK_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/obj\nNDK_LIBS_OUT\u003d/home/simbad/Documents/Git_Repos/dCloud/android/app/build/intermediates/ndkBuild/updatedRelease/lib\nAPP_CFLAGS+\u003d-std\u003dc11\nAPP_CFLAGS+\u003d-Wall\nAPP_CFLAGS+\u003d-Wextra\nAPP_CFLAGS+\u003d-Werror\nAPP_CFLAGS+\u003d-Os\nAPP_CFLAGS+\u003d-fno-stack-protector\nAPP_CFLAGS+\u003d-Wl,--gc-sections\nAPP_SHORT_COMMANDS\u003dfalse\nLOCAL_SHORT_COMMANDS\u003dfalse\n-B\n-n\njvmArgs : \n\n", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86_64", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "parse and convert ndk-build output to build configuration JSON", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86_64", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "done executing ndkBuild", - "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", - "tag": "updatedRelease|x86_64", - "diagnosticCode": "UNKNOWN" - }, - { - "level": "INFO", - "message": "write command file /home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/x86_64/build_command.txt", + "message": "JSON \u0027/home/simbad/Documents/Git_Repos/dCloud/android/app/.cxx/ndkBuild/updatedRelease/x86_64/android_gradle_build.json\u0027 was up-to-date", "file": "/home/simbad/Documents/Git_Repos/dCloud/android/app/src/main/cpp/Android.mk", "tag": "updatedRelease|x86_64", "diagnosticCode": "UNKNOWN" diff --git a/android/app/build.gradle b/android/app/build.gradle index 93a0788..2992ffa 100755 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -165,7 +165,7 @@ android { applicationId "com.justshare" minSdkVersion project.properties.minSdkVersion.toInteger() versionCode 1 - versionName "0.8" + versionName "0.9.1" manifestPlaceholders.TERMUX_PACKAGE_NAME = "com.termux" manifestPlaceholders.TERMUX_APP_NAME = "justshare" diff --git a/components/fileList.js b/components/fileList.js new file mode 100644 index 0000000..0358f1e --- /dev/null +++ b/components/fileList.js @@ -0,0 +1,8 @@ +export const filelist = [ + { + title: 'Test', + icon: 'check-circle', + subtitle: '22.8MB 12 Oct 2021', + qmhash: 'Qmhash' + } +]; \ No newline at end of file diff --git a/components/filePicker.js b/components/filePicker.js index 19bc87d..6b0e368 100755 --- a/components/filePicker.js +++ b/components/filePicker.js @@ -14,8 +14,15 @@ import Root from './Root'; import Popup from './Popup'; import AsyncStorage from '@react-native-async-storage/async-storage'; import Clipboard from '@react-native-clipboard/clipboard'; +import { AnimatedCircularProgress } from 'react-native-circular-progress'; //import { filelist } from "./fileList.js"; +import { + SwipeableFlatList, + SwipeableQuickActionButton, + SwipeableQuickActions, +} from 'react-native-swipe-list'; + //var filelist var currentUploadSessionID = ""; var currentSessionIDMessage = ""; @@ -92,6 +99,28 @@ function stopAllIntervals(){ } } +const backUpJSON = async () => { + try { + const result = await Share.share({ + message: + 'BackUp your FileList JSON', + }); + if (result.action === Share.sharedAction) { + if (result.activityType) { + // shared with activity type of result.activityType + } else { + // shared + } + } else if (result.action === Share.dismissedAction) { + // dismissed + } + } catch (error) { + alert(error.message); + } + }; + + + const getFilesData = async () => { try { const value = await AsyncStorage.getItem('@filesJson') @@ -111,117 +140,107 @@ function stopAllIntervals(){ } +const getMultiUploadStatus = async(item) => { - -async function getUploadStatus() { - - timeOutWatchDogCounter ++; - if(timeOutWatchDogCounter >= MAX_UPLOAD_TIMEOUT) - { - statusProgress = 1.0; - progressBarColor = 'red'; - //this.updateProgressBarColor; - //stopAllIntervals(); - setTimeout(stopAllIntervals,2000); - //timeOutWatchDogCounter = 0; - } - console.log("WhatchDog Counter: " + timeOutWatchDogCounter); - + try{ + files_list.forEach(await function(element,item){ + console.log("Session Status " + files_list[item].session + ": " + files_list[item].uploadStatus); var response = ""; - response = axios.post("http://localhost:5001/api/v1/storage/upload/status?arg=" + currentUploadSessionID) - .then(function (response) { - - //console.log(response); - currentSessionIDMessage = response.data.Message; - if(currentSessionIDMessage == 'Searching for recommended hosts…') - { - statusProgress = 0.1; - } - if(currentSessionIDMessage == 'Hosts found! Checking wallet balance and submitting contracts to escrow.') - { - statusProgress = 0.3; - } - if(currentSessionIDMessage == 'Contracts submitted! Confirming the escrow payment.') - { - statusProgress = 0.5; - } - if(currentSessionIDMessage == 'Payment successful! Preparing meta-data and challenge questions.') - { - statusProgress = 0.6; - } - if(currentSessionIDMessage == 'Confirming successful file shard storage by hosts.') - { - statusProgress = 0.8; - } - if(currentSessionIDMessage == 'File storage successful!') - { - statusProgress = 1.0; - setTimeout(stopAllIntervals,6000); - Popup.show({ - type: 'Success', - title: 'Upload complete', - buttontext: 'Ok', - callback: () => Popup.hide(), - - }) - } - if(currentSessionIDMessage == 'EscrowClient: rpc error: code = Unknown desc = met internal error, ERROR #42P01 relation "contract" does not exist') - { - statusProgress = 1.0; - progressBarColor = 'red' - //updateProgressBarColor; - Alert.alert("Error", currentSessionIDMessage); - setTimeout(stopAllIntervals,6000); - } - if(currentSessionIDMessage == 'GuardClient: rpc error: code = Unknown desc = Persistence manager: such file hash already exist for such renter') - { - statusProgress = 1.0; - progressBarColor = 'red' - //updateProgressBarColor; - Alert.alert("Error", currentSessionIDMessage); - setTimeout(stopAllIntervals,6000); - } - if(currentSessionIDMessage == 'EscrowClient: rpc error: code = Unknown desc = ledger error:LedgerClient: rpc error: code = Unavailable desc = Gateway Timeout: HTTP status code 504; transport: received the unexpected content-type "text/html"') - { - statusProgress = 1.0; - progressBarColor = 'red'; - Alert.alert("Error", currentSessionIDMessage); - setTimeout(stopAllIntervals,6000); - } - if(currentSessionIDMessage == 'EscrowClient: rpc error: code = Unknown desc = ledger error:rpc error: code = Unavailable desc = Gateway Timeout: HTTP status code 504; transport: received the unexpected content-type "text/html"') - { - statusProgress = 1.0; - progressBarColor = 'red'; - Alert.alert("Error", currentSessionIDMessage); - setTimeout(stopAllIntervals,6000); - } - if(currentSessionIDMessage == 'GuardClient: rpc error: code = Unavailable desc = transport is closing') - { - statusProgress = 1.0; - progressBarColor = 'red'; - Alert.alert("Error", currentSessionIDMessage); - setTimeout(stopAllIntervals,6000); - } - if(currentSessionIDMessage == 'context deadline exceeded') - { - statusProgress = 1.0; - progressBarColor = 'red' - //updateProgressBarColor - Alert.alert("Error", currentSessionIDMessage); - //stopAllIntervals(); - setTimeout(stopAllIntervals,6000); - } - - // console.log("|"+"Upload Message: " + currentSessionIDMessage + "|" + "Session ID: " + currentUploadSessionID + "|" + "QmHash: " + currentFileQMhash + "|"); - // Alert.alert("BTFS", "|"+"Upload Message: " + currentSessionIDMessage + "|" + "Session ID: " + currentUploadSessionID + "|" + "QmHash: " + currentFileQMhash + "|"); + response = axios.post("http://localhost:5001/api/v1/storage/upload/status?arg=" + files_list[item].session) + .then(function (response) { + + //console.log(response); + currentSessionIDMessage = response.data.Message; + if(currentSessionIDMessage == 'Searching for recommended hosts…') + { + files_list[item].uploadStatus = 10; + } + if(currentSessionIDMessage == 'Hosts found! Checking wallet balance and submitting contracts to escrow.') + { + files_list[item].uploadStatus = 30; + } + if(currentSessionIDMessage == 'Contracts submitted! Confirming the escrow payment.') + { + files_list[item].uploadStatus = 50; + } + if(currentSessionIDMessage == 'Payment successful! Preparing meta-data and challenge questions.') + { + files_list[item].uploadStatus = 60; + } + if(currentSessionIDMessage == 'Confirming successful file shard storage by hosts.') + { + files_list[item].uploadStatus = 80; + } + if(currentSessionIDMessage == 'File storage successful!') + { + files_list[item].uploadStatus = 100; + } + if(currentSessionIDMessage == 'EscrowClient: rpc error: code = Unknown desc = met internal error, ERROR #42P01 relation "contract" does not exist') + { + files_list[item].uploadStatus = 0; + //progressBarColor = 'red' + //updateProgressBarColor; + //Alert.alert("Error", currentSessionIDMessage); + //setTimeout(stopAllIntervals,6000); + } + if(currentSessionIDMessage == 'GuardClient: rpc error: code = Unknown desc = Persistence manager: such file hash already exist for such renter') + { + files_list[item].uploadStatus = 100; + //progressBarColor = 'red' + //updateProgressBarColor; + //Alert.alert("Error", currentSessionIDMessage); + //setTimeout(stopAllIntervals,6000); + } + if(currentSessionIDMessage == 'GuardClient: rpc error: code = DeadlineExceeded desc = context deadline exceeded') + { + //Error + files_list[item].uploadStatus = 0; + } + if(currentSessionIDMessage == 'EscrowClient: rpc error: code = Unknown desc = ledger error:LedgerClient: rpc error: code = Unavailable desc = Gateway Timeout: HTTP status code 504; transport: received the unexpected content-type "text/html"') + { + files_list[item].uploadStatus = 0; + //progressBarColor = 'red'; + //Alert.alert("Error", currentSessionIDMessage); + //setTimeout(stopAllIntervals,6000); + } + if(currentSessionIDMessage == 'EscrowClient: rpc error: code = Unknown desc = ledger error:rpc error: code = Unavailable desc = Gateway Timeout: HTTP status code 504; transport: received the unexpected content-type "text/html"') + { + files_list[item].uploadStatus = 0; + //progressBarColor = 'red'; + //Alert.alert("Error", currentSessionIDMessage); + //setTimeout(stopAllIntervals,6000); + } + if(currentSessionIDMessage == 'GuardClient: rpc error: code = Unavailable desc = transport is closing') + { + files_list[item].uploadStatus = 0; + //progressBarColor = 'red'; + //Alert.alert("Error", currentSessionIDMessage); + //setTimeout(stopAllIntervals,6000); + } + if(currentSessionIDMessage == 'context deadline exceeded') + { + files_list[item].uploadStatus = 0; + //progressBarColor = 'red' + //updateProgressBarColor + //Alert.alert("Error", currentSessionIDMessage); + //stopAllIntervals(); + //setTimeout(stopAllIntervals,6000); + } + // console.log("|"+"Upload Message: " + currentSessionIDMessage + "|" + "Session ID: " + currentUploadSessionID + "|" + "QmHash: " + currentFileQMhash + "|"); + // Alert.alert("BTFS", "|"+"Upload Message: " + currentSessionIDMessage + "|" + "Session ID: " + currentUploadSessionID + "|" + "QmHash: " + currentFileQMhash + "|"); + }) + }); - }) + } + catch (e) { + console.log("error") + } } @@ -262,14 +281,23 @@ state = { componentWillUnMount() { - clearInterval(this.timer); //myVar7 = setInterval(this.updateFilesList,1000); + if (this.interval) { // Is our timer running + // Yes, clear it + clearTimeout(this.interval); + this.interval = 0; + } + if (this.interval2) { // Is our timer running + // Yes, clear it + clearTimeout(this.interval2); + this.interval2 = 0; + } } componentDidMount() { this.interval = setInterval(this.updateFilesList,2000); - + this.interval2 = setInterval(getMultiUploadStatus,5000); } @@ -285,8 +313,8 @@ state = { updateFilesList = () => { - console.log("updating fileList...") - console.log(files_list); + //console.log("updating fileList...") + //console.log(files_list); storeFilesData(files_list) this.setState({stateFilesList: files_list}); } @@ -390,6 +418,7 @@ state = { try { //myVar7 = setInterval(this.updateFilesList,1000); + currentSessionIDMessage = ""; results_multi = await DocumentPicker.pickMultiple({ type: [DocumentPicker.types.allFiles], }); @@ -398,34 +427,21 @@ state = { results_multi.forEach(await function (res,i){ - - /*console.log( - res.uri, - res.type, // mime type - res.name, - res.size - );*/ currentFileName = res.name; - const formData = new FormData(); - formData.append(res.name, { uri: res.uri, name: res.name , type: res.type }); - var addFileReedSolomonData = axios.post("http://localhost:5001/api/v1/add?chunker=reed-solomon", formData, { headers: { 'Content-Type': 'multipart/form-data' } }) - .then(function (addFileReedSolomonData) { currentFileQMhash = addFileReedSolomonData.data.Hash; - - //Alert.alert(currentFileQMhash); console.log("File BTFS QMhash: " + currentFileQMhash); console.log("QMhash obtained :), proceeding to upload file..."); @@ -435,7 +451,8 @@ state = { icon: 'check-circle', subtitle: res.size/1000 + " KB", qmhash: currentFileQMhash, - session: '' + session: '', + uploadStatus: 0 }); var fileUploadID = axios.post("http://localhost:5001/api/v1/storage/upload?arg=" + currentFileQMhash) @@ -454,9 +471,13 @@ state = { session: currentUploadSessionID });*/ console.log(files_list); + //myVar4 = setInterval(getMultiUploadStatus,4200); }) }) + //getMultiUploadStatus(); + //myVar4 = setInterval(this.updateUploadSts,4200); + }); @@ -591,32 +612,31 @@ files_list.splice(item,1); {this.state.stateFilesList.map((item, i) => ( - deleteCurrentItem(i)} - - > + deleteCurrentItem(i)} + > - copyToClipboardLong(i)} - onPress={() => openURL(i)} + copyToClipboardLong(i)} + onPress={() => openURL(i)} - > + > - + {item.uploadStatus + "%"} - - {item.title} - {item.subtitle} - {item.qmhash} - + + {item.title} + {item.subtitle} + {item.qmhash} + - - + + )) } @@ -673,6 +693,12 @@ const styles = StyleSheet.create({ backgroundColor:"red", height: 80 }, +uploadStsText: { + fontSize: 18, + color: 'white', + alignItems:"center", + justifyContent:"center" +}, listbuttonOffline:{ color: 'white' }, diff --git a/package.json b/package.json index 1acbbb9..2545204 100755 --- a/package.json +++ b/package.json @@ -24,12 +24,13 @@ "react-native": "^0.63.4", "react-native-app-intro": "^1.1.5", "react-native-appearance": "^0.3.4", + "react-native-circular-progress": "^1.3.7", "react-native-custom-qr-codes": "^2.0.0", "react-native-document-picker": "^4.2.0", "react-native-elements": "^3.4.2", "react-native-file-picker": "^0.0.19", "react-native-floating-action": "^1.21.0", - "react-native-gesture-handler": "^1.9.0", + "react-native-gesture-handler": "^1.10.3", "react-native-ionicons": "^4.6.5", "react-native-linear-gradient": "^2.5.6", "react-native-modal-overlay": "^1.3.1", @@ -41,6 +42,7 @@ "react-native-safe-area-context": "^3.1.9", "react-native-screens": "^2.16.1", "react-native-svg": "^12.1.1", + "react-native-swipe-list": "^0.0.2", "react-native-swipeable": "^0.6.0", "react-native-touchable-scale": "^2.1.2", "react-native-unimodules": "^0.12.0", diff --git a/yarn.lock b/yarn.lock index b4818d0..bc1992d 100755 --- a/yarn.lock +++ b/yarn.lock @@ -7263,6 +7263,13 @@ react-native-appearance@^0.3.4: invariant "^2.2.4" use-subscription "^1.0.0" +react-native-circular-progress@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/react-native-circular-progress/-/react-native-circular-progress-1.3.7.tgz#cc430fbc612bd01134a8fc9667be107591ae6959" + integrity sha512-Lpe4Sb0Sdfdxopl6sEc3ooKnwlK5j1nKGq5lgi9UKDFKO6iBAszeH+PiUt6acGSRbKMH1av+9G9ni9r/6T0+nQ== + dependencies: + prop-types "^15.7.2" + react-native-custom-qr-codes@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/react-native-custom-qr-codes/-/react-native-custom-qr-codes-2.0.0.tgz#95fc813e1cbb5190cbdaf2657d361c5220a4feef" @@ -7299,7 +7306,7 @@ react-native-floating-action@^1.21.0: resolved "https://registry.yarnpkg.com/react-native-floating-action/-/react-native-floating-action-1.21.0.tgz#cb1e8349fec5b9aed06c8053c07372822c64b22f" integrity sha512-ozd/iaJunrEYc4eGUWkP+4UI8yoIL0nQsToI3hnJRste/3LPhBkyu0eG3RTjc6aFY+q++JpRmgO469Ck8jJOwg== -react-native-gesture-handler@^1.9.0: +react-native-gesture-handler@^1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.10.3.tgz#942bbf2963bbf49fa79593600ee9d7b5dab3cfc0" integrity sha512-cBGMi1IEsIVMgoox4RvMx7V2r6bNKw0uR1Mu1o7NbuHS6BRSVLq0dP34l2ecnPlC+jpWd3le6Yg1nrdCjby2Mw== @@ -7403,6 +7410,11 @@ react-native-svg@^12.1.1: css-select "^2.1.0" css-tree "^1.0.0-alpha.39" +react-native-swipe-list@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/react-native-swipe-list/-/react-native-swipe-list-0.0.2.tgz#fc0c9c5317902d669b9bf768fc4fb1edb1557f3f" + integrity sha512-NMa/924vkikVnmE9TgXZLiXqfQaBSwM5vpwOZ+wp7eFGdZhYFuW9rblaesx2y6sbDbJGjwlPPlSNhzBWPUU61A== + react-native-swipeable@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/react-native-swipeable/-/react-native-swipeable-0.6.0.tgz#0fe551330018b83c754d27f505709a594f554370"