Skip to content

Commit c2d6c83

Browse files
committed
feat: add support for timeout, request progress and start
1 parent 2694fd9 commit c2d6c83

File tree

2 files changed

+40
-5
lines changed

2 files changed

+40
-5
lines changed

packages/network-activity-plugin/src/react-native/http/request-tracker.ts

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ const getInitiatorFromStack = (): {
186186
};
187187

188188
/**
189-
* Shared function to handle request overrides.
190189
* Applies override body and status to XMLHttpRequest objects.
191190
*/
192191
export const setupRequestOverride = (
@@ -223,10 +222,6 @@ export const setupRequestOverride = (
223222
});
224223
};
225224

226-
/**
227-
* Shared function to set up request tracking for an XHR request.
228-
* Used by both boot-time interception and normal runtime interception.
229-
*/
230225
export const setupRequestTracking = (
231226
queuedClient: QueuedClientWrapper,
232227
networkRequestsRegistry: NetworkRequestRegistry,
@@ -255,6 +250,23 @@ export const setupRequestTracking = (
255250
initiator,
256251
});
257252

253+
request.addEventListener('loadstart', () => {
254+
queuedClient.send('request-loadstart', {
255+
requestId: requestId,
256+
timestamp: Date.now(),
257+
});
258+
});
259+
260+
request.addEventListener('progress', (event) => {
261+
queuedClient.send('request-progress', {
262+
requestId: requestId,
263+
timestamp: Date.now(),
264+
loaded: event.loaded,
265+
total: event.total,
266+
lengthComputable: event.lengthComputable,
267+
});
268+
});
269+
258270
request.addEventListener('readystatechange', () => {
259271
if (request.readyState === READY_STATE_HEADERS_RECEIVED) {
260272
ttfb = Date.now() - sendTime;
@@ -309,4 +321,14 @@ export const setupRequestTracking = (
309321
canceled: true,
310322
});
311323
});
324+
325+
request.addEventListener('timeout', () => {
326+
queuedClient.send('request-failed', {
327+
requestId: requestId,
328+
timestamp: Date.now(),
329+
type: 'XHR',
330+
error: 'Timeout',
331+
canceled: false,
332+
});
333+
});
312334
};

packages/network-activity-plugin/src/shared/client.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,19 @@ export type NetworkActivityEventMap = {
136136
canceled: boolean;
137137
};
138138

139+
'request-loadstart': {
140+
requestId: RequestId;
141+
timestamp: Timestamp;
142+
};
143+
144+
'request-progress': {
145+
requestId: RequestId;
146+
timestamp: Timestamp;
147+
loaded: number;
148+
total: number;
149+
lengthComputable: boolean;
150+
};
151+
139152
'get-response-body': {
140153
requestId: RequestId;
141154
};

0 commit comments

Comments
 (0)