Skip to content

Commit 84dec2b

Browse files
committed
3.3.1: build
1 parent 7beaeaa commit 84dec2b

4 files changed

Lines changed: 10 additions & 115 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
Version 3.3.1
2+
=============
3+
* rebuild `dist/`
4+
15
Version 3.3.0
26
=============
37
* add `getCommacare` for commacare extended-warranty status

dist/billing.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ export async function cancelPrime(dongle_id) {
2020
dongle_id
2121
});
2222
}
23+
export async function getCommacare(dongle_id) {
24+
return request.get('v1/prime/commacare', {
25+
dongle_id
26+
});
27+
}
2328
export async function getStripeCheckout(dongle_id, sim_id, plan) {
2429
return request.post('v1/prime/stripe_checkout', {
2530
dongle_id,

dist/drives.js

Lines changed: 0 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import request from './request';
2-
const SEGMENT_LENGTH = 1000 * 60;
32
export function getSegmentMetadata(start, end, dongleId) {
43
return request.get(`v1/devices/${dongleId}/segments`, {
54
from: start,
@@ -47,117 +46,4 @@ export function listRoutes(dongleId, limit, createdAfter) {
4746
params.createdAfter = createdAfter;
4847
}
4948
return request.get(`v1/devices/${dongleId}/routes`, params);
50-
}
51-
function parseSegmentMetadata(start, end, segments) {
52-
const routeStartTimes = {};
53-
return segments.map(s => {
54-
const segment = {
55-
...s,
56-
duration: Math.round(s.end_time_utc_millis - s.start_time_utc_millis),
57-
offset: Math.round(s.start_time_utc_millis) - start
58-
};
59-
if (!routeStartTimes[s.canonical_route_name]) {
60-
segment.segment = Number(s.canonical_name.split('--')[2]);
61-
routeStartTimes[s.canonical_route_name] = segment.offset - SEGMENT_LENGTH * segment.segment;
62-
}
63-
segment.routeOffset = routeStartTimes[s.canonical_route_name];
64-
return segment;
65-
});
66-
}
67-
68-
// TODO: understand this and write tests
69-
function segmentsFromMetadata(segmentsData) {
70-
function finishSegment(segment) {
71-
if (!segment.hasVideo) {
72-
return;
73-
}
74-
const {
75-
videoAvailableBetweenOffsets
76-
} = segment;
77-
let lastVideoRange = videoAvailableBetweenOffsets[videoAvailableBetweenOffsets.length - 1];
78-
if (!lastVideoRange) {
79-
lastVideoRange = [segment.offset, segment.offset + segment.duration];
80-
}
81-
82-
// TODO: refactor
83-
// eslint-disable-next-line no-param-reassign
84-
segment.videoAvailableBetweenOffsets = [...videoAvailableBetweenOffsets.slice(0, videoAvailableBetweenOffsets.length - 1), [lastVideoRange[0], segment.offset + segment.duration]];
85-
}
86-
let segment = null;
87-
let videoStartOffset = null;
88-
const segments = [];
89-
segmentsData.forEach(s => {
90-
if (!s.url) {
91-
return;
92-
}
93-
if (!(s.proc_log === 40 || s.proc_qlog === 40)) {
94-
return;
95-
}
96-
const segmentHasDriverCamera = s.proc_dcamera >= 0;
97-
const segmentHasDriverCameraStream = s.proc_dcamera === 40;
98-
const segmentHasVideo = s.proc_camera === 40;
99-
if (segmentHasVideo && videoStartOffset === null) {
100-
videoStartOffset = s.offset;
101-
}
102-
if (!segment || segment.route !== s.canonical_route_name) {
103-
if (segment) {
104-
finishSegment(segment);
105-
}
106-
let {
107-
url
108-
} = s;
109-
const parts = url.split('/');
110-
if (Number.isFinite(Number(parts.pop()))) {
111-
// url has a number at the end
112-
url = parts.join('/');
113-
}
114-
segment = {
115-
dongleId: s.dongle_id,
116-
offset: s.offset - s.segment * SEGMENT_LENGTH,
117-
route: s.canonical_route_name,
118-
startTime: s.start_time_utc_millis,
119-
startCoord: [s.start_lng, s.start_lat],
120-
duration: 0,
121-
segments: 0,
122-
url: url.replace('chffrprivate.blob.core.windows.net', 'chffrprivate.azureedge.net'),
123-
events: [],
124-
videoAvailableBetweenOffsets: [],
125-
hasVideo: segmentHasVideo,
126-
deviceType: s.devicetype,
127-
hpgps: s.hpgps,
128-
hasDriverCamera: segmentHasDriverCamera,
129-
hasDriverCameraStream: segmentHasDriverCameraStream,
130-
locStart: '',
131-
locEnd: '',
132-
distanceMiles: 0.0,
133-
cameraStreamSegCount: 0,
134-
driverCameraStreamSegCount: 0
135-
};
136-
segments.push(segment);
137-
}
138-
if (!segmentHasVideo && videoStartOffset !== null) {
139-
segment.videoAvailableBetweenOffsets.push([videoStartOffset, s.offset]);
140-
videoStartOffset = null;
141-
}
142-
segment.hasVideo = segment.hasVideo || segmentHasVideo;
143-
segment.hasDriverCamera = segment.hasDriverCamera || segmentHasDriverCamera;
144-
segment.hasDriverCameraStream = segment.hasDriverCameraStream || segmentHasDriverCameraStream;
145-
segment.hpgps = segment.hpgps || s.hpgps;
146-
segment.duration = s.offset - segment.offset + s.duration;
147-
segment.segments = Math.max(segment.segments, Number(s.canonical_name.split('--').pop()) + 1);
148-
segment.events = segment.events.concat(s.events);
149-
segment.endCoord = [s.end_lng, s.end_lat];
150-
segment.distanceMiles += s.length;
151-
segment.cameraStreamSegCount += Math.floor(segmentHasVideo);
152-
segment.driverCameraStreamSegCount += Math.floor(segmentHasDriverCameraStream);
153-
});
154-
if (segment) {
155-
finishSegment(segment);
156-
}
157-
return segments;
158-
}
159-
export async function fetchRoutes(dongleId, start, end) {
160-
let segments = await getSegmentMetadata(start, end, dongleId);
161-
segments = parseSegmentMetadata(start, end, segments);
162-
return segmentsFromMetadata(segments).reverse();
16349
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@commaai/api",
3-
"version": "3.3.0",
3+
"version": "3.3.1",
44
"main": "src/index.js",
55
"browser": "dist/index.js",
66
"types": "index.d.ts",

0 commit comments

Comments
 (0)