diff --git a/src/__puppeteer__/drive.test.js b/src/__puppeteer__/drive.test.js index 4179df1d..3309bf64 100644 --- a/src/__puppeteer__/drive.test.js +++ b/src/__puppeteer__/drive.test.js @@ -3,7 +3,7 @@ import { configureViewport, goto } from './utils'; const DEMO_DEVICE_URL = '/1d3dc3e03047b0c7'; const DEMO_ROUTE_URL = '/1d3dc3e03047b0c7/000000dd--455f14369d'; -const ZOOMED_DEMO_URL = '/1d3dc3e03047b0c7/000000dd--455f14369d/147082/290214'; +const ZOOMED_DEMO_URL = '/1d3dc3e03047b0c7/000000dd--455f14369d/109/423'; jest.setTimeout(60000); diff --git a/src/actions/history.js b/src/actions/history.js index d9fa87bb..6a86f2a1 100644 --- a/src/actions/history.js +++ b/src/actions/history.js @@ -19,8 +19,12 @@ export const onHistoryMiddleware = ({ dispatch, getState }) => (next) => async ( } const pathZoom = getZoom(action.payload.location.pathname); - if ((pathZoom !== state.zoom) && pathZoom) { + const pathSegmentRange = getSegmentRange(action.payload.location.pathname); + + if ((pathZoom !== state.zoom) && pathZoom && !pathSegmentRange) { const [start, end] = [pathZoom.start, pathZoom.end]; + + console.log('Fetching routes data for log ID conversion', pathDongleId, start, end); Drives.getRoutesSegments(pathDongleId, start, end).then((routesData) => { if (routesData && routesData.length > 0) { const log_id = routesData[0].fullname.split('|')[1]; @@ -34,7 +38,7 @@ export const onHistoryMiddleware = ({ dispatch, getState }) => (next) => async ( }); } - const pathSegmentRange = getSegmentRange(action.payload.location.pathname); + if (pathSegmentRange !== state.segmentRange) { dispatch(pushTimelineRange(pathSegmentRange?.log_id, pathSegmentRange?.start, pathSegmentRange?.end, false)); } diff --git a/src/actions/index.js b/src/actions/index.js index 6c186c2a..f3176e5d 100644 --- a/src/actions/index.js +++ b/src/actions/index.js @@ -118,7 +118,8 @@ function updateTimeline(state, dispatch, log_id, start, end, allowPathChange) { } if (allowPathChange) { - const desiredPath = urlForState(state.dongleId, log_id, start, end, false); + const desiredPath = urlForState(state.dongleId, log_id, Math.floor(start/1000), Math.floor(end/1000), false); + // const desiredPath = urlForState(state.dongleId, log_id, Math.floor(start), Math.floor(end), false); if (window.location.pathname !== desiredPath) { dispatch(push(desiredPath)); } diff --git a/src/url.js b/src/url.js index f2119118..75b8d592 100644 --- a/src/url.js +++ b/src/url.js @@ -15,7 +15,6 @@ export function getDongleID(pathname) { export function getZoom(pathname) { let parts = pathname.split('/'); parts = parts.filter((m) => m.length); - if (parts.length >= 3 && parts[0] !== 'auth') { return { start: Number(parts[1]), @@ -32,8 +31,8 @@ export function getSegmentRange(pathname) { if (parts.length >= 2 && logIdRegex.test(parts[1])) { return { log_id: parts[1], - start: Number(parts[2]), - end: Number(parts[3]), + start: Number(parts[2]) * 1000, + end: Number(parts[3]) * 1000, }; } return null;