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 62 63 64 65 66 67 68 69 70 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 1x 1x 4x 4x 4x 4x 5x 1x 1x 1x 1x 1x 5x | import { LOG_ENDPOINT } from "./types/endpoints";
import { LogData } from "./types/event";
import { convertToSnakeCase } from "../utils";
 
 
/**
 * Logs a user interaction event related to an AI-generated suggestion.
 *
 * Converts the event data to snake_case and sends it to the backend logging service.
 *
 * @param logData - The data describing the user event to be logged.
 */
export function trackEvent(logData: LogData) {
  const logDataForBackend = convertToSnakeCase(logData);
 
  console.log("Logging data for event:", logDataForBackend.event);
 
  fetch(LOG_ENDPOINT, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(logDataForBackend),
  }).catch((err) => console.error("Failed to log data:", err));
}
 
/**
 * Fetches all logged user interaction events for a specific user.
 *
 * Supports optional filtering by user section ID and/or user class ID.
 *
 * @param userId - The unique ID of the user whose logs should be fetched.
 * @param userSectionId - (Optional) The section ID to filter logs by user section.
 * @param userClassId - (Optional) The class ID to filter logs by user class.
 * @returns A promise resolving to an object containing either the logs array or an error message.
 */
export async function getLogsByUser(
  userId: string,
  userSectionId?: string,
  userClassId?: string
): Promise<{ logs?: LogData[]; error?: string }> {
  try {
    const url = new URL(`${LOG_ENDPOINT}/${userId}`);
 
    if (userSectionId) {
      url.searchParams.append("user_section_id", userSectionId);
    }
 
    if (userClassId) {
      url.searchParams.append("user_class_id", userClassId);
    }
 
    const response = await fetch(url.toString(), {
      method: "GET",
      headers: { "Content-Type": "application/json" },
    });
 
    if (!response.ok) {
      throw new Error(`Failed to fetch logs: ${response.statusText}`);
    }
 
    const data = await response.json();
 
    return { logs: data.data };
  } catch (error) {
    console.error("Error fetching logs:", error);
    return {
      error: error instanceof Error ? error.message : "Unknown error occurred",
    };
  }
}
  |