|
1 |
| -import type { FC } from "react"; |
| 1 | +import { useEffect, type FC } from "react"; |
2 | 2 | import { Helmet } from "react-helmet-async";
|
3 | 3 | import { useQuery } from "react-query";
|
4 | 4 | import { Navigate, useLocation, useNavigate } from "react-router-dom";
|
@@ -26,10 +26,21 @@ export const LoginPage: FC = () => {
|
26 | 26 | const redirectTo = retrieveRedirect(location.search);
|
27 | 27 | const applicationName = getApplicationName();
|
28 | 28 | const navigate = useNavigate();
|
29 |
| - |
30 | 29 | const { metadata } = useEmbeddedMetadata();
|
31 | 30 | const buildInfoQuery = useQuery(buildInfo(metadata["build-info"]));
|
32 | 31 |
|
| 32 | + useEffect(() => { |
| 33 | + if (!buildInfoQuery.data || isSignedIn) { |
| 34 | + // isSignedIn already tracks with window.href! |
| 35 | + return; |
| 36 | + } |
| 37 | + // This uses `navigator.sendBeacon`, so navigating away will not prevent it! |
| 38 | + sendDeploymentEvent(buildInfoQuery.data, { |
| 39 | + type: "deployment_login", |
| 40 | + user_id: user?.id, |
| 41 | + }); |
| 42 | + }, [isSignedIn, buildInfoQuery.data, user?.id]); |
| 43 | + |
33 | 44 | if (isSignedIn) {
|
34 | 45 | if (buildInfoQuery.data) {
|
35 | 46 | // This uses `navigator.sendBeacon`, so window.href
|
@@ -85,15 +96,6 @@ export const LoginPage: FC = () => {
|
85 | 96 | isSigningIn={isSigningIn}
|
86 | 97 | onSignIn={async ({ email, password }) => {
|
87 | 98 | await signIn(email, password);
|
88 |
| - if (buildInfoQuery.data) { |
89 |
| - // This uses `navigator.sendBeacon`, so navigating away |
90 |
| - // will not prevent it! |
91 |
| - sendDeploymentEvent(buildInfoQuery.data, { |
92 |
| - type: "deployment_login", |
93 |
| - user_id: user?.id, |
94 |
| - }); |
95 |
| - } |
96 |
| - |
97 | 99 | navigate("/");
|
98 | 100 | }}
|
99 | 101 | />
|
|
0 commit comments