Skip to content

Commit 705de8e

Browse files
sergeibbbeamodio
authored andcommitted
Handles deserialization of resetsOn dates in feedback context
Ensures that feedback context objects properly convert resetsOn fields from strings back to Date objects after deserialization. Prevents potential errors from invalid date strings by setting them to undefined and logging a warning. Improves robustness when restoring usage limits from metadata. (#4449, #4475)
1 parent 761dbe0 commit 705de8e

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

src/commands/aiFeedback.ts

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,22 @@ export class AIFeedbackPositiveCommand extends ActiveEditorCommand {
7272

7373
// Extract feedback context from metadata
7474
if (metadata.feedbackContext) {
75-
return metadata.feedbackContext as unknown as AIFeedbackContext;
75+
const context = metadata.feedbackContext as unknown as AIFeedbackContext;
76+
77+
// Convert resetsOn string back to Date if it exists
78+
if (context.usage?.limits?.resetsOn && typeof context.usage.limits.resetsOn === 'string') {
79+
const parsedDate = new Date(context.usage.limits.resetsOn);
80+
// Check if the parsed date is valid
81+
if (!isNaN(parsedDate.getTime())) {
82+
context.usage.limits.resetsOn = parsedDate;
83+
} else {
84+
// If invalid date, set to undefined to avoid errors
85+
(context.usage.limits as any).resetsOn = undefined;
86+
Logger.warn('AIFeedbackPositiveCommand', 'Invalid resetsOn date string, setting to undefined');
87+
}
88+
}
89+
90+
return context;
7691
}
7792

7893
return undefined;
@@ -113,7 +128,22 @@ export class AIFeedbackNegativeCommand extends ActiveEditorCommand {
113128

114129
// Extract feedback context from metadata
115130
if (metadata.feedbackContext) {
116-
return metadata.feedbackContext as unknown as AIFeedbackContext;
131+
const context = metadata.feedbackContext as unknown as AIFeedbackContext;
132+
133+
// Convert resetsOn string back to Date if it exists
134+
if (context.usage?.limits?.resetsOn && typeof context.usage.limits.resetsOn === 'string') {
135+
const parsedDate = new Date(context.usage.limits.resetsOn);
136+
// Check if the parsed date is valid
137+
if (!isNaN(parsedDate.getTime())) {
138+
context.usage.limits.resetsOn = parsedDate;
139+
} else {
140+
// If invalid date, set to undefined to avoid errors
141+
(context.usage.limits as any).resetsOn = undefined;
142+
Logger.warn('AIFeedbackNegativeCommand', 'Invalid resetsOn date string, setting to undefined');
143+
}
144+
}
145+
146+
return context;
117147
}
118148

119149
return undefined;

0 commit comments

Comments
 (0)