Skip to content

Commit 8529f58

Browse files
committed
cloud: validate time stamps returned from gh api
1 parent 5030b02 commit 8529f58

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

src/extension/chatSessions/vscode-node/copilotCloudSessionsProvider.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,22 @@ export class CopilotCloudSessionsProvider extends Disposable implements vscode.C
381381
const prResults = await Promise.all(prFetches);
382382
const prMap = new Map(prResults.filter(r => r.pr).map(r => [r.globalId, r.pr!]));
383383

384+
const beginningOfTime = '0001-01-01T00:00:00Z';
385+
const validateISOTimestamp = (date: string | undefined): number | undefined => {
386+
try {
387+
if (!date || date === beginningOfTime) {
388+
return;
389+
}
390+
const time = new Date(date)?.getTime();
391+
if (!time || isNaN(time)) {
392+
return;
393+
}
394+
return time;
395+
} catch { }
396+
};
397+
398+
const createdAt = validateISOTimestamp(sessions[0].created_at);
399+
384400
// Create session items from latest sessions
385401
const sessionItems = await Promise.all(Array.from(latestSessionsMap.values()).map(async sessionItem => {
386402
const pr = prMap.get(sessionItem.resource_global_id);
@@ -394,10 +410,12 @@ export class CopilotCloudSessionsProvider extends Disposable implements vscode.C
394410
status: this.getSessionStatusFromSession(sessionItem),
395411
description: this.getPullRequestDescription(pr),
396412
tooltip: this.createPullRequestTooltip(pr),
397-
timing: {
398-
startTime: new Date(sessionItem.created_at).getTime(),
399-
endTime: sessionItem.completed_at ? new Date(sessionItem.completed_at).getTime() : undefined
400-
},
413+
...(createdAt ? {
414+
timing: {
415+
startTime: createdAt,
416+
endTime: validateISOTimestamp(sessionItem.completed_at),
417+
}
418+
} : {}),
401419
changes: {
402420
files: pr.files.totalCount,
403421
insertions: pr.additions,

0 commit comments

Comments
 (0)