deer social fork for personal usage. but you might see a use idk. github mirror

fix video downloads on mobile this was gemini's doing idc

aylac.top 9109bb8b 5d39467c

verified
Changed files
+118 -60
src
lib
media
-1
package.json
··· 210 210 "react-remove-scroll-bar": "^2.3.8", 211 211 "react-responsive": "^10.0.1", 212 212 "react-textarea-autosize": "^8.5.3", 213 - "rn-fetch-blob": "^0.12.0", 214 213 "sonner": "^2.0.7", 215 214 "sonner-native": "^0.21.0", 216 215 "statsig-react-native-expo": "^4.6.1",
+14 -11
src/lib/media/manip.ts
··· 15 15 import * as MediaLibrary from 'expo-media-library' 16 16 import * as Sharing from 'expo-sharing' 17 17 import {Buffer} from 'buffer' 18 - import {RNFetchBlob} from 'rn-fetch-blob' 19 18 20 19 import {POST_IMG_MAX} from '#/lib/constants' 21 20 import {logger} from '#/logger' ··· 140 139 safeDeleteAsync(imagePath) 141 140 } 142 141 } 143 - 144 142 export async function saveVideoToMediaLibrary({uri}: {uri: string}) { 145 143 // download the file to cache 146 - const downloadResponse = await RNFetchBlob.config({ 147 - fileCache: true, 148 - }) 149 - .fetch('GET', uri) 144 + const tempPath = createPath('tmp') 145 + const downloadResumable = createDownloadResumable(uri, tempPath) 146 + const downloadResult = await downloadResumable 147 + .downloadAsync() 150 148 .catch(() => null) 151 - if (downloadResponse == null) return false 152 - let videoPath = downloadResponse.path() 153 - let extension = mimeToExt(downloadResponse.respInfo.headers['content-type']) 154 - videoPath = normalizePath( 155 - await moveToPermanentPath(videoPath, '.' + extension), 149 + 150 + if (downloadResult == null || downloadResult.status !== 200) { 151 + return false 152 + } 153 + 154 + const contentType = downloadResult.headers['content-type'] 155 + const extension = mimeToExt(contentType) 156 + 157 + const videoPath = normalizePath( 158 + await moveToPermanentPath(downloadResult.uri, '.' + extension), 156 159 true, 157 160 ) 158 161
+104 -48
yarn.lock
··· 184 184 uint8arrays "3.0.0" 185 185 zod "^3.23.8" 186 186 187 - "@atproto/common-web@^0.4.3": 188 - version "0.4.3" 189 - resolved "https://registry.yarnpkg.com/@atproto/common-web/-/common-web-0.4.3.tgz#b4480220b5682db09da45f4ef906eb7619c838b5" 190 - integrity sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg== 191 - dependencies: 192 - graphemer "^1.4.0" 193 - multiformats "^9.9.0" 194 - uint8arrays "3.0.0" 195 - zod "^3.23.8" 196 - 197 187 "@atproto/common@0.1.0": 198 188 version "0.1.0" 199 189 resolved "https://registry.yarnpkg.com/@atproto/common/-/common-0.1.0.tgz#4216a8fef5b985ab62ac21252a0f8ca0f4a0f210" ··· 327 317 multiformats "^9.9.0" 328 318 zod "^3.23.8" 329 319 330 - <<<<<<< HEAD 331 320 "@atproto/lexicon@^0.5.0", "@atproto/lexicon@^0.5.1": 332 - ======= 333 - "@atproto/lexicon@^0.5.1": 334 - >>>>>>> upstream/main 335 321 version "0.5.1" 336 322 resolved "https://registry.yarnpkg.com/@atproto/lexicon/-/lexicon-0.5.1.tgz#e9b7d5c70dc5a38518a8069cd80fea77ab526947" 337 323 integrity sha512-y8AEtYmfgVl4fqFxqXAeGvhesiGkxiy3CWoJIfsFDDdTlZUC8DFnZrYhcqkIop3OlCkkljvpSJi1hbeC1tbi8A== ··· 548 534 zod "^3.23.8" 549 535 550 536 "@atproto/xrpc@^0.7.4", "@atproto/xrpc@^0.7.5": 551 - version "0.7.5" 552 - resolved "https://registry.yarnpkg.com/@atproto/xrpc/-/xrpc-0.7.5.tgz#40cef1a657b5f28af8ebec9e3dac5872e58e88ea" 553 - integrity sha512-MUYNn5d2hv8yVegRL0ccHvTHAVj5JSnW07bkbiaz96UH45lvYNRVwt44z+yYVnb0/mvBzyD3/ZQ55TRGt7fHkA== 554 - dependencies: 555 - "@atproto/lexicon" "^0.5.1" 556 - zod "^3.23.8" 557 - 558 - "@atproto/xrpc@^0.7.5": 559 537 version "0.7.5" 560 538 resolved "https://registry.yarnpkg.com/@atproto/xrpc/-/xrpc-0.7.5.tgz#40cef1a657b5f28af8ebec9e3dac5872e58e88ea" 561 539 integrity sha512-MUYNn5d2hv8yVegRL0ccHvTHAVj5JSnW07bkbiaz96UH45lvYNRVwt44z+yYVnb0/mvBzyD3/ZQ55TRGt7fHkA== ··· 3576 3554 resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 3577 3555 integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 3578 3556 3557 + "@bitdrift/react-native@^0.6.8": 3558 + version "0.6.14" 3559 + resolved "https://registry.yarnpkg.com/@bitdrift/react-native/-/react-native-0.6.14.tgz#8ad52323062f5b3b058a982384907a3912ca6e1f" 3560 + integrity sha512-thZIjkosyi7mru7NAP3Ie4a/84EJPf1YROUCuZ81NWSJv+fWLvEp4KfuVCJj265bkdFgRVB/JIqKPhbiC16SMw== 3561 + dependencies: 3562 + "@expo/config-plugins" "^9.0.14" 3563 + fast-json-stringify "^6.0.0" 3564 + 3579 3565 "@braintree/sanitize-url@^6.0.2": 3580 3566 version "6.0.4" 3581 3567 resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" ··· 4067 4053 node-forge "^1.2.1" 4068 4054 nullthrows "^1.1.1" 4069 4055 4056 + "@expo/config-plugins@^9.0.14": 4057 + version "9.1.7" 4058 + resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-9.1.7.tgz#cbaaf883c57cd236f157f26c03784adbe6ebf9ac" 4059 + integrity sha512-8dJzOesaQS+8XuT49pdSHej1z6XG3x2fqN2O3v807ri8uhxm2N9P6+iZBn19xv9+7OxraOc2tH3nEIWE19Za0w== 4060 + dependencies: 4061 + "@expo/config-types" "^53.0.0" 4062 + "@expo/json-file" "~9.1.3" 4063 + "@expo/plist" "^0.3.3" 4064 + "@expo/sdk-runtime-versions" "^1.0.0" 4065 + chalk "^4.1.2" 4066 + debug "^4.3.5" 4067 + getenv "^1.0.0" 4068 + glob "^10.4.2" 4069 + resolve-from "^5.0.0" 4070 + semver "^7.5.4" 4071 + slash "^3.0.0" 4072 + slugify "^1.6.6" 4073 + xcode "^3.0.1" 4074 + xml2js "0.6.0" 4075 + 4070 4076 "@expo/config-plugins@~54.0.1": 4071 4077 version "54.0.1" 4072 4078 resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-54.0.1.tgz#cf811b38c7cf6ee32c611265605683032bf13b48" ··· 4087 4093 xcode "^3.0.1" 4088 4094 xml2js "0.6.0" 4089 4095 4096 + "@expo/config-types@^53.0.0": 4097 + version "53.0.5" 4098 + resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-53.0.5.tgz#bba7e0712c2c5b1d8963348d68ea96339f858db4" 4099 + integrity sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g== 4100 + 4090 4101 "@expo/config-types@^54.0.8": 4091 4102 version "54.0.8" 4092 4103 resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-54.0.8.tgz#2aa1f96e0abad6a125d0ff1092b303280f7962e9" ··· 4194 4205 "@babel/code-frame" "~7.10.4" 4195 4206 json5 "^2.2.3" 4196 4207 4208 + "@expo/json-file@~9.1.3": 4209 + version "9.1.5" 4210 + resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-9.1.5.tgz#7d7b2dc4990dc2c2de69a571191aba984b7fb7ed" 4211 + integrity sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA== 4212 + dependencies: 4213 + "@babel/code-frame" "~7.10.4" 4214 + json5 "^2.2.3" 4215 + 4197 4216 "@expo/mcp-tunnel@~0.0.7": 4198 4217 version "0.0.8" 4199 4218 resolved "https://registry.yarnpkg.com/@expo/mcp-tunnel/-/mcp-tunnel-0.0.8.tgz#8c4fabec4e25e119998b22bd846e9d12435da4da" ··· 4268 4287 ora "^3.4.0" 4269 4288 resolve-workspace-root "^2.0.0" 4270 4289 4290 + "@expo/plist@^0.3.3": 4291 + version "0.3.5" 4292 + resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.3.5.tgz#11913c64951936101529cb26d7260ef16970fc31" 4293 + integrity sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g== 4294 + dependencies: 4295 + "@xmldom/xmldom" "^0.8.8" 4296 + base64-js "^1.2.3" 4297 + xmlbuilder "^15.1.1" 4298 + 4271 4299 "@expo/plist@^0.4.7": 4272 4300 version "0.4.7" 4273 4301 resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.4.7.tgz#40fa796e93d5be0452ce72e5110e69c8ac915403" ··· 4377 4405 resolved "https://registry.yarnpkg.com/@fastify/deepmerge/-/deepmerge-1.3.0.tgz#8116858108f0c7d9fd460d05a7d637a13fe3239a" 4378 4406 integrity sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A== 4379 4407 4408 + "@fastify/merge-json-schemas@^0.2.0": 4409 + version "0.2.1" 4410 + resolved "https://registry.yarnpkg.com/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz#3aa30d2f0c81a8ac5995b6d94ed4eaa2c3055824" 4411 + integrity sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A== 4412 + dependencies: 4413 + dequal "^2.0.3" 4414 + 4380 4415 "@floating-ui/core@^1.0.0": 4381 4416 version "1.6.0" 4382 4417 resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" ··· 7999 8034 dependencies: 8000 8035 ajv "^8.0.0" 8001 8036 8037 + ajv-formats@^3.0.1: 8038 + version "3.0.1" 8039 + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" 8040 + integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== 8041 + dependencies: 8042 + ajv "^8.0.0" 8043 + 8002 8044 ajv-keywords@^3.5.2: 8003 8045 version "3.5.2" 8004 8046 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" ··· 8030 8072 json-schema-traverse "^1.0.0" 8031 8073 require-from-string "^2.0.2" 8032 8074 uri-js "^4.2.2" 8075 + 8076 + ajv@^8.12.0: 8077 + version "8.17.1" 8078 + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" 8079 + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== 8080 + dependencies: 8081 + fast-deep-equal "^3.1.3" 8082 + fast-uri "^3.0.1" 8083 + json-schema-traverse "^1.0.0" 8084 + require-from-string "^2.0.2" 8033 8085 8034 8086 anser@^1.4.9: 8035 8087 version "1.4.10" ··· 8650 8702 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 8651 8703 integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 8652 8704 8653 - base-64@0.1.0: 8654 - version "0.1.0" 8655 - resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" 8656 - integrity sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA== 8657 - 8658 8705 base64-arraybuffer@^1.0.2: 8659 8706 version "1.0.2" 8660 8707 resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" ··· 10063 10110 version "1.1.2" 10064 10111 resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 10065 10112 integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== 10113 + 10114 + dequal@^2.0.3: 10115 + version "2.0.3" 10116 + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" 10117 + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== 10066 10118 10067 10119 destroy@1.2.0: 10068 10120 version "1.2.0" ··· 11548 11600 fast-uri "^2.1.0" 11549 11601 rfdc "^1.2.0" 11550 11602 11603 + fast-json-stringify@^6.0.0: 11604 + version "6.1.1" 11605 + resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-6.1.1.tgz#79163606431540582b50e992ab8cdb6c65df0529" 11606 + integrity sha512-DbgptncYEXZqDUOEl4krff4mUiVrTZZVI7BBrQR/T3BqMj/eM1flTC1Uk2uUoLcWCxjT95xKulV/Lc6hhOZsBQ== 11607 + dependencies: 11608 + "@fastify/merge-json-schemas" "^0.2.0" 11609 + ajv "^8.12.0" 11610 + ajv-formats "^3.0.1" 11611 + fast-uri "^3.0.0" 11612 + json-schema-ref-resolver "^3.0.0" 11613 + rfdc "^1.2.0" 11614 + 11551 11615 fast-levenshtein@^2.0.6: 11552 11616 version "2.0.6" 11553 11617 resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" ··· 11574 11638 version "2.2.0" 11575 11639 resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.2.0.tgz#519a0f849bef714aad10e9753d69d8f758f7445a" 11576 11640 integrity sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg== 11641 + 11642 + fast-uri@^3.0.0, fast-uri@^3.0.1: 11643 + version "3.1.0" 11644 + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" 11645 + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== 11577 11646 11578 11647 fast-xml-parser@4.2.5: 11579 11648 version "4.2.5" ··· 12031 12100 resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 12032 12101 integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 12033 12102 12034 - glob@7.0.6: 12035 - version "7.0.6" 12036 - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" 12037 - integrity sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q== 12038 - dependencies: 12039 - fs.realpath "^1.0.0" 12040 - inflight "^1.0.4" 12041 - inherits "2" 12042 - minimatch "^3.0.2" 12043 - once "^1.3.0" 12044 - path-is-absolute "^1.0.0" 12045 - 12046 12103 glob@^10.3.10: 12047 12104 version "10.3.12" 12048 12105 resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b" ··· 13946 14003 resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 13947 14004 integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 13948 14005 14006 + json-schema-ref-resolver@^3.0.0: 14007 + version "3.0.0" 14008 + resolved "https://registry.yarnpkg.com/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz#28f6a410122cde9238762a5e9296faa38be28708" 14009 + integrity sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A== 14010 + dependencies: 14011 + dequal "^2.0.3" 14012 + 13949 14013 json-schema-traverse@^0.4.1: 13950 14014 version "0.4.1" 13951 14015 resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" ··· 15027 15091 resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 15028 15092 integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== 15029 15093 15030 - minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 15094 + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 15031 15095 version "3.1.2" 15032 15096 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 15033 15097 integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== ··· 17756 17820 integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 17757 17821 dependencies: 17758 17822 glob "^7.1.3" 17759 - 17760 - rn-fetch-blob@^0.12.0: 17761 - version "0.12.0" 17762 - resolved "https://registry.yarnpkg.com/rn-fetch-blob/-/rn-fetch-blob-0.12.0.tgz#ec610d2f9b3f1065556b58ab9c106eeb256f3cba" 17763 - integrity sha512-+QnR7AsJ14zqpVVUbzbtAjq0iI8c9tCg49tIoKO2ezjzRunN7YL6zFSFSWZm6d+mE/l9r+OeDM3jmb2tBb2WbA== 17764 - dependencies: 17765 - base-64 "0.1.0" 17766 - glob "7.0.6" 17767 17823 17768 17824 roarr@^7.0.4: 17769 17825 version "7.15.1"