useIssueUrl.tsx 1.05 KB
import { useRouter } from 'next/router';
import React from 'react';

import config from 'configs/app';

export default function useIssueUrl(backendVersion: string | undefined) {
  const [ isLoading, setIsLoading ] = React.useState(true);
  const router = useRouter();

  React.useEffect(() => {
    setIsLoading(false);
  }, [ ]);

  return React.useMemo(() => {
    if (isLoading) {
      return '';
    }

    const searchParams = new URLSearchParams({
      template: 'bug_report.yml',
      labels: 'triage',
      link: window.location.href,
      'backend-version': backendVersion || '',
      'frontend-version': [ config.UI.footer.frontendVersion, config.UI.footer.frontendCommit ].filter(Boolean).join('+'),
      'additional-information': `**User Agent:** ${ window.navigator.userAgent }`,
    });
    return `https://github.com/blockscout/blockscout/issues/new/?${ searchParams.toString() }`;
  // we need to update link whenever page url changes
  // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [ backendVersion, isLoading, router.asPath ]);

}