From 504d8c95fb33906c4852ba699941ec0c04ee7789 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 24 Jul 2024 20:34:15 -0700 Subject: [PATCH] almost works --- src/actions/files.js | 22 +++++++++++------- src/components/DriveView/Media.jsx | 34 ++++++++++++++++++---------- src/components/Files/UploadQueue.jsx | 2 +- 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/actions/files.js b/src/actions/files.js index eb211af5..4452ef44 100644 --- a/src/actions/files.js +++ b/src/actions/files.js @@ -6,12 +6,12 @@ import * as Types from './types'; import { deviceOnCellular, getDeviceFromState, deviceVersionAtLeast, asyncSleep } from '../utils'; export const FILE_NAMES = { - qcameras: 'qcamera.ts', - cameras: 'fcamera.hevc', - dcameras: 'dcamera.hevc', - ecameras: 'ecamera.hevc', - qlogs: 'qlog.bz2', - logs: 'rlog.bz2', + qcameras: ['qcamera.ts'], + cameras: ['fcamera.hevc'], + dcameras: ['dcamera.hevc'], + ecameras: ['ecamera.hevc'], + qlogs: ['qlog.bz2'], + logs: ['rlog.bz2', 'rlog.zst'], }; const MAX_OPEN_REQUESTS = 15; const MAX_RETRIES = 5; @@ -21,7 +21,8 @@ let openRequests = 0; function pathToFileName(dongleId, path) { const [seg, fileType] = path.split('/'); - const type = Object.entries(FILE_NAMES).find((e) => e[1] === fileType)[0]; + const type = Object.entries(FILE_NAMES).find((e) => e[1].includes(fileType))[0]; + console.log('pathToFileName', path, type) return `${dongleId}|${seg}/${type}`; } @@ -97,6 +98,7 @@ export function fetchFiles(routeName, nocache = false) { let files; try { files = await Raw.getRouteFiles(routeName, nocache); + console.log('files', files) } catch (err) { console.error(err); Sentry.captureException(err, { fingerprint: 'action_files_fetch_files' }); @@ -117,6 +119,7 @@ export function fetchFiles(routeName, nocache = false) { }; return state; }, {}); + console.log('urls', urls) dispatch({ type: Types.ACTION_FILES_URLS, @@ -169,7 +172,7 @@ export function fetchUploadQueue(dongleId) { const segNum = urlParts[urlParts.length - 2]; const datetime = urlParts[urlParts.length - 3]; const dongle = urlParts[urlParts.length - 4]; - const type = Object.entries(FILE_NAMES).find((e) => e[1] === filename)[0]; + const type = Object.entries(FILE_NAMES).find((e) => e[1].includes(filename))[0]; const fileName = `${dongle}|${datetime}--${segNum}/${type}`; const waitingWifi = Boolean(deviceOnCellular(device) && uploading.allow_cellular === false); uploadingFiles[fileName] = { @@ -295,6 +298,7 @@ export function doUpload(dongleId, fileNames, paths, urls) { export function fetchAthenaQueue(dongleId) { return async (dispatch) => { + console.log('fetchAthenaQueue') let queue; try { queue = await Devices.getAthenaQueue(dongleId); @@ -312,10 +316,12 @@ export function fetchAthenaQueue(dongleId) { if (q.method === 'uploadFileToUrl') { const fileName = pathToFileName(dongleId, q.params[0]); + console.log('uploadFileToUrl', q.params[0], fileName) newUploading[fileName] = { progress: 0, current: false }; } else if (q.method === 'uploadFilesToUrls') { for (const { fn } of q.params.files_data) { const fileName = pathToFileName(dongleId, fn); + console.log(['uploadFilesToUrls', fn, fileName]) newUploading[fileName] = { progress: 0, current: false }; } } diff --git a/src/components/DriveView/Media.jsx b/src/components/DriveView/Media.jsx index 055a48d9..64e860ff 100644 --- a/src/components/DriveView/Media.jsx +++ b/src/components/DriveView/Media.jsx @@ -334,16 +334,19 @@ class Media extends Component { })); const routeNoDongleId = currentRoute.fullname.split('|')[1]; - const path = `${routeNoDongleId}--${getSegmentNumber(currentRoute)}/${FILE_NAMES[type]}`; - const fileName = `${dongleId}|${routeNoDongleId}--${getSegmentNumber(currentRoute)}/${type}`; - - const uploading = {}; - uploading[fileName] = { requested: true }; - this.props.dispatch(updateFiles(uploading)); - - const urls = await fetchUploadUrls(dongleId, [path]); - if (urls) { - this.props.dispatch(doUpload(dongleId, [fileName], [path], urls)); + // request any possible file names + for (let fn of FILE_NAMES[type]){ + const path = `${routeNoDongleId}--${getSegmentNumber(currentRoute)}/${fn}`; + const fileName = `${dongleId}|${routeNoDongleId}--${getSegmentNumber(currentRoute)}/${type}`; + + const uploading = {}; + uploading[fileName] = { requested: true }; + this.props.dispatch(updateFiles(uploading)); + + const urls = await fetchUploadUrls(dongleId, [path]); + if (urls) { + this.props.dispatch(doUpload(dongleId, [fileName], [path], urls)); + } } } @@ -376,10 +379,17 @@ class Media extends Component { } this.props.dispatch(updateFiles(uploading)); - const paths = Object.keys(uploading).map((fileName) => { + // const paths = Object.keys(uploading).map((fileName) => { + // const [seg, type] = fileName.split('/'); + // console.log('returning', `${seg.split('|')[1]}/${FILE_NAMES[type]}`) + // return `${seg.split('|')[1]}/${FILE_NAMES[type]}`; + // }); + + const paths = Object.keys(uploading).flatMap((fileName) => { const [seg, type] = fileName.split('/'); - return `${seg.split('|')[1]}/${FILE_NAMES[type]}`; + return FILE_NAMES[type].map(file => `${seg.split('|')[1]}/${file}`); }); + console.log('paths v2', paths) const urls = await fetchUploadUrls(dongleId, paths); if (urls) { diff --git a/src/components/Files/UploadQueue.jsx b/src/components/Files/UploadQueue.jsx index eaa62d06..15043f43 100644 --- a/src/components/Files/UploadQueue.jsx +++ b/src/components/Files/UploadQueue.jsx @@ -238,7 +238,7 @@ class UploadQueue extends Component { - { FILE_NAMES[type].split('.')[0].substring(0, logNameLength) } + { FILE_NAMES[type][0].split('.')[0].substring(0, logNameLength) } { upload.current ? (