Files
element-call/src/auth/RegisterPage.tsx

258 lines
8.6 KiB
TypeScript
Raw Normal View History

2021-08-20 16:23:12 -07:00
/*
Copyright 2021-2024 New Vector Ltd.
2021-08-20 16:23:12 -07:00
SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
2021-08-20 16:23:12 -07:00
*/
import {
type ChangeEvent,
type FC,
type FormEvent,
2022-05-27 16:48:38 -04:00
useCallback,
useEffect,
useRef,
useState,
} from "react";
2025-01-06 18:00:20 +01:00
import { useNavigate, useLocation } from "react-router-dom";
import { captureException } from "@sentry/react";
import { sleep } from "matrix-js-sdk/src/utils";
2022-10-10 09:19:10 -04:00
import { Trans, useTranslation } from "react-i18next";
import { logger } from "matrix-js-sdk/src/logger";
import { Button, Text } from "@vector-im/compound-web";
2022-05-27 16:48:38 -04:00
2022-01-05 17:27:01 -08:00
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
import { useClientLegacy } from "../ClientContext";
2022-01-05 16:47:53 -08:00
import { useInteractiveRegistration } from "./useInteractiveRegistration";
import styles from "./LoginPage.module.css";
2023-09-27 19:06:10 -04:00
import Logo from "../icons/LogoLarge.svg?react";
2022-01-05 16:34:01 -08:00
import { LoadingView } from "../FullScreenView";
import { useRecaptcha } from "./useRecaptcha";
2022-02-02 15:02:40 -08:00
import { usePageTitle } from "../usePageTitle";
import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
2022-12-20 17:26:45 +00:00
import { Config } from "../config/Config";
import { ExternalLink, Link } from "../button/Link";
2021-08-20 16:23:12 -07:00
2022-05-27 16:48:38 -04:00
export const RegisterPage: FC = () => {
2022-10-10 09:19:10 -04:00
const { t } = useTranslation();
``` move "{{count, number}}_one" "participant_count_one" move "{{count, number}}_other" "participant_count_other" move "{{count}} stars_one" "star_rating_input_label_one" move "{{count}} stars_other" "star_rating_input_label_other" move "{{displayName}} is presenting" "video_tile.presenter_label" move "{{displayName}}, your call has ended." "call_ended_view.headline" move "<0></0><1></1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call." "settings.opt_in_description" move "<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>" "register_auth_links" move "<0>Create an account</0> Or <2>Access as a guest</2>" "login_auth_links" move "<0>Oops, something's gone wrong.</0>" "full_screen_view_h1" move "<0>Submitting debug logs will help us track down the problem.</0>" "full_screen_view_description" move "<0>Thanks for your feedback!</0>" "call_ended_view.feedback_done" move "<0>We'd love to hear your feedback so we can improve your experience.</0>" "call_ended_view.feedback_prompt" move "<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>" "call_ended_view.create_account_prompt" move "Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log." "rageshake_request_modal.body" move "Back to recents" "lobby.leave_button" move "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <5>Cookie Policy</5>." "analytics_notice" move "Call not found" "group_call_loader_failed_heading" move "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key." "group_call_loader_failed_text" move "Confirm password" "register_confirm_password_label" move "Connectivity to the server has been lost." "disconnected_banner" move "Continue in browser" "app_selection_modal.continue_in_browser" move "Create account" "call_ended_view.create_account_button" move "Debug log request" "rageshake_request_modal.title" move "Developer" "settings.developer_tab_title" move "Developer Settings" "settings.developer_settings_label" move "Element Call Home" "header_label" move "End call" "hangup_button_label" move "Full screen" "fullscreen_button_label" move "Exit full screen" "exit_fullscreen_button_label" move "Expose developer settings in the settings window." "settings.developer_settings_label_description" move "Feedback" "settings.feedback_tab_title" move "Grid" "layout_grid_label" move "Spotlight" "layout_spotlight_label" move "How did it go?" "call_ended_view.survey_prompt" move "If you are experiencing issues or simply would like to provide some feedback, please send us a short description below." "settings.feedback_tab_body" move "Include debug logs" "settings.feedback_tab_send_logs_label" move "Invite to this call" "invite_modal.title" move "Join call" "lobby.join_button" move "Join call now" "room_auth_view_join_button" move "Join existing call?" "join_existing_call_modal.title" move "Link copied to clipboard" "invite_modal.link_copied_toast" move "Local volume" "local_volume_label" move "Logging in…" "logging_in" move "Login" "login_title" move "Login to your account" "unauthenticated_view_login_button" move "Microphone off" "microphone_off" move "Microphone on" "microphone_on" move "More" "settings.more_tab_title" move "Mute microphone" "mute_microphone_button_label" move "Name of call" "call_name" move "Not now, return to home screen" "call_ended_view.not_now_button" move "Open in the app" "app_selection_modal.open_in_app" move "Not registered yet? <2>Create an account</2>" "unauthenticated_view_body" move "Participants" "header_participants_label" move "Passwords must match" "register.passwords_must_match" move "Ready to join?" "app_selection_modal.text" move "Recaptcha dismissed" "recaptcha_dismissed" move "Recaptcha not loaded" "recaptcha_not_loaded" move "Reconnect" "call_ended_view.reconnect_button" move "Registering…" "register.registering" move "Retry sending logs" "rageshake_button_error_caption" move "Return to home screen" "return_home_button" move "Select an option" "select_input_unset_button" move "Select app" "app_selection_modal.title" move "Send debug logs" "rageshake_send_logs" move "Sending debug logs…" "rageshake_sending_logs" move "Sending…" "rageshake_sending" move "Share screen" "screenshare_button_label" move "Sharing screen" "stop_screenshare_button_label" move "Show connection stats" "settings.show_connection_stats_label" move "Speaker" "settings.speaker_device_selection_label" move "Start new call" "start_new_call" move "Start video" "start_video_button_label" move "Stop video" "stop_video_button_label" move "Submit feedback" "settings.feedback_tab_h4" move "Submitting…" "submitting" move "Thanks, we received your feedback!" "settings.feedback_tab_thank_you" move "Thanks!" "rageshake_sent" move "This application has been opened in another tab." "application_opened_another_tab" move "This call already exists, would you like to join?" "join_existing_call_modal.text" move "Unmute microphone" "unmute_microphone_button_label" move "Version: {{version}}" "version" move "Waiting for other participants…" "waiting_for_participants" move "Yes, join call" "join_existing_call_modal.join_button" move "You" "video_tile.sfu_participant_local" move "You were disconnected from the call" "call_ended_view.body" move "Your feedback" "settings.feedback_tab_description_label" move "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" "browser_media_e2ee_unsupported" move "By clicking \"Go\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "unauthenticated_view_eula_caption" move "By clicking \"Join call now\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "room_auth_view_eula_caption" move "This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>End User Licensing Agreement (EULA)</12>" "register.recaptcha_caption" ```
2023-11-20 13:00:43 +00:00
usePageTitle(t("action.register"));
2022-02-02 15:02:40 -08:00
const { loading, authenticated, passwordlessUser, client, setClient } =
useClientLegacy();
const confirmPasswordRef = useRef<HTMLInputElement>(null);
2025-01-06 18:00:20 +01:00
const navigate = useNavigate();
2021-08-20 16:23:12 -07:00
const location = useLocation();
const [registering, setRegistering] = useState(false);
2022-05-27 16:48:38 -04:00
const [error, setError] = useState<Error>();
2021-12-15 11:10:38 -08:00
const [password, setPassword] = useState("");
const [passwordConfirmation, setPasswordConfirmation] = useState("");
const { recaptchaKey, register } = useInteractiveRegistration(client);
2022-01-05 16:34:01 -08:00
const { execute, reset, recaptchaId } = useRecaptcha(recaptchaKey);
2021-08-20 16:23:12 -07:00
const onSubmitRegisterForm = useCallback(
2022-05-27 16:48:38 -04:00
(e: FormEvent<HTMLFormElement>) => {
2021-08-20 16:23:12 -07:00
e.preventDefault();
2022-05-27 16:48:38 -04:00
const data = new FormData(e.target as HTMLFormElement);
const userName = data.get("userName") as string;
const password = data.get("password") as string;
const passwordConfirmation = data.get("passwordConfirmation") as string;
2022-05-27 16:48:38 -04:00
if (password !== passwordConfirmation) return;
const submit = async (): Promise<void> => {
2021-12-20 15:56:39 -08:00
setRegistering(true);
2022-02-15 12:46:58 -08:00
const recaptchaResponse = await execute();
const [newClient, session] = await register(
2022-02-15 12:46:58 -08:00
userName,
password,
userName,
recaptchaResponse,
2023-10-11 10:42:04 -04:00
passwordlessUser,
2022-02-15 12:46:58 -08:00
);
if (client && client?.groupCallEventHandler && passwordlessUser) {
2022-05-27 16:48:38 -04:00
// Migrate the user's rooms
for (const groupCall of client.groupCallEventHandler.groupCalls.values()) {
const roomId = groupCall.room.roomId;
2022-02-15 12:46:58 -08:00
try {
await newClient.joinRoom(roomId);
} catch (error) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (error.errcode === "M_LIMIT_EXCEEDED") {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
await sleep(error.data.retry_after_ms);
await newClient.joinRoom(roomId);
} else {
captureException(error);
logger.error(`Couldn't join room ${roomId}`, error);
}
2022-02-15 12:46:58 -08:00
}
}
2021-12-20 15:56:39 -08:00
}
setClient?.({ client: newClient, session });
PosthogAnalytics.instance.eventSignup.cacheSignupEnd(new Date());
2022-05-27 16:48:38 -04:00
};
2022-01-05 16:34:01 -08:00
submit()
.then(async () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
2022-05-27 16:48:38 -04:00
if (location.state?.from) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
await navigate(location.state?.from);
2022-01-05 16:34:01 -08:00
} else {
await navigate("/");
2022-01-05 16:34:01 -08:00
}
})
.catch((error) => {
setError(error);
setRegistering(false);
reset();
});
2021-08-20 16:23:12 -07:00
},
2022-05-27 16:48:38 -04:00
[
register,
location,
2025-01-06 18:00:20 +01:00
navigate,
passwordlessUser,
2022-05-27 16:48:38 -04:00
reset,
execute,
client,
setClient,
2023-10-11 10:42:04 -04:00
],
2021-08-20 16:23:12 -07:00
);
2021-12-15 11:10:38 -08:00
useEffect(() => {
if (password && passwordConfirmation && password !== passwordConfirmation) {
``` move "{{count, number}}_one" "participant_count_one" move "{{count, number}}_other" "participant_count_other" move "{{count}} stars_one" "star_rating_input_label_one" move "{{count}} stars_other" "star_rating_input_label_other" move "{{displayName}} is presenting" "video_tile.presenter_label" move "{{displayName}}, your call has ended." "call_ended_view.headline" move "<0></0><1></1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call." "settings.opt_in_description" move "<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>" "register_auth_links" move "<0>Create an account</0> Or <2>Access as a guest</2>" "login_auth_links" move "<0>Oops, something's gone wrong.</0>" "full_screen_view_h1" move "<0>Submitting debug logs will help us track down the problem.</0>" "full_screen_view_description" move "<0>Thanks for your feedback!</0>" "call_ended_view.feedback_done" move "<0>We'd love to hear your feedback so we can improve your experience.</0>" "call_ended_view.feedback_prompt" move "<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>" "call_ended_view.create_account_prompt" move "Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log." "rageshake_request_modal.body" move "Back to recents" "lobby.leave_button" move "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <5>Cookie Policy</5>." "analytics_notice" move "Call not found" "group_call_loader_failed_heading" move "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key." "group_call_loader_failed_text" move "Confirm password" "register_confirm_password_label" move "Connectivity to the server has been lost." "disconnected_banner" move "Continue in browser" "app_selection_modal.continue_in_browser" move "Create account" "call_ended_view.create_account_button" move "Debug log request" "rageshake_request_modal.title" move "Developer" "settings.developer_tab_title" move "Developer Settings" "settings.developer_settings_label" move "Element Call Home" "header_label" move "End call" "hangup_button_label" move "Full screen" "fullscreen_button_label" move "Exit full screen" "exit_fullscreen_button_label" move "Expose developer settings in the settings window." "settings.developer_settings_label_description" move "Feedback" "settings.feedback_tab_title" move "Grid" "layout_grid_label" move "Spotlight" "layout_spotlight_label" move "How did it go?" "call_ended_view.survey_prompt" move "If you are experiencing issues or simply would like to provide some feedback, please send us a short description below." "settings.feedback_tab_body" move "Include debug logs" "settings.feedback_tab_send_logs_label" move "Invite to this call" "invite_modal.title" move "Join call" "lobby.join_button" move "Join call now" "room_auth_view_join_button" move "Join existing call?" "join_existing_call_modal.title" move "Link copied to clipboard" "invite_modal.link_copied_toast" move "Local volume" "local_volume_label" move "Logging in…" "logging_in" move "Login" "login_title" move "Login to your account" "unauthenticated_view_login_button" move "Microphone off" "microphone_off" move "Microphone on" "microphone_on" move "More" "settings.more_tab_title" move "Mute microphone" "mute_microphone_button_label" move "Name of call" "call_name" move "Not now, return to home screen" "call_ended_view.not_now_button" move "Open in the app" "app_selection_modal.open_in_app" move "Not registered yet? <2>Create an account</2>" "unauthenticated_view_body" move "Participants" "header_participants_label" move "Passwords must match" "register.passwords_must_match" move "Ready to join?" "app_selection_modal.text" move "Recaptcha dismissed" "recaptcha_dismissed" move "Recaptcha not loaded" "recaptcha_not_loaded" move "Reconnect" "call_ended_view.reconnect_button" move "Registering…" "register.registering" move "Retry sending logs" "rageshake_button_error_caption" move "Return to home screen" "return_home_button" move "Select an option" "select_input_unset_button" move "Select app" "app_selection_modal.title" move "Send debug logs" "rageshake_send_logs" move "Sending debug logs…" "rageshake_sending_logs" move "Sending…" "rageshake_sending" move "Share screen" "screenshare_button_label" move "Sharing screen" "stop_screenshare_button_label" move "Show connection stats" "settings.show_connection_stats_label" move "Speaker" "settings.speaker_device_selection_label" move "Start new call" "start_new_call" move "Start video" "start_video_button_label" move "Stop video" "stop_video_button_label" move "Submit feedback" "settings.feedback_tab_h4" move "Submitting…" "submitting" move "Thanks, we received your feedback!" "settings.feedback_tab_thank_you" move "Thanks!" "rageshake_sent" move "This application has been opened in another tab." "application_opened_another_tab" move "This call already exists, would you like to join?" "join_existing_call_modal.text" move "Unmute microphone" "unmute_microphone_button_label" move "Version: {{version}}" "version" move "Waiting for other participants…" "waiting_for_participants" move "Yes, join call" "join_existing_call_modal.join_button" move "You" "video_tile.sfu_participant_local" move "You were disconnected from the call" "call_ended_view.body" move "Your feedback" "settings.feedback_tab_description_label" move "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" "browser_media_e2ee_unsupported" move "By clicking \"Go\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "unauthenticated_view_eula_caption" move "By clicking \"Join call now\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "room_auth_view_eula_caption" move "This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>End User Licensing Agreement (EULA)</12>" "register.recaptcha_caption" ```
2023-11-20 13:00:43 +00:00
confirmPasswordRef.current?.setCustomValidity(
t("register.passwords_must_match"),
);
2021-12-15 11:10:38 -08:00
} else {
2022-05-27 16:48:38 -04:00
confirmPasswordRef.current?.setCustomValidity("");
2021-12-15 11:10:38 -08:00
}
2022-10-10 09:19:10 -04:00
}, [password, passwordConfirmation, t]);
2021-12-15 11:10:38 -08:00
useEffect(() => {
if (!loading && authenticated && !passwordlessUser && !registering) {
navigate("/")?.catch((error) => {
logger.error("Failed to navigate to /", error);
});
}
2025-01-06 18:00:20 +01:00
}, [loading, navigate, authenticated, passwordlessUser, registering]);
if (loading) {
return <LoadingView />;
} else {
PosthogAnalytics.instance.eventSignup.cacheSignupStart(new Date());
}
2021-08-20 16:23:12 -07:00
return (
<>
<div className={styles.container}>
<div className={styles.content}>
<div className={styles.formContainer}>
<Logo width="auto" height="auto" className={styles.logo} />
2023-11-22 20:07:15 +00:00
<h2>{t("register_heading")}</h2>
<form onSubmit={onSubmitRegisterForm}>
<FieldRow>
<InputField
type="text"
name="userName"
placeholder={t("common.username")}
label={t("common.username")}
autoCorrect="off"
autoCapitalize="none"
2021-12-15 10:54:01 -08:00
prefix="@"
2022-12-20 17:26:45 +00:00
suffix={`:${Config.defaultServerName()}`}
data-testid="register_username"
/>
</FieldRow>
<FieldRow>
<InputField
2021-12-15 11:10:38 -08:00
required
name="password"
type="password"
onChange={(e: ChangeEvent<HTMLInputElement>): void =>
2022-08-09 11:44:46 +02:00
setPassword(e.target.value)
}
2021-12-15 11:10:38 -08:00
value={password}
placeholder={t("common.password")}
label={t("common.password")}
data-testid="register_password"
/>
</FieldRow>
2021-12-15 11:10:38 -08:00
<FieldRow>
<InputField
required
type="password"
name="passwordConfirmation"
onChange={(e: ChangeEvent<HTMLInputElement>): void =>
2022-08-09 11:44:46 +02:00
setPasswordConfirmation(e.target.value)
}
2021-12-15 11:10:38 -08:00
value={passwordConfirmation}
``` move "{{count, number}}_one" "participant_count_one" move "{{count, number}}_other" "participant_count_other" move "{{count}} stars_one" "star_rating_input_label_one" move "{{count}} stars_other" "star_rating_input_label_other" move "{{displayName}} is presenting" "video_tile.presenter_label" move "{{displayName}}, your call has ended." "call_ended_view.headline" move "<0></0><1></1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call." "settings.opt_in_description" move "<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>" "register_auth_links" move "<0>Create an account</0> Or <2>Access as a guest</2>" "login_auth_links" move "<0>Oops, something's gone wrong.</0>" "full_screen_view_h1" move "<0>Submitting debug logs will help us track down the problem.</0>" "full_screen_view_description" move "<0>Thanks for your feedback!</0>" "call_ended_view.feedback_done" move "<0>We'd love to hear your feedback so we can improve your experience.</0>" "call_ended_view.feedback_prompt" move "<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>" "call_ended_view.create_account_prompt" move "Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log." "rageshake_request_modal.body" move "Back to recents" "lobby.leave_button" move "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <5>Cookie Policy</5>." "analytics_notice" move "Call not found" "group_call_loader_failed_heading" move "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key." "group_call_loader_failed_text" move "Confirm password" "register_confirm_password_label" move "Connectivity to the server has been lost." "disconnected_banner" move "Continue in browser" "app_selection_modal.continue_in_browser" move "Create account" "call_ended_view.create_account_button" move "Debug log request" "rageshake_request_modal.title" move "Developer" "settings.developer_tab_title" move "Developer Settings" "settings.developer_settings_label" move "Element Call Home" "header_label" move "End call" "hangup_button_label" move "Full screen" "fullscreen_button_label" move "Exit full screen" "exit_fullscreen_button_label" move "Expose developer settings in the settings window." "settings.developer_settings_label_description" move "Feedback" "settings.feedback_tab_title" move "Grid" "layout_grid_label" move "Spotlight" "layout_spotlight_label" move "How did it go?" "call_ended_view.survey_prompt" move "If you are experiencing issues or simply would like to provide some feedback, please send us a short description below." "settings.feedback_tab_body" move "Include debug logs" "settings.feedback_tab_send_logs_label" move "Invite to this call" "invite_modal.title" move "Join call" "lobby.join_button" move "Join call now" "room_auth_view_join_button" move "Join existing call?" "join_existing_call_modal.title" move "Link copied to clipboard" "invite_modal.link_copied_toast" move "Local volume" "local_volume_label" move "Logging in…" "logging_in" move "Login" "login_title" move "Login to your account" "unauthenticated_view_login_button" move "Microphone off" "microphone_off" move "Microphone on" "microphone_on" move "More" "settings.more_tab_title" move "Mute microphone" "mute_microphone_button_label" move "Name of call" "call_name" move "Not now, return to home screen" "call_ended_view.not_now_button" move "Open in the app" "app_selection_modal.open_in_app" move "Not registered yet? <2>Create an account</2>" "unauthenticated_view_body" move "Participants" "header_participants_label" move "Passwords must match" "register.passwords_must_match" move "Ready to join?" "app_selection_modal.text" move "Recaptcha dismissed" "recaptcha_dismissed" move "Recaptcha not loaded" "recaptcha_not_loaded" move "Reconnect" "call_ended_view.reconnect_button" move "Registering…" "register.registering" move "Retry sending logs" "rageshake_button_error_caption" move "Return to home screen" "return_home_button" move "Select an option" "select_input_unset_button" move "Select app" "app_selection_modal.title" move "Send debug logs" "rageshake_send_logs" move "Sending debug logs…" "rageshake_sending_logs" move "Sending…" "rageshake_sending" move "Share screen" "screenshare_button_label" move "Sharing screen" "stop_screenshare_button_label" move "Show connection stats" "settings.show_connection_stats_label" move "Speaker" "settings.speaker_device_selection_label" move "Start new call" "start_new_call" move "Start video" "start_video_button_label" move "Stop video" "stop_video_button_label" move "Submit feedback" "settings.feedback_tab_h4" move "Submitting…" "submitting" move "Thanks, we received your feedback!" "settings.feedback_tab_thank_you" move "Thanks!" "rageshake_sent" move "This application has been opened in another tab." "application_opened_another_tab" move "This call already exists, would you like to join?" "join_existing_call_modal.text" move "Unmute microphone" "unmute_microphone_button_label" move "Version: {{version}}" "version" move "Waiting for other participants…" "waiting_for_participants" move "Yes, join call" "join_existing_call_modal.join_button" move "You" "video_tile.sfu_participant_local" move "You were disconnected from the call" "call_ended_view.body" move "Your feedback" "settings.feedback_tab_description_label" move "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" "browser_media_e2ee_unsupported" move "By clicking \"Go\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "unauthenticated_view_eula_caption" move "By clicking \"Join call now\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "room_auth_view_eula_caption" move "This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>End User Licensing Agreement (EULA)</12>" "register.recaptcha_caption" ```
2023-11-20 13:00:43 +00:00
placeholder={t("register_confirm_password_label")}
label={t("register_confirm_password_label")}
2021-12-15 11:10:38 -08:00
ref={confirmPasswordRef}
data-testid="register_confirm_password"
2021-12-15 11:10:38 -08:00
/>
</FieldRow>
<Text size="sm">
``` move "{{count, number}}_one" "participant_count_one" move "{{count, number}}_other" "participant_count_other" move "{{count}} stars_one" "star_rating_input_label_one" move "{{count}} stars_other" "star_rating_input_label_other" move "{{displayName}} is presenting" "video_tile.presenter_label" move "{{displayName}}, your call has ended." "call_ended_view.headline" move "<0></0><1></1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call." "settings.opt_in_description" move "<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>" "register_auth_links" move "<0>Create an account</0> Or <2>Access as a guest</2>" "login_auth_links" move "<0>Oops, something's gone wrong.</0>" "full_screen_view_h1" move "<0>Submitting debug logs will help us track down the problem.</0>" "full_screen_view_description" move "<0>Thanks for your feedback!</0>" "call_ended_view.feedback_done" move "<0>We'd love to hear your feedback so we can improve your experience.</0>" "call_ended_view.feedback_prompt" move "<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>" "call_ended_view.create_account_prompt" move "Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log." "rageshake_request_modal.body" move "Back to recents" "lobby.leave_button" move "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <5>Cookie Policy</5>." "analytics_notice" move "Call not found" "group_call_loader_failed_heading" move "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key." "group_call_loader_failed_text" move "Confirm password" "register_confirm_password_label" move "Connectivity to the server has been lost." "disconnected_banner" move "Continue in browser" "app_selection_modal.continue_in_browser" move "Create account" "call_ended_view.create_account_button" move "Debug log request" "rageshake_request_modal.title" move "Developer" "settings.developer_tab_title" move "Developer Settings" "settings.developer_settings_label" move "Element Call Home" "header_label" move "End call" "hangup_button_label" move "Full screen" "fullscreen_button_label" move "Exit full screen" "exit_fullscreen_button_label" move "Expose developer settings in the settings window." "settings.developer_settings_label_description" move "Feedback" "settings.feedback_tab_title" move "Grid" "layout_grid_label" move "Spotlight" "layout_spotlight_label" move "How did it go?" "call_ended_view.survey_prompt" move "If you are experiencing issues or simply would like to provide some feedback, please send us a short description below." "settings.feedback_tab_body" move "Include debug logs" "settings.feedback_tab_send_logs_label" move "Invite to this call" "invite_modal.title" move "Join call" "lobby.join_button" move "Join call now" "room_auth_view_join_button" move "Join existing call?" "join_existing_call_modal.title" move "Link copied to clipboard" "invite_modal.link_copied_toast" move "Local volume" "local_volume_label" move "Logging in…" "logging_in" move "Login" "login_title" move "Login to your account" "unauthenticated_view_login_button" move "Microphone off" "microphone_off" move "Microphone on" "microphone_on" move "More" "settings.more_tab_title" move "Mute microphone" "mute_microphone_button_label" move "Name of call" "call_name" move "Not now, return to home screen" "call_ended_view.not_now_button" move "Open in the app" "app_selection_modal.open_in_app" move "Not registered yet? <2>Create an account</2>" "unauthenticated_view_body" move "Participants" "header_participants_label" move "Passwords must match" "register.passwords_must_match" move "Ready to join?" "app_selection_modal.text" move "Recaptcha dismissed" "recaptcha_dismissed" move "Recaptcha not loaded" "recaptcha_not_loaded" move "Reconnect" "call_ended_view.reconnect_button" move "Registering…" "register.registering" move "Retry sending logs" "rageshake_button_error_caption" move "Return to home screen" "return_home_button" move "Select an option" "select_input_unset_button" move "Select app" "app_selection_modal.title" move "Send debug logs" "rageshake_send_logs" move "Sending debug logs…" "rageshake_sending_logs" move "Sending…" "rageshake_sending" move "Share screen" "screenshare_button_label" move "Sharing screen" "stop_screenshare_button_label" move "Show connection stats" "settings.show_connection_stats_label" move "Speaker" "settings.speaker_device_selection_label" move "Start new call" "start_new_call" move "Start video" "start_video_button_label" move "Stop video" "stop_video_button_label" move "Submit feedback" "settings.feedback_tab_h4" move "Submitting…" "submitting" move "Thanks, we received your feedback!" "settings.feedback_tab_thank_you" move "Thanks!" "rageshake_sent" move "This application has been opened in another tab." "application_opened_another_tab" move "This call already exists, would you like to join?" "join_existing_call_modal.text" move "Unmute microphone" "unmute_microphone_button_label" move "Version: {{version}}" "version" move "Waiting for other participants…" "waiting_for_participants" move "Yes, join call" "join_existing_call_modal.join_button" move "You" "video_tile.sfu_participant_local" move "You were disconnected from the call" "call_ended_view.body" move "Your feedback" "settings.feedback_tab_description_label" move "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" "browser_media_e2ee_unsupported" move "By clicking \"Go\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "unauthenticated_view_eula_caption" move "By clicking \"Join call now\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "room_auth_view_eula_caption" move "This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>End User Licensing Agreement (EULA)</12>" "register.recaptcha_caption" ```
2023-11-20 13:00:43 +00:00
<Trans i18nKey="recaptcha_caption">
2022-10-10 09:19:10 -04:00
This site is protected by ReCAPTCHA and the Google{" "}
<ExternalLink href="https://www.google.com/policies/privacy/">
2022-10-10 09:19:10 -04:00
Privacy Policy
</ExternalLink>{" "}
2022-10-10 09:19:10 -04:00
and{" "}
<ExternalLink href="https://policies.google.com/terms">
2022-10-10 09:19:10 -04:00
Terms of Service
</ExternalLink>{" "}
2022-10-10 09:19:10 -04:00
apply.
<br />
By clicking "Register", you agree to our{" "}
<ExternalLink href={Config.get().eula}>
End User Licensing Agreement (EULA)
</ExternalLink>
2022-10-10 09:19:10 -04:00
</Trans>
</Text>
{error && (
2021-08-20 16:23:12 -07:00
<FieldRow>
2022-10-10 09:19:10 -04:00
<ErrorMessage error={error} />
2021-08-20 16:23:12 -07:00
</FieldRow>
)}
<FieldRow>
<Button
type="submit"
disabled={registering}
data-testid="register_register"
>
``` move "{{count, number}}_one" "participant_count_one" move "{{count, number}}_other" "participant_count_other" move "{{count}} stars_one" "star_rating_input_label_one" move "{{count}} stars_other" "star_rating_input_label_other" move "{{displayName}} is presenting" "video_tile.presenter_label" move "{{displayName}}, your call has ended." "call_ended_view.headline" move "<0></0><1></1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call." "settings.opt_in_description" move "<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>" "register_auth_links" move "<0>Create an account</0> Or <2>Access as a guest</2>" "login_auth_links" move "<0>Oops, something's gone wrong.</0>" "full_screen_view_h1" move "<0>Submitting debug logs will help us track down the problem.</0>" "full_screen_view_description" move "<0>Thanks for your feedback!</0>" "call_ended_view.feedback_done" move "<0>We'd love to hear your feedback so we can improve your experience.</0>" "call_ended_view.feedback_prompt" move "<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>" "call_ended_view.create_account_prompt" move "Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log." "rageshake_request_modal.body" move "Back to recents" "lobby.leave_button" move "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <5>Cookie Policy</5>." "analytics_notice" move "Call not found" "group_call_loader_failed_heading" move "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key." "group_call_loader_failed_text" move "Confirm password" "register_confirm_password_label" move "Connectivity to the server has been lost." "disconnected_banner" move "Continue in browser" "app_selection_modal.continue_in_browser" move "Create account" "call_ended_view.create_account_button" move "Debug log request" "rageshake_request_modal.title" move "Developer" "settings.developer_tab_title" move "Developer Settings" "settings.developer_settings_label" move "Element Call Home" "header_label" move "End call" "hangup_button_label" move "Full screen" "fullscreen_button_label" move "Exit full screen" "exit_fullscreen_button_label" move "Expose developer settings in the settings window." "settings.developer_settings_label_description" move "Feedback" "settings.feedback_tab_title" move "Grid" "layout_grid_label" move "Spotlight" "layout_spotlight_label" move "How did it go?" "call_ended_view.survey_prompt" move "If you are experiencing issues or simply would like to provide some feedback, please send us a short description below." "settings.feedback_tab_body" move "Include debug logs" "settings.feedback_tab_send_logs_label" move "Invite to this call" "invite_modal.title" move "Join call" "lobby.join_button" move "Join call now" "room_auth_view_join_button" move "Join existing call?" "join_existing_call_modal.title" move "Link copied to clipboard" "invite_modal.link_copied_toast" move "Local volume" "local_volume_label" move "Logging in…" "logging_in" move "Login" "login_title" move "Login to your account" "unauthenticated_view_login_button" move "Microphone off" "microphone_off" move "Microphone on" "microphone_on" move "More" "settings.more_tab_title" move "Mute microphone" "mute_microphone_button_label" move "Name of call" "call_name" move "Not now, return to home screen" "call_ended_view.not_now_button" move "Open in the app" "app_selection_modal.open_in_app" move "Not registered yet? <2>Create an account</2>" "unauthenticated_view_body" move "Participants" "header_participants_label" move "Passwords must match" "register.passwords_must_match" move "Ready to join?" "app_selection_modal.text" move "Recaptcha dismissed" "recaptcha_dismissed" move "Recaptcha not loaded" "recaptcha_not_loaded" move "Reconnect" "call_ended_view.reconnect_button" move "Registering…" "register.registering" move "Retry sending logs" "rageshake_button_error_caption" move "Return to home screen" "return_home_button" move "Select an option" "select_input_unset_button" move "Select app" "app_selection_modal.title" move "Send debug logs" "rageshake_send_logs" move "Sending debug logs…" "rageshake_sending_logs" move "Sending…" "rageshake_sending" move "Share screen" "screenshare_button_label" move "Sharing screen" "stop_screenshare_button_label" move "Show connection stats" "settings.show_connection_stats_label" move "Speaker" "settings.speaker_device_selection_label" move "Start new call" "start_new_call" move "Start video" "start_video_button_label" move "Stop video" "stop_video_button_label" move "Submit feedback" "settings.feedback_tab_h4" move "Submitting…" "submitting" move "Thanks, we received your feedback!" "settings.feedback_tab_thank_you" move "Thanks!" "rageshake_sent" move "This application has been opened in another tab." "application_opened_another_tab" move "This call already exists, would you like to join?" "join_existing_call_modal.text" move "Unmute microphone" "unmute_microphone_button_label" move "Version: {{version}}" "version" move "Waiting for other participants…" "waiting_for_participants" move "Yes, join call" "join_existing_call_modal.join_button" move "You" "video_tile.sfu_participant_local" move "You were disconnected from the call" "call_ended_view.body" move "Your feedback" "settings.feedback_tab_description_label" move "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" "browser_media_e2ee_unsupported" move "By clicking \"Go\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "unauthenticated_view_eula_caption" move "By clicking \"Join call now\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "room_auth_view_eula_caption" move "This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>End User Licensing Agreement (EULA)</12>" "register.recaptcha_caption" ```
2023-11-20 13:00:43 +00:00
{registering
? t("register.registering")
: t("action.register")}
</Button>
</FieldRow>
2022-01-05 16:34:01 -08:00
<div id={recaptchaId} />
</form>
</div>
<div className={styles.authLinks}>
``` move "{{count, number}}_one" "participant_count_one" move "{{count, number}}_other" "participant_count_other" move "{{count}} stars_one" "star_rating_input_label_one" move "{{count}} stars_other" "star_rating_input_label_other" move "{{displayName}} is presenting" "video_tile.presenter_label" move "{{displayName}}, your call has ended." "call_ended_view.headline" move "<0></0><1></1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call." "settings.opt_in_description" move "<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>" "register_auth_links" move "<0>Create an account</0> Or <2>Access as a guest</2>" "login_auth_links" move "<0>Oops, something's gone wrong.</0>" "full_screen_view_h1" move "<0>Submitting debug logs will help us track down the problem.</0>" "full_screen_view_description" move "<0>Thanks for your feedback!</0>" "call_ended_view.feedback_done" move "<0>We'd love to hear your feedback so we can improve your experience.</0>" "call_ended_view.feedback_prompt" move "<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>" "call_ended_view.create_account_prompt" move "Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log." "rageshake_request_modal.body" move "Back to recents" "lobby.leave_button" move "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <5>Cookie Policy</5>." "analytics_notice" move "Call not found" "group_call_loader_failed_heading" move "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key." "group_call_loader_failed_text" move "Confirm password" "register_confirm_password_label" move "Connectivity to the server has been lost." "disconnected_banner" move "Continue in browser" "app_selection_modal.continue_in_browser" move "Create account" "call_ended_view.create_account_button" move "Debug log request" "rageshake_request_modal.title" move "Developer" "settings.developer_tab_title" move "Developer Settings" "settings.developer_settings_label" move "Element Call Home" "header_label" move "End call" "hangup_button_label" move "Full screen" "fullscreen_button_label" move "Exit full screen" "exit_fullscreen_button_label" move "Expose developer settings in the settings window." "settings.developer_settings_label_description" move "Feedback" "settings.feedback_tab_title" move "Grid" "layout_grid_label" move "Spotlight" "layout_spotlight_label" move "How did it go?" "call_ended_view.survey_prompt" move "If you are experiencing issues or simply would like to provide some feedback, please send us a short description below." "settings.feedback_tab_body" move "Include debug logs" "settings.feedback_tab_send_logs_label" move "Invite to this call" "invite_modal.title" move "Join call" "lobby.join_button" move "Join call now" "room_auth_view_join_button" move "Join existing call?" "join_existing_call_modal.title" move "Link copied to clipboard" "invite_modal.link_copied_toast" move "Local volume" "local_volume_label" move "Logging in…" "logging_in" move "Login" "login_title" move "Login to your account" "unauthenticated_view_login_button" move "Microphone off" "microphone_off" move "Microphone on" "microphone_on" move "More" "settings.more_tab_title" move "Mute microphone" "mute_microphone_button_label" move "Name of call" "call_name" move "Not now, return to home screen" "call_ended_view.not_now_button" move "Open in the app" "app_selection_modal.open_in_app" move "Not registered yet? <2>Create an account</2>" "unauthenticated_view_body" move "Participants" "header_participants_label" move "Passwords must match" "register.passwords_must_match" move "Ready to join?" "app_selection_modal.text" move "Recaptcha dismissed" "recaptcha_dismissed" move "Recaptcha not loaded" "recaptcha_not_loaded" move "Reconnect" "call_ended_view.reconnect_button" move "Registering…" "register.registering" move "Retry sending logs" "rageshake_button_error_caption" move "Return to home screen" "return_home_button" move "Select an option" "select_input_unset_button" move "Select app" "app_selection_modal.title" move "Send debug logs" "rageshake_send_logs" move "Sending debug logs…" "rageshake_sending_logs" move "Sending…" "rageshake_sending" move "Share screen" "screenshare_button_label" move "Sharing screen" "stop_screenshare_button_label" move "Show connection stats" "settings.show_connection_stats_label" move "Speaker" "settings.speaker_device_selection_label" move "Start new call" "start_new_call" move "Start video" "start_video_button_label" move "Stop video" "stop_video_button_label" move "Submit feedback" "settings.feedback_tab_h4" move "Submitting…" "submitting" move "Thanks, we received your feedback!" "settings.feedback_tab_thank_you" move "Thanks!" "rageshake_sent" move "This application has been opened in another tab." "application_opened_another_tab" move "This call already exists, would you like to join?" "join_existing_call_modal.text" move "Unmute microphone" "unmute_microphone_button_label" move "Version: {{version}}" "version" move "Waiting for other participants…" "waiting_for_participants" move "Yes, join call" "join_existing_call_modal.join_button" move "You" "video_tile.sfu_participant_local" move "You were disconnected from the call" "call_ended_view.body" move "Your feedback" "settings.feedback_tab_description_label" move "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" "browser_media_e2ee_unsupported" move "By clicking \"Go\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "unauthenticated_view_eula_caption" move "By clicking \"Join call now\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "room_auth_view_eula_caption" move "This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>End User Licensing Agreement (EULA)</12>" "register.recaptcha_caption" ```
2023-11-20 13:00:43 +00:00
<Trans i18nKey="register_auth_links">
2022-10-10 09:19:10 -04:00
<p>Already have an account?</p>
<p>
<Link to="/login">Log in</Link>
{" Or "}
<Link to="/">Access as a guest</Link>
</p>
</Trans>
</div>
</div>
</div>
2021-08-20 16:23:12 -07:00
</>
);
2022-05-27 16:48:38 -04:00
};