useAppAnalytics.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { useContext } from "react";
  2. import { Context } from "shared/Context";
  3. import api from "shared/api";
  4. type AppStep =
  5. | "stack-launch-start"
  6. | "stack-launch-complete"
  7. | "stack-launch-success"
  8. | "stack-launch-failure"
  9. | "stack-deletion"
  10. | "porter-app-update-failure";
  11. export const useAppAnalytics = () => {
  12. const { currentCluster, currentProject } = useContext(Context);
  13. const updateAppStep = async ({
  14. appName,
  15. step,
  16. errorMessage = "",
  17. errorStackTrace = "",
  18. deleteWorkflow = false,
  19. }: {
  20. appName?: string;
  21. step: AppStep;
  22. errorMessage?: string;
  23. deleteWorkflow?: boolean;
  24. errorStackTrace?: string;
  25. }) => {
  26. try {
  27. if (!currentCluster?.id || !currentProject?.id) {
  28. return;
  29. }
  30. await api.updateStackStep(
  31. "<token>",
  32. {
  33. step,
  34. stack_name: appName,
  35. error_message: errorMessage,
  36. error_stack_trace: errorStackTrace,
  37. delete_workflow_file: deleteWorkflow,
  38. },
  39. {
  40. cluster_id: currentCluster.id,
  41. project_id: currentProject.id,
  42. }
  43. );
  44. } catch (err) { }
  45. };
  46. return {
  47. updateAppStep,
  48. };
  49. };