useCodecovJwt.tsx 895 B

123456789101112131415161718192021222324252627282930313233343536
  1. import type {UseApiQueryOptions} from 'sentry/utils/queryClient';
  2. import {useApiQuery} from 'sentry/utils/queryClient';
  3. interface CodecovJWTResponse {
  4. token: string;
  5. }
  6. export function useCodecovJwt(
  7. orgSlug: string,
  8. options: Partial<UseApiQueryOptions<CodecovJWTResponse>> = {}
  9. ) {
  10. return useApiQuery<CodecovJWTResponse>([`/organizations/${orgSlug}/codecov-jwt/`], {
  11. staleTime: Infinity,
  12. retry: false,
  13. refetchOnWindowFocus: false,
  14. ...options,
  15. });
  16. }
  17. export function getCodecovJwtLink(
  18. source: string,
  19. jwtData?: CodecovJWTResponse
  20. ): string | undefined {
  21. if (!jwtData?.token) {
  22. return undefined;
  23. }
  24. const params = new URLSearchParams({
  25. state: jwtData.token,
  26. utm_medium: 'referral',
  27. utm_source: source,
  28. utm_campaign: 'sentry-codecov',
  29. utm_department: 'marketing',
  30. });
  31. return `https://app.codecov.io/login/?${params.toString()}`;
  32. }