Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 9x 9x 9x 1x 1x 1x 8x 9x 6x 6x 8x 8x 8x 8x 8x 8x 8x 8x 8x 9x 9x 9x 9x 1x 1x 1x 1x 1x 1x 1x 9x 9x 9x | import { LogData, LogEvent } from "../api/types/event";
import { trackEvent } from "../api/log-api";
/**
* Represents a record of a user's incorrect suggestion selection.
*/
interface IncorrectUserChoice {
suggestion: string;
suggestionStartTime: number;
}
/**
* A map to store incorrect suggestions selected by each user.
* Keyed by user ID, with an array of incorrect choices per user.
*/
const incorrectUserChoices: Map<string, IncorrectUserChoice[]> = new Map();
/**
* Tracks when a user selects an incorrect suggestion.
*
* Logs a `USER_REJECT` event for telemetry and stores the incorrect selection
* along with the timestamp.
*
* @param userId - The unique identifier of the user.
* @param incorrectSuggestion - The incorrect suggestion the user selected.
*/
export function trackIncorrectChoices(userId: string, incorrectSuggestion: string): void {
/** Make sure that the user ID is real. */
if(!userId) {
console.warn("No User ID Detected.");
return;
}
/** Adds an array of incorrect user choices for a user and their ID if they are not in the map yet. */
if(!incorrectUserChoices.has(userId)){
incorrectUserChoices.set(userId, []);
}
/** Gets the user's incorrect choices and adds new incorrect choice to the user's array. */
incorrectUserChoices.get(userId)!.push({
suggestion: incorrectSuggestion,
suggestionStartTime: Date.now(),
});
/** Create log for when the user does not accept a code suggestion from the model. */
const logData: LogData = {
event: LogEvent.USER_REJECT,
timeLapse: 0,
metadata: { userId, incorrectSuggestion, incorrectAttempt: incorrectUserChoices.get(userId)?.length || 1 },
};
trackEvent(logData);
}
/**
* Retrieves all incorrect suggestions selected by a specific user.
*
* @param userId - The unique identifier of the user.
* @returns An array of `IncorrectUserChoice` entries representing the user's incorrect selections.
*/
export function getIncorrectChoices(userId: string): IncorrectUserChoice[] {
return incorrectUserChoices.get(userId) || [];
} |