export function useApi()

in frontend/apps/quantgrid/src/app/hooks/useApi.ts [11:243]


export function useApi() {
  const { send } = useContext(ApiContext);

  const getProjects = useCallback(() => {
    send({ project_list_request: {} }, false);
  }, [send]);

  const getInputs = useCallback(() => {
    send({ input_list_request: {} }, false);
  }, [send]);

  const getFunctions = useCallback(() => {
    send({ function_request: {} }, false);
  }, [send]);

  const createProject = useCallback(
    (projectName: string) => {
      send(
        {
          create_project_request: {
            project_name: projectName,
          },
        },
        false,
        ApiAction.createProject
      );
    },
    [send]
  );

  const openProject = useCallback(
    (projectName: string) => {
      send(
        {
          open_project_request: {
            project_name: projectName,
          },
        },
        false,
        ApiAction.openProject
      );
    },
    [send]
  );

  const deleteProject = useCallback(
    (projectName: string) => {
      send(
        {
          delete_project_request: {
            project_name: projectName,
            version: defaultVersion,
          },
        },
        true,
        ApiAction.deleteProject
      );
    },
    [send]
  );

  const renameProject = useCallback(
    (projectName: string, newProjectName: string) => {
      send(
        {
          rename_project_request: {
            project_name: projectName,
            new_project_name: newProjectName,
            version: defaultVersion,
          },
        },
        true,
        ApiAction.renameProject
      );
    },
    [send]
  );

  const closeProject = useCallback(
    (projectName: string) => {
      send(
        {
          close_project_request: {
            project_name: projectName,
          },
        },
        false,
        ApiAction.closeProject
      );
    },
    [send]
  );

  const putWorksheet = useCallback(
    (
      projectName: string,
      sheetName: string,
      content?: string,
      isCurrentSheet = true
    ) => {
      send(
        {
          put_worksheet_request: {
            project_name: projectName,
            sheet_name: sheetName,
            content,
            version: defaultVersion,
          },
        },
        true,
        isCurrentSheet ? ApiAction.putSheet : ApiAction.putAnotherSheet
      );
    },
    [send]
  );

  const openWorksheet = useCallback(
    (projectName: string, sheetName: string) => {
      send(
        {
          open_worksheet_request: {
            project_name: projectName,
            sheet_name: sheetName,
          },
        },
        false,
        ApiAction.openSheet
      );
    },
    [send]
  );

  const renameWorksheet = useCallback(
    (projectName: string, oldSheetName: string, newSheetName: string) => {
      send(
        {
          rename_worksheet_request: {
            project_name: projectName,
            version: defaultVersion,
            old_sheet_name: oldSheetName,
            new_sheet_name: newSheetName,
          },
        },
        true,
        ApiAction.renameSheet
      );
    },
    [send]
  );

  const deleteWorksheet = useCallback(
    (projectName: string, sheetName: string) => {
      send(
        {
          delete_worksheet_request: {
            project_name: projectName,
            sheet_name: sheetName,
            version: defaultVersion,
          },
        },
        true,
        ApiAction.deleteSheet
      );
    },
    [send]
  );

  const closeWorksheet = useCallback(
    (projectName: string, sheetName: string) => {
      send(
        {
          close_worksheet_request: {
            project_name: projectName,
            sheet_name: sheetName,
          },
        },
        false,
        ApiAction.closeSheet
      );
    },
    [send]
  );

  const getViewport = useCallback(
    (projectName: string, viewports: Record<string, Viewport>) => {
      send(
        {
          viewport_request: {
            project_name: projectName,
            viewports,
          },
        },
        false
      );
    },
    [send]
  );

  const getDimensionalSchema = useCallback(
    (projectName: string, formula: string, isPanelInputsMetadata = false) => {
      send(
        {
          dimensional_schema_request: {
            project_name: projectName,
            formula,
          },
        },
        false,
        // we don't want to show errors which we collect after requesting all inputs in panel
        isPanelInputsMetadata ? ApiAction.panelInputsMetadata : undefined
      );
    },
    [send]
  );

  return {
    createProject,
    openProject,
    getDimensionalSchema,
    getProjects,
    deleteProject,
    renameProject,
    closeProject,
    putWorksheet,
    openWorksheet,
    renameWorksheet,
    deleteWorksheet,
    closeWorksheet,
    getViewport,
    getFunctions,
    getInputs,
  };
}