Fix 'Failed check: Ellipsis' on Weblate (#10144)

* Fix 'Failed check: Ellipsis' on Weblate

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Fix tests

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Remove white space characters before the horizontal ellipsis from RoomPreviewBar

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* yarn run i18n

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

* Additional change

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

---------

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
This commit is contained in:
Suguru Hirahara 2023-02-14 09:05:01 +00:00 committed by GitHub
parent aded28ed25
commit ea4000cf1e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
48 changed files with 117 additions and 120 deletions

View file

@ -327,7 +327,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent<IProps, I
onChange={this.onPassPhraseConfirmChange} onChange={this.onPassPhraseConfirmChange}
value={this.state.passPhraseConfirm} value={this.state.passPhraseConfirm}
className="mx_CreateKeyBackupDialog_passPhraseInput" className="mx_CreateKeyBackupDialog_passPhraseInput"
placeholder={_t("Repeat your Security Phrase...")} placeholder={_t("Repeat your Security Phrase")}
autoFocus={true} autoFocus={true}
/> />
</div> </div>
@ -451,7 +451,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent<IProps, I
case Phase.KeepItSafe: case Phase.KeepItSafe:
return _t("Make a copy of your Security Key"); return _t("Make a copy of your Security Key");
case Phase.BackingUp: case Phase.BackingUp:
return _t("Starting backup..."); return _t("Starting backup");
case Phase.Done: case Phase.Done:
return _t("Success!"); return _t("Success!");
default: default:

View file

@ -654,7 +654,7 @@ const ManageButtons: React.FC<IManageButtonsProps> = ({ hierarchy, selected, set
}; };
} }
let buttonText = _t("Saving..."); let buttonText = _t("Saving");
if (!saving) { if (!saving) {
buttonText = selectionAllSuggested ? _t("Mark as not suggested") : _t("Mark as suggested"); buttonText = selectionAllSuggested ? _t("Mark as not suggested") : _t("Mark as suggested");
} }
@ -694,7 +694,7 @@ const ManageButtons: React.FC<IManageButtonsProps> = ({ hierarchy, selected, set
kind="danger_outline" kind="danger_outline"
disabled={disabled} disabled={disabled}
> >
{removing ? _t("Removing...") : _t("Remove")} {removing ? _t("Removing") : _t("Remove")}
</Button> </Button>
<Button <Button
{...props} {...props}

View file

@ -366,7 +366,7 @@ const SpaceSetupFirstRooms: React.FC<{
let buttonLabel = _t("Skip for now"); let buttonLabel = _t("Skip for now");
if (roomNames.some((name) => name.trim())) { if (roomNames.some((name) => name.trim())) {
onClick = onNextClick; onClick = onNextClick;
buttonLabel = busy ? _t("Creating rooms...") : _t("Continue"); buttonLabel = busy ? _t("Creating rooms") : _t("Continue");
} }
return ( return (
@ -575,7 +575,7 @@ const SpaceSetupPrivateInvite: React.FC<{
let buttonLabel = _t("Skip for now"); let buttonLabel = _t("Skip for now");
if (emailAddresses.some((name) => name.trim())) { if (emailAddresses.some((name) => name.trim())) {
onClick = onNextClick; onClick = onNextClick;
buttonLabel = busy ? _t("Inviting...") : _t("Continue"); buttonLabel = busy ? _t("Inviting") : _t("Continue");
} }
return ( return (

View file

@ -594,7 +594,7 @@ export default class LoginComponent extends React.PureComponent<IProps, IState>
<div className="mx_AuthBody_paddedFooter"> <div className="mx_AuthBody_paddedFooter">
<div className="mx_AuthBody_paddedFooter_title"> <div className="mx_AuthBody_paddedFooter_title">
<InlineSpinner w={20} h={20} /> <InlineSpinner w={20} h={20} />
{this.props.isSyncing ? _t("Syncing...") : _t("Signing In...")} {this.props.isSyncing ? _t("Syncing…") : _t("Signing In…")}
</div> </div>
{this.props.isSyncing && ( {this.props.isSyncing && (
<div className="mx_AuthBody_paddedFooter_subtitle"> <div className="mx_AuthBody_paddedFooter_subtitle">

View file

@ -203,7 +203,7 @@ export default class LoginWithQRFlow extends React.Component<IProps> {
main = this.simpleSpinner(); main = this.simpleSpinner();
break; break;
case Phase.Connecting: case Phase.Connecting:
main = this.simpleSpinner(_t("Connecting...")); main = this.simpleSpinner(_t("Connecting"));
buttons = this.cancelButton(); buttons = this.cancelButton();
break; break;
case Phase.WaitingForDevice: case Phase.WaitingForDevice:

View file

@ -88,7 +88,7 @@ class PassphraseField extends PureComponent<IProps> {
return null; return null;
} }
const { feedback } = complexity; const { feedback } = complexity;
return feedback.warning || feedback.suggestions[0] || _t("Keep going..."); return feedback.warning || feedback.suggestions[0] || _t("Keep going");
}, },
}, },
], ],

View file

@ -61,7 +61,7 @@ const BeaconStatus: React.FC<Props & HTMLProps<HTMLDivElement>> = ({
)} )}
<div className="mx_BeaconStatus_description"> <div className="mx_BeaconStatus_description">
{displayStatus === BeaconDisplayStatus.Loading && ( {displayStatus === BeaconDisplayStatus.Loading && (
<span className="mx_BeaconStatus_description_status">{_t("Loading live location...")}</span> <span className="mx_BeaconStatus_description_status">{_t("Loading live location")}</span>
)} )}
{displayStatus === BeaconDisplayStatus.Stopped && ( {displayStatus === BeaconDisplayStatus.Stopped && (
<span className="mx_BeaconStatus_description_status">{_t("Live location ended")}</span> <span className="mx_BeaconStatus_description_status">{_t("Live location ended")}</span>

View file

@ -179,7 +179,7 @@ const CreateSubspaceDialog: React.FC<IProps> = ({ space, onAddExistingSpaceClick
{_t("Cancel")} {_t("Cancel")}
</AccessibleButton> </AccessibleButton>
<AccessibleButton kind="primary" disabled={busy} onClick={onCreateSubspaceClick}> <AccessibleButton kind="primary" disabled={busy} onClick={onCreateSubspaceClick}>
{busy ? _t("Adding...") : _t("Add")} {busy ? _t("Adding") : _t("Add")}
</AccessibleButton> </AccessibleButton>
</div> </div>
</MatrixClientContext.Provider> </MatrixClientContext.Provider>

View file

@ -188,7 +188,7 @@ export default class DeactivateAccountDialog extends React.Component<IProps, ISt
error = <div className="error">{this.state.errStr}</div>; error = <div className="error">{this.state.errStr}</div>;
} }
let auth = <div>{_t("Loading...")}</div>; let auth = <div>{_t("Loading")}</div>;
if (this.state.authData && this.state.authEnabled) { if (this.state.authData && this.state.authEnabled) {
auth = ( auth = (
<div> <div>

View file

@ -106,7 +106,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => {
const [isExporting, setExporting] = useState(false); const [isExporting, setExporting] = useState(false);
const sizeLimitRef = useRef<Field>(); const sizeLimitRef = useRef<Field>();
const messageCountRef = useRef<Field>(); const messageCountRef = useRef<Field>();
const [exportProgressText, setExportProgressText] = useState(_t("Processing...")); const [exportProgressText, setExportProgressText] = useState(_t("Processing"));
const [displayCancel, setCancelWarning] = useState(false); const [displayCancel, setCancelWarning] = useState(false);
const [exportCancelled, setExportCancelled] = useState(false); const [exportCancelled, setExportCancelled] = useState(false);
const [exportSuccessful, setExportSuccessful] = useState(false); const [exportSuccessful, setExportSuccessful] = useState(false);

View file

@ -243,7 +243,7 @@ export default class IncomingSasDialog extends React.Component<IProps, IState> {
return ( return (
<div> <div>
<Spinner /> <Spinner />
<p>{_t("Waiting for partner to confirm...")}</p> <p>{_t("Waiting for partner to confirm")}</p>
</div> </div>
); );
} }

View file

@ -78,7 +78,7 @@ export const SlidingSyncOptionsDialog: React.FC<IDialogProps> = ({ onFinished })
let nativeSupport: string; let nativeSupport: string;
if (hasNativeSupport === null) { if (hasNativeSupport === null) {
nativeSupport = _t("Checking..."); nativeSupport = _t("Checking");
} else { } else {
nativeSupport = hasNativeSupport nativeSupport = hasNativeSupport
? _t("Your server has native support") ? _t("Your server has native support")

View file

@ -49,7 +49,7 @@ export default class TextInputDialog extends React.Component<IProps, IState> {
title: "", title: "",
value: "", value: "",
description: "", description: "",
busyMessage: _td("Loading..."), busyMessage: _td("Loading"),
focus: true, focus: true,
hasCancel: true, hasCancel: true,
}; };

View file

@ -321,12 +321,12 @@ export default class RestoreKeyBackupDialog extends React.PureComponent<IProps,
title = _t("Restoring keys from backup"); title = _t("Restoring keys from backup");
let details; let details;
if (this.state.progress.stage === ProgressState.Fetch) { if (this.state.progress.stage === ProgressState.Fetch) {
details = _t("Fetching keys from server..."); details = _t("Fetching keys from server");
} else if (this.state.progress.stage === ProgressState.LoadKeys) { } else if (this.state.progress.stage === ProgressState.LoadKeys) {
const { total, successes, failures } = this.state.progress; const { total, successes, failures } = this.state.progress;
details = _t("%(completed)s of %(total)s keys restored", { total, completed: successes + failures }); details = _t("%(completed)s of %(total)s keys restored", { total, completed: successes + failures });
} else if (this.state.progress.stage === ProgressState.PreFetch) { } else if (this.state.progress.stage === ProgressState.PreFetch) {
details = _t("Fetching keys from server..."); details = _t("Fetching keys from server");
} }
content = ( content = (
<div> <div>

View file

@ -569,7 +569,7 @@ export default class AppTile extends React.Component<IProps, IState> {
const loadingElement = ( const loadingElement = (
<div className="mx_AppLoading_spinner_fadeIn"> <div className="mx_AppLoading_spinner_fadeIn">
<Spinner message={_t("Loading...")} /> <Spinner message={_t("Loading")} />
</div> </div>
); );

View file

@ -36,7 +36,7 @@ export default class InlineSpinner extends React.PureComponent<IProps> {
<div <div
className="mx_InlineSpinner_icon mx_Spinner_icon" className="mx_InlineSpinner_icon mx_Spinner_icon"
style={{ width: this.props.w, height: this.props.h }} style={{ width: this.props.w, height: this.props.h }}
aria-label={_t("Loading...")} aria-label={_t("Loading")}
> >
{this.props.children} {this.props.children}
</div> </div>

View file

@ -208,7 +208,7 @@ export default class PollCreateDialog extends ScrollableBaseModal<IProps, IState
value={this.state.question} value={this.state.question}
maxLength={MAX_QUESTION_LENGTH} maxLength={MAX_QUESTION_LENGTH}
label={_t("Question or topic")} label={_t("Question or topic")}
placeholder={_t("Write something...")} placeholder={_t("Write something")}
onChange={this.onQuestionChange} onChange={this.onQuestionChange}
usePlaceholderAsHint={true} usePlaceholderAsHint={true}
disabled={this.state.busy} disabled={this.state.busy}

View file

@ -42,7 +42,7 @@ export default class Spinner extends React.PureComponent<IProps> {
<div <div
className="mx_Spinner_icon" className="mx_Spinner_icon"
style={{ width: w, height: h }} style={{ width: w, height: h }}
aria-label={_t("Loading...")} aria-label={_t("Loading")}
role="progressbar" role="progressbar"
data-testid="spinner" data-testid="spinner"
/> />

View file

@ -151,7 +151,7 @@ export const DecryptionFailureBar: React.FC<IProps> = ({ failures }) => {
let body: JSX.Element; let body: JSX.Element;
let button = <React.Fragment />; let button = <React.Fragment />;
if (waiting) { if (waiting) {
headline = <React.Fragment>{_t("Decrypting messages...")}</React.Fragment>; headline = <React.Fragment>{_t("Decrypting messages")}</React.Fragment>;
body = ( body = (
<React.Fragment> <React.Fragment>
{_t("Please wait as we try to decrypt your messages. This may take a few moments.")} {_t("Please wait as we try to decrypt your messages. This may take a few moments.")}

View file

@ -1520,9 +1520,9 @@ function SentReceipt({ messageState }: ISentReceiptProps): JSX.Element {
nonCssBadge = <NotificationBadge notification={StaticNotificationState.RED_EXCLAMATION} />; nonCssBadge = <NotificationBadge notification={StaticNotificationState.RED_EXCLAMATION} />;
} }
let label = _t("Sending your message..."); let label = _t("Sending your message");
if (messageState === "encrypting") { if (messageState === "encrypting") {
label = _t("Encrypting your message..."); label = _t("Encrypting your message");
} else if (isSent) { } else if (isSent) {
label = _t("Your message was sent"); label = _t("Your message was sent");
} else if (isFailed) { } else if (isFailed) {

View file

@ -290,21 +290,21 @@ export default class RoomPreviewBar extends React.Component<IProps, IState> {
switch (messageCase) { switch (messageCase) {
case MessageCase.Joining: { case MessageCase.Joining: {
if (this.props.oobData?.roomType || isSpace) { if (this.props.oobData?.roomType || isSpace) {
title = isSpace ? _t("Joining space …") : _t("Joining room …"); title = isSpace ? _t("Joining space…") : _t("Joining room…");
} else { } else {
title = _t("Joining …"); title = _t("Joining…");
} }
showSpinner = true; showSpinner = true;
break; break;
} }
case MessageCase.Loading: { case MessageCase.Loading: {
title = _t("Loading …"); title = _t("Loading…");
showSpinner = true; showSpinner = true;
break; break;
} }
case MessageCase.Rejecting: { case MessageCase.Rejecting: {
title = _t("Rejecting invite …"); title = _t("Rejecting invite…");
showSpinner = true; showSpinner = true;
break; break;
} }

View file

@ -89,7 +89,7 @@ export default class IntegrationManager extends React.Component<IProps, IState>
if (this.props.loading) { if (this.props.loading) {
return ( return (
<div className="mx_IntegrationManager_loading"> <div className="mx_IntegrationManager_loading">
<Heading size="h3">{_t("Connecting to integration manager...")}</Heading> <Heading size="h3">{_t("Connecting to integration manager")}</Heading>
<Spinner /> <Spinner />
</div> </div>
); );

View file

@ -273,7 +273,7 @@ export default class SecureBackupPanel extends React.PureComponent<{}, IState> {
} else if (sessionsRemaining > 0) { } else if (sessionsRemaining > 0) {
uploadStatus = ( uploadStatus = (
<div> <div>
{_t("Backing up %(sessionsRemaining)s keys...", { sessionsRemaining })} <br /> {_t("Backing up %(sessionsRemaining)s keys", { sessionsRemaining })} <br />
</div> </div>
); );
} else { } else {

View file

@ -35,11 +35,11 @@ function getStatusText(status: UpdateCheckStatus, errorDetail?: string): ReactNo
case UpdateCheckStatus.Error: case UpdateCheckStatus.Error:
return _t("Error encountered (%(errorDetail)s).", { errorDetail }); return _t("Error encountered (%(errorDetail)s).", { errorDetail });
case UpdateCheckStatus.Checking: case UpdateCheckStatus.Checking:
return _t("Checking for an update..."); return _t("Checking for an update");
case UpdateCheckStatus.NotAvailable: case UpdateCheckStatus.NotAvailable:
return _t("No update available."); return _t("No update available.");
case UpdateCheckStatus.Downloading: case UpdateCheckStatus.Downloading:
return _t("Downloading update..."); return _t("Downloading update");
case UpdateCheckStatus.Ready: case UpdateCheckStatus.Ready:
return _t( return _t(
"New version available. <a>Update now.</a>", "New version available. <a>Update now.</a>",

View file

@ -345,7 +345,7 @@ export default class GeneralUserSettingsTab extends React.Component<IProps, ISta
threepidSection = <Spinner />; threepidSection = <Spinner />;
} }
let passwordChangeText = _t("Set a new account password..."); let passwordChangeText = _t("Set a new account password");
if (!this.state.canChangePassword) { if (!this.state.canChangePassword) {
// Just don't show anything if you can't do anything. // Just don't show anything if you can't do anything.
passwordChangeText = null; passwordChangeText = null;

View file

@ -344,7 +344,7 @@ const SpaceCreateMenu: React.FC<{
/> />
<AccessibleButton kind="primary" onClick={onSpaceCreateClick} disabled={busy}> <AccessibleButton kind="primary" onClick={onSpaceCreateClick} disabled={busy}>
{busy ? _t("Creating...") : _t("Create")} {busy ? _t("Creating") : _t("Create")}
</AccessibleButton> </AccessibleButton>
</React.Fragment> </React.Fragment>
); );

View file

@ -123,7 +123,7 @@ const SpaceSettingsGeneralTab: React.FC<IProps> = ({ matrixClient: cli, space, o
{_t("Cancel")} {_t("Cancel")}
</AccessibleButton> </AccessibleButton>
<AccessibleButton onClick={onSave} disabled={busy} kind="primary"> <AccessibleButton onClick={onSave} disabled={busy} kind="primary">
{busy ? _t("Saving...") : _t("Save Changes")} {busy ? _t("Saving") : _t("Save Changes")}
</AccessibleButton> </AccessibleButton>
</div> </div>

View file

@ -694,7 +694,7 @@
"This homeserver has been blocked by its administrator.": "This homeserver has been blocked by its administrator.", "This homeserver has been blocked by its administrator.": "This homeserver has been blocked by its administrator.",
"This homeserver has exceeded one of its resource limits.": "This homeserver has exceeded one of its resource limits.", "This homeserver has exceeded one of its resource limits.": "This homeserver has exceeded one of its resource limits.",
"Please <a>contact your service administrator</a> to continue using the service.": "Please <a>contact your service administrator</a> to continue using the service.", "Please <a>contact your service administrator</a> to continue using the service.": "Please <a>contact your service administrator</a> to continue using the service.",
"Unable to connect to Homeserver. Retrying...": "Unable to connect to Homeserver. Retrying...", "Unable to connect to Homeserver. Retrying…": "Unable to connect to Homeserver. Retrying…",
"%(items)s and %(count)s others|other": "%(items)s and %(count)s others", "%(items)s and %(count)s others|other": "%(items)s and %(count)s others",
"%(items)s and %(count)s others|one": "%(items)s and one other", "%(items)s and %(count)s others|one": "%(items)s and one other",
"%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s",
@ -811,17 +811,17 @@
"Topic: %(topic)s": "Topic: %(topic)s", "Topic: %(topic)s": "Topic: %(topic)s",
"Error fetching file": "Error fetching file", "Error fetching file": "Error fetching file",
"Processing event %(number)s out of %(total)s": "Processing event %(number)s out of %(total)s", "Processing event %(number)s out of %(total)s": "Processing event %(number)s out of %(total)s",
"Starting export...": "Starting export...", "Starting export…": "Starting export…",
"Fetched %(count)s events in %(seconds)ss|other": "Fetched %(count)s events in %(seconds)ss", "Fetched %(count)s events in %(seconds)ss|other": "Fetched %(count)s events in %(seconds)ss",
"Fetched %(count)s events in %(seconds)ss|one": "Fetched %(count)s event in %(seconds)ss", "Fetched %(count)s events in %(seconds)ss|one": "Fetched %(count)s event in %(seconds)ss",
"Creating HTML...": "Creating HTML...", "Creating HTML…": "Creating HTML…",
"Export successful!": "Export successful!", "Export successful!": "Export successful!",
"Exported %(count)s events in %(seconds)s seconds|other": "Exported %(count)s events in %(seconds)s seconds", "Exported %(count)s events in %(seconds)s seconds|other": "Exported %(count)s events in %(seconds)s seconds",
"Exported %(count)s events in %(seconds)s seconds|one": "Exported %(count)s event in %(seconds)s seconds", "Exported %(count)s events in %(seconds)s seconds|one": "Exported %(count)s event in %(seconds)s seconds",
"File Attached": "File Attached", "File Attached": "File Attached",
"Starting export process...": "Starting export process...", "Starting export process…": "Starting export process…",
"Fetching events...": "Fetching events...", "Fetching events…": "Fetching events…",
"Creating output...": "Creating output...", "Creating output…": "Creating output…",
"Enable": "Enable", "Enable": "Enable",
"That's fine": "That's fine", "That's fine": "That's fine",
"Stop": "Stop", "Stop": "Stop",
@ -1287,7 +1287,7 @@
"Your private space": "Your private space", "Your private space": "Your private space",
"Add some details to help people recognise it.": "Add some details to help people recognise it.", "Add some details to help people recognise it.": "Add some details to help people recognise it.",
"You can change these anytime.": "You can change these anytime.", "You can change these anytime.": "You can change these anytime.",
"Creating...": "Creating...", "Creating…": "Creating…",
"Create": "Create", "Create": "Create",
"Show all rooms": "Show all rooms", "Show all rooms": "Show all rooms",
"Options": "Options", "Options": "Options",
@ -1302,7 +1302,7 @@
"Failed to save space settings.": "Failed to save space settings.", "Failed to save space settings.": "Failed to save space settings.",
"General": "General", "General": "General",
"Edit settings relating to your space.": "Edit settings relating to your space.", "Edit settings relating to your space.": "Edit settings relating to your space.",
"Saving...": "Saving...", "Saving…": "Saving…",
"Save Changes": "Save Changes", "Save Changes": "Save Changes",
"Leave Space": "Leave Space", "Leave Space": "Leave Space",
"Failed to update the guest access of this space": "Failed to update the guest access of this space", "Failed to update the guest access of this space": "Failed to update the guest access of this space",
@ -1399,7 +1399,7 @@
"Use between %(min)s pt and %(max)s pt": "Use between %(min)s pt and %(max)s pt", "Use between %(min)s pt and %(max)s pt": "Use between %(min)s pt and %(max)s pt",
"Image size in the timeline": "Image size in the timeline", "Image size in the timeline": "Image size in the timeline",
"Large": "Large", "Large": "Large",
"Connecting to integration manager...": "Connecting to integration manager...", "Connecting to integration manager…": "Connecting to integration manager…",
"Cannot connect to integration manager": "Cannot connect to integration manager", "Cannot connect to integration manager": "Cannot connect to integration manager",
"The integration manager is offline or it cannot reach your homeserver.": "The integration manager is offline or it cannot reach your homeserver.", "The integration manager is offline or it cannot reach your homeserver.": "The integration manager is offline or it cannot reach your homeserver.",
"Integration manager": "Integration manager", "Integration manager": "Integration manager",
@ -1461,7 +1461,7 @@
"This session is <b>not backing up your keys</b>, but you do have an existing backup you can restore from and add to going forward.": "This session is <b>not backing up your keys</b>, but you do have an existing backup you can restore from and add to going forward.", "This session is <b>not backing up your keys</b>, but you do have an existing backup you can restore from and add to going forward.": "This session is <b>not backing up your keys</b>, but you do have an existing backup you can restore from and add to going forward.",
"Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.",
"Connect this session to Key Backup": "Connect this session to Key Backup", "Connect this session to Key Backup": "Connect this session to Key Backup",
"Backing up %(sessionsRemaining)s keys...": "Backing up %(sessionsRemaining)s keys...", "Backing up %(sessionsRemaining)s keys…": "Backing up %(sessionsRemaining)s keys…",
"All keys backed up": "All keys backed up", "All keys backed up": "All keys backed up",
"Backup has a <validity>valid</validity> signature from this user": "Backup has a <validity>valid</validity> signature from this user", "Backup has a <validity>valid</validity> signature from this user": "Backup has a <validity>valid</validity> signature from this user",
"Backup has a <validity>invalid</validity> signature from this user": "Backup has a <validity>invalid</validity> signature from this user", "Backup has a <validity>invalid</validity> signature from this user": "Backup has a <validity>invalid</validity> signature from this user",
@ -1532,9 +1532,9 @@
"Custom theme URL": "Custom theme URL", "Custom theme URL": "Custom theme URL",
"Add theme": "Add theme", "Add theme": "Add theme",
"Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).", "Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).",
"Checking for an update...": "Checking for an update...", "Checking for an update…": "Checking for an update…",
"No update available.": "No update available.", "No update available.": "No update available.",
"Downloading update...": "Downloading update...", "Downloading update…": "Downloading update…",
"New version available. <a>Update now.</a>": "New version available. <a>Update now.</a>", "New version available. <a>Update now.</a>": "New version available. <a>Update now.</a>",
"Check for update": "Check for update", "Check for update": "Check for update",
"Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Set the name of a font installed on your system & %(brand)s will attempt to use it.", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Set the name of a font installed on your system & %(brand)s will attempt to use it.",
@ -1546,7 +1546,7 @@
"Success": "Success", "Success": "Success",
"Email addresses": "Email addresses", "Email addresses": "Email addresses",
"Phone numbers": "Phone numbers", "Phone numbers": "Phone numbers",
"Set a new account password...": "Set a new account password...", "Set a new account password…": "Set a new account password…",
"Your account details are managed separately at <code>%(hostname)s</code>.": "Your account details are managed separately at <code>%(hostname)s</code>.", "Your account details are managed separately at <code>%(hostname)s</code>.": "Your account details are managed separately at <code>%(hostname)s</code>.",
"Manage account": "Manage account", "Manage account": "Manage account",
"Account": "Account", "Account": "Account",
@ -1882,7 +1882,7 @@
"Remove %(phone)s?": "Remove %(phone)s?", "Remove %(phone)s?": "Remove %(phone)s?",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.",
"Phone Number": "Phone Number", "Phone Number": "Phone Number",
"Decrypting messages...": "Decrypting messages...", "Decrypting messages…": "Decrypting messages…",
"Please wait as we try to decrypt your messages. This may take a few moments.": "Please wait as we try to decrypt your messages. This may take a few moments.", "Please wait as we try to decrypt your messages. This may take a few moments.": "Please wait as we try to decrypt your messages. This may take a few moments.",
"Verify this device to access all messages": "Verify this device to access all messages", "Verify this device to access all messages": "Verify this device to access all messages",
"This device was unable to decrypt some messages because it has not been verified yet.": "This device was unable to decrypt some messages because it has not been verified yet.", "This device was unable to decrypt some messages because it has not been verified yet.": "This device was unable to decrypt some messages because it has not been verified yet.",
@ -1911,8 +1911,8 @@
"Encrypted by a deleted session": "Encrypted by a deleted session", "Encrypted by a deleted session": "Encrypted by a deleted session",
"The authenticity of this encrypted message can't be guaranteed on this device.": "The authenticity of this encrypted message can't be guaranteed on this device.", "The authenticity of this encrypted message can't be guaranteed on this device.": "The authenticity of this encrypted message can't be guaranteed on this device.",
"This message could not be decrypted": "This message could not be decrypted", "This message could not be decrypted": "This message could not be decrypted",
"Sending your message...": "Sending your message...", "Sending your message…": "Sending your message…",
"Encrypting your message...": "Encrypting your message...", "Encrypting your message…": "Encrypting your message…",
"Your message was sent": "Your message was sent", "Your message was sent": "Your message was sent",
"Failed to send": "Failed to send", "Failed to send": "Failed to send",
"You don't have permission to view messages from before you were invited.": "You don't have permission to view messages from before you were invited.", "You don't have permission to view messages from before you were invited.": "You don't have permission to view messages from before you were invited.",
@ -2051,11 +2051,11 @@
"Currently removing messages in %(count)s rooms|one": "Currently removing messages in %(count)s room", "Currently removing messages in %(count)s rooms|one": "Currently removing messages in %(count)s room",
"%(spaceName)s menu": "%(spaceName)s menu", "%(spaceName)s menu": "%(spaceName)s menu",
"Home options": "Home options", "Home options": "Home options",
"Joining space …": "Joining space …", "Joining space…": "Joining space…",
"Joining room …": "Joining room …", "Joining room…": "Joining room…",
"Joining …": "Joining …", "Joining…": "Joining…",
"Loading …": "Loading …", "Loading…": "Loading…",
"Rejecting invite …": "Rejecting invite …", "Rejecting invite…": "Rejecting invite…",
"Join the room to participate": "Join the room to participate", "Join the room to participate": "Join the room to participate",
"Join the conversation with an account": "Join the conversation with an account", "Join the conversation with an account": "Join the conversation with an account",
"Sign Up": "Sign Up", "Sign Up": "Sign Up",
@ -2122,7 +2122,6 @@
"%(count)s unread messages.|other": "%(count)s unread messages.", "%(count)s unread messages.|other": "%(count)s unread messages.",
"%(count)s unread messages.|one": "1 unread message.", "%(count)s unread messages.|one": "1 unread message.",
"Unread messages.": "Unread messages.", "Unread messages.": "Unread messages.",
"Joining…": "Joining…",
"Joined": "Joined", "Joined": "Joined",
"Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.", "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.",
"This room has already been upgraded.": "This room has already been upgraded.", "This room has already been upgraded.": "This room has already been upgraded.",
@ -2485,7 +2484,6 @@
"Widgets do not use message encryption.": "Widgets do not use message encryption.", "Widgets do not use message encryption.": "Widgets do not use message encryption.",
"Widget added by": "Widget added by", "Widget added by": "Widget added by",
"This widget may use cookies.": "This widget may use cookies.", "This widget may use cookies.": "This widget may use cookies.",
"Loading...": "Loading...",
"Error loading Widget": "Error loading Widget", "Error loading Widget": "Error loading Widget",
"Error - Mixed content": "Error - Mixed content", "Error - Mixed content": "Error - Mixed content",
"Un-maximise": "Un-maximise", "Un-maximise": "Un-maximise",
@ -2584,7 +2582,7 @@
"Closed poll": "Closed poll", "Closed poll": "Closed poll",
"What is your poll question or topic?": "What is your poll question or topic?", "What is your poll question or topic?": "What is your poll question or topic?",
"Question or topic": "Question or topic", "Question or topic": "Question or topic",
"Write something...": "Write something...", "Write something…": "Write something…",
"Create options": "Create options", "Create options": "Create options",
"Option %(number)s": "Option %(number)s", "Option %(number)s": "Option %(number)s",
"Write an option": "Write an option", "Write an option": "Write an option",
@ -2750,7 +2748,7 @@
"Space visibility": "Space visibility", "Space visibility": "Space visibility",
"Private space (invite only)": "Private space (invite only)", "Private space (invite only)": "Private space (invite only)",
"Want to add an existing space instead?": "Want to add an existing space instead?", "Want to add an existing space instead?": "Want to add an existing space instead?",
"Adding...": "Adding...", "Adding…": "Adding…",
"To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this", "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this",
"You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.", "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.",
"Incompatible Database": "Incompatible Database", "Incompatible Database": "Incompatible Database",
@ -2791,7 +2789,7 @@
"End Poll": "End Poll", "End Poll": "End Poll",
"Are you sure you want to end this poll? This will show the final results of the poll and stop people from being able to vote.": "Are you sure you want to end this poll? This will show the final results of the poll and stop people from being able to vote.", "Are you sure you want to end this poll? This will show the final results of the poll and stop people from being able to vote.": "Are you sure you want to end this poll? This will show the final results of the poll and stop people from being able to vote.",
"An error has occurred.": "An error has occurred.", "An error has occurred.": "An error has occurred.",
"Processing...": "Processing...", "Processing…": "Processing…",
"Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s",
"Size can only be a number between %(min)s MB and %(max)s MB": "Size can only be a number between %(min)s MB and %(max)s MB", "Size can only be a number between %(min)s MB and %(max)s MB": "Size can only be a number between %(min)s MB and %(max)s MB",
"Number of messages can only be a number between %(min)s and %(max)s": "Number of messages can only be a number between %(min)s and %(max)s", "Number of messages can only be a number between %(min)s and %(max)s": "Number of messages can only be a number between %(min)s and %(max)s",
@ -2845,7 +2843,7 @@
"Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.", "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.",
"Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.", "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.",
"Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.", "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.",
"Waiting for partner to confirm...": "Waiting for partner to confirm...", "Waiting for partner to confirm…": "Waiting for partner to confirm…",
"Incoming Verification Request": "Incoming Verification Request", "Incoming Verification Request": "Incoming Verification Request",
"Integrations are disabled": "Integrations are disabled", "Integrations are disabled": "Integrations are disabled",
"Enable '%(manageIntegrations)s' in Settings to do this.": "Enable '%(manageIntegrations)s' in Settings to do this.", "Enable '%(manageIntegrations)s' in Settings to do this.": "Enable '%(manageIntegrations)s' in Settings to do this.",
@ -3020,7 +3018,7 @@
"Link to selected message": "Link to selected message", "Link to selected message": "Link to selected message",
"Link to room": "Link to room", "Link to room": "Link to room",
"Command Help": "Command Help", "Command Help": "Command Help",
"Checking...": "Checking...", "Checking…": "Checking…",
"Your server has native support": "Your server has native support", "Your server has native support": "Your server has native support",
"Your server lacks native support": "Your server lacks native support", "Your server lacks native support": "Your server lacks native support",
"Your server lacks native support, you must specify a proxy": "Your server lacks native support, you must specify a proxy", "Your server lacks native support, you must specify a proxy": "Your server lacks native support, you must specify a proxy",
@ -3122,7 +3120,7 @@
"Click the button below to confirm setting up encryption.": "Click the button below to confirm setting up encryption.", "Click the button below to confirm setting up encryption.": "Click the button below to confirm setting up encryption.",
"Unable to set up keys": "Unable to set up keys", "Unable to set up keys": "Unable to set up keys",
"Restoring keys from backup": "Restoring keys from backup", "Restoring keys from backup": "Restoring keys from backup",
"Fetching keys from server...": "Fetching keys from server...", "Fetching keys from server…": "Fetching keys from server…",
"%(completed)s of %(total)s keys restored": "%(completed)s of %(total)s keys restored", "%(completed)s of %(total)s keys restored": "%(completed)s of %(total)s keys restored",
"Unable to load backup status": "Unable to load backup status", "Unable to load backup status": "Unable to load backup status",
"Security Key mismatch": "Security Key mismatch", "Security Key mismatch": "Security Key mismatch",
@ -3265,7 +3263,7 @@
"Join the beta": "Join the beta", "Join the beta": "Join the beta",
"Updated %(humanizedUpdateTime)s": "Updated %(humanizedUpdateTime)s", "Updated %(humanizedUpdateTime)s": "Updated %(humanizedUpdateTime)s",
"Live until %(expiryTime)s": "Live until %(expiryTime)s", "Live until %(expiryTime)s": "Live until %(expiryTime)s",
"Loading live location...": "Loading live location...", "Loading live location…": "Loading live location…",
"Live location ended": "Live location ended", "Live location ended": "Live location ended",
"Live location error": "Live location error", "Live location error": "Live location error",
"No live locations": "No live locations", "No live locations": "No live locations",
@ -3325,13 +3323,13 @@
"Select '%(scanQRCode)s'": "Select '%(scanQRCode)s'", "Select '%(scanQRCode)s'": "Select '%(scanQRCode)s'",
"Scan QR code": "Scan QR code", "Scan QR code": "Scan QR code",
"Review and approve the sign in": "Review and approve the sign in", "Review and approve the sign in": "Review and approve the sign in",
"Connecting...": "Connecting...", "Connecting…": "Connecting…",
"Waiting for device to sign in": "Waiting for device to sign in", "Waiting for device to sign in": "Waiting for device to sign in",
"Completing set up of your new device": "Completing set up of your new device", "Completing set up of your new device": "Completing set up of your new device",
"Enter password": "Enter password", "Enter password": "Enter password",
"Nice, strong password!": "Nice, strong password!", "Nice, strong password!": "Nice, strong password!",
"Password is allowed, but unsafe": "Password is allowed, but unsafe", "Password is allowed, but unsafe": "Password is allowed, but unsafe",
"Keep going...": "Keep going...", "Keep going…": "Keep going…",
"Enter username": "Enter username", "Enter username": "Enter username",
"Enter phone number": "Enter phone number", "Enter phone number": "Enter phone number",
"That phone number doesn't look quite right, please check and try again": "That phone number doesn't look quite right, please check and try again", "That phone number doesn't look quite right, please check and try again": "That phone number doesn't look quite right, please check and try again",
@ -3427,7 +3425,6 @@
"Mark as not suggested": "Mark as not suggested", "Mark as not suggested": "Mark as not suggested",
"Mark as suggested": "Mark as suggested", "Mark as suggested": "Mark as suggested",
"Failed to remove some rooms. Try again later": "Failed to remove some rooms. Try again later", "Failed to remove some rooms. Try again later": "Failed to remove some rooms. Try again later",
"Removing...": "Removing...",
"Failed to load list of rooms.": "Failed to load list of rooms.", "Failed to load list of rooms.": "Failed to load list of rooms.",
"Your server does not support showing space hierarchies.": "Your server does not support showing space hierarchies.", "Your server does not support showing space hierarchies.": "Your server does not support showing space hierarchies.",
"You may want to try a different search or check for typos.": "You may want to try a different search or check for typos.", "You may want to try a different search or check for typos.": "You may want to try a different search or check for typos.",
@ -3440,7 +3437,7 @@
"Room name": "Room name", "Room name": "Room name",
"Failed to create initial space rooms": "Failed to create initial space rooms", "Failed to create initial space rooms": "Failed to create initial space rooms",
"Skip for now": "Skip for now", "Skip for now": "Skip for now",
"Creating rooms...": "Creating rooms...", "Creating rooms…": "Creating rooms…",
"What do you want to organise?": "What do you want to organise?", "What do you want to organise?": "What do you want to organise?",
"Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.": "Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.", "Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.": "Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.",
"Search for rooms or spaces": "Search for rooms or spaces", "Search for rooms or spaces": "Search for rooms or spaces",
@ -3455,7 +3452,7 @@
"Me and my teammates": "Me and my teammates", "Me and my teammates": "Me and my teammates",
"A private space for you and your teammates": "A private space for you and your teammates", "A private space for you and your teammates": "A private space for you and your teammates",
"Failed to invite the following users to your space: %(csvUsers)s": "Failed to invite the following users to your space: %(csvUsers)s", "Failed to invite the following users to your space: %(csvUsers)s": "Failed to invite the following users to your space: %(csvUsers)s",
"Inviting...": "Inviting...", "Inviting…": "Inviting…",
"Invite your teammates": "Invite your teammates", "Invite your teammates": "Invite your teammates",
"Make sure the right people have access. You can invite more later.": "Make sure the right people have access. You can invite more later.", "Make sure the right people have access. You can invite more later.": "Make sure the right people have access. You can invite more later.",
"<b>This is an experimental feature.</b> For now, new users receiving an invite will have to open the invite on <link/> to actually join.": "<b>This is an experimental feature.</b> For now, new users receiving an invite will have to open the invite on <link/> to actually join.", "<b>This is an experimental feature.</b> For now, new users receiving an invite will have to open the invite on <link/> to actually join.": "<b>This is an experimental feature.</b> For now, new users receiving an invite will have to open the invite on <link/> to actually join.",
@ -3531,8 +3528,8 @@
"There was a problem communicating with the homeserver, please try again later.": "There was a problem communicating with the homeserver, please try again later.", "There was a problem communicating with the homeserver, please try again later.": "There was a problem communicating with the homeserver, please try again later.",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or <a>enable unsafe scripts</a>.",
"Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.", "Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.",
"Syncing...": "Syncing...", "Syncing…": "Syncing…",
"Signing In...": "Signing In...", "Signing In…": "Signing In…",
"If you've joined lots of rooms, this might take a while": "If you've joined lots of rooms, this might take a while", "If you've joined lots of rooms, this might take a while": "If you've joined lots of rooms, this might take a while",
"New? <a>Create account</a>": "New? <a>Create account</a>", "New? <a>Create account</a>": "New? <a>Create account</a>",
"Registration has been disabled on this homeserver.": "Registration has been disabled on this homeserver.", "Registration has been disabled on this homeserver.": "Registration has been disabled on this homeserver.",
@ -3605,7 +3602,7 @@
"That doesn't match.": "That doesn't match.", "That doesn't match.": "That doesn't match.",
"Go back to set it again.": "Go back to set it again.", "Go back to set it again.": "Go back to set it again.",
"Enter your Security Phrase a second time to confirm it.": "Enter your Security Phrase a second time to confirm it.", "Enter your Security Phrase a second time to confirm it.": "Enter your Security Phrase a second time to confirm it.",
"Repeat your Security Phrase...": "Repeat your Security Phrase...", "Repeat your Security Phrase…": "Repeat your Security Phrase…",
"Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.", "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.",
"Keep a copy of it somewhere secure, like a password manager or even a safe.": "Keep a copy of it somewhere secure, like a password manager or even a safe.", "Keep a copy of it somewhere secure, like a password manager or even a safe.": "Keep a copy of it somewhere secure, like a password manager or even a safe.",
"Your Security Key": "Your Security Key", "Your Security Key": "Your Security Key",
@ -3620,7 +3617,7 @@
"Secure your backup with a Security Phrase": "Secure your backup with a Security Phrase", "Secure your backup with a Security Phrase": "Secure your backup with a Security Phrase",
"Confirm your Security Phrase": "Confirm your Security Phrase", "Confirm your Security Phrase": "Confirm your Security Phrase",
"Make a copy of your Security Key": "Make a copy of your Security Key", "Make a copy of your Security Key": "Make a copy of your Security Key",
"Starting backup...": "Starting backup...", "Starting backup…": "Starting backup…",
"Success!": "Success!", "Success!": "Success!",
"Create key backup": "Create key backup", "Create key backup": "Create key backup",
"Unable to create key backup": "Unable to create key backup", "Unable to create key backup": "Unable to create key backup",

View file

@ -78,6 +78,6 @@ export function messageForSyncError(err: Error): ReactNode {
</div> </div>
); );
} else { } else {
return <div>{_t("Unable to connect to Homeserver. Retrying...")}</div>; return <div>{_t("Unable to connect to Homeserver. Retrying")}</div>;
} }
} }

View file

@ -413,7 +413,7 @@ export default class HTMLExporter extends Exporter {
} }
public async export(): Promise<void> { public async export(): Promise<void> {
this.updateProgress(_t("Starting export...")); this.updateProgress(_t("Starting export"));
const fetchStart = performance.now(); const fetchStart = performance.now();
const res = await this.getRequiredEvents(); const res = await this.getRequiredEvents();
@ -428,7 +428,7 @@ export default class HTMLExporter extends Exporter {
false, false,
); );
this.updateProgress(_t("Creating HTML...")); this.updateProgress(_t("Creating HTML"));
const usedClasses = new Set<string>(); const usedClasses = new Set<string>();
for (let page = 0; page < res.length / 1000; page++) { for (let page = 0; page < res.length / 1000; page++) {

View file

@ -128,8 +128,8 @@ export default class PlainTextExporter extends Exporter {
} }
public async export(): Promise<void> { public async export(): Promise<void> {
this.updateProgress(_t("Starting export process...")); this.updateProgress(_t("Starting export process"));
this.updateProgress(_t("Fetching events...")); this.updateProgress(_t("Fetching events"));
const fetchStart = performance.now(); const fetchStart = performance.now();
const res = await this.getRequiredEvents(); const res = await this.getRequiredEvents();
@ -137,7 +137,7 @@ export default class PlainTextExporter extends Exporter {
logger.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart) / 1000}s`); logger.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart) / 1000}s`);
this.updateProgress(_t("Creating output...")); this.updateProgress(_t("Creating output"));
const text = await this.createOutput(res); const text = await this.createOutput(res);
if (this.files.length) { if (this.files.length) {

View file

@ -79,7 +79,7 @@ exports[`RoomView for a local room in state CREATING should match the snapshot 1
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"

View file

@ -86,7 +86,7 @@ describe("Login", function () {
disable_custom_urls: false, disable_custom_urls: false,
}); });
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
expect(container.querySelector("form")).toBeTruthy(); expect(container.querySelector("form")).toBeTruthy();
@ -95,7 +95,7 @@ describe("Login", function () {
it("should show form without change server link when custom URLs disabled", async () => { it("should show form without change server link when custom URLs disabled", async () => {
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
expect(container.querySelector("form")).toBeTruthy(); expect(container.querySelector("form")).toBeTruthy();
expect(container.querySelectorAll(".mx_ServerPicker_change")).toHaveLength(0); expect(container.querySelectorAll(".mx_ServerPicker_change")).toHaveLength(0);
@ -105,7 +105,7 @@ describe("Login", function () {
mockClient.loginFlows.mockResolvedValue({ flows: [{ type: "m.login.sso" }] }); mockClient.loginFlows.mockResolvedValue({ flows: [{ type: "m.login.sso" }] });
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
const ssoButton = container.querySelector(".mx_SSOButton"); const ssoButton = container.querySelector(".mx_SSOButton");
expect(ssoButton).toBeTruthy(); expect(ssoButton).toBeTruthy();
@ -115,7 +115,7 @@ describe("Login", function () {
mockClient.loginFlows.mockResolvedValue({ flows: [{ type: "m.login.password" }, { type: "m.login.sso" }] }); mockClient.loginFlows.mockResolvedValue({ flows: [{ type: "m.login.password" }, { type: "m.login.sso" }] });
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
expect(container.querySelector("form")).toBeTruthy(); expect(container.querySelector("form")).toBeTruthy();
@ -147,7 +147,7 @@ describe("Login", function () {
}); });
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
const ssoButtons = container.querySelectorAll(".mx_SSOButton"); const ssoButtons = container.querySelectorAll(".mx_SSOButton");
expect(ssoButtons.length).toBe(3); expect(ssoButtons.length).toBe(3);
@ -163,7 +163,7 @@ describe("Login", function () {
}); });
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
const ssoButtons = container.querySelectorAll(".mx_SSOButton"); const ssoButtons = container.querySelectorAll(".mx_SSOButton");
expect(ssoButtons.length).toBe(1); expect(ssoButtons.length).toBe(1);
@ -179,7 +179,7 @@ describe("Login", function () {
}); });
const { container, rerender } = render(getRawComponent()); const { container, rerender } = render(getRawComponent());
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
fireEvent.click(container.querySelector(".mx_SSOButton")); fireEvent.click(container.querySelector(".mx_SSOButton"));
expect(platform.startSingleSignOn.mock.calls[0][0].baseUrl).toBe("https://matrix.org"); expect(platform.startSingleSignOn.mock.calls[0][0].baseUrl).toBe("https://matrix.org");
@ -208,7 +208,7 @@ describe("Login", function () {
}); });
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
const ssoButtons = container.querySelectorAll(".mx_SSOButton"); const ssoButtons = container.querySelectorAll(".mx_SSOButton");
@ -242,7 +242,7 @@ describe("Login", function () {
}); });
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
for (const idp of idpsWithIcons) { for (const idp of idpsWithIcons) {
const ssoButton = container.querySelector(`.mx_SSOButton.mx_SSOButton_brand_${idp.brand}`); const ssoButton = container.querySelector(`.mx_SSOButton.mx_SSOButton_brand_${idp.brand}`);

View file

@ -93,14 +93,14 @@ describe("Registration", function () {
it("should show form when custom URLs disabled", async function () { it("should show form when custom URLs disabled", async function () {
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
expect(container.querySelector("form")).toBeTruthy(); expect(container.querySelector("form")).toBeTruthy();
}); });
it("should show SSO options if those are available", async () => { it("should show SSO options if those are available", async () => {
mockClient.loginFlows.mockClear().mockResolvedValue({ flows: [{ type: "m.login.sso" }] }); mockClient.loginFlows.mockClear().mockResolvedValue({ flows: [{ type: "m.login.sso" }] });
const { container } = getComponent(); const { container } = getComponent();
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
const ssoButton = container.querySelector(".mx_SSOButton"); const ssoButton = container.querySelector(".mx_SSOButton");
expect(ssoButton).toBeTruthy(); expect(ssoButton).toBeTruthy();
@ -116,7 +116,7 @@ describe("Registration", function () {
}); });
const { container, rerender } = render(getRawComponent()); const { container, rerender } = render(getRawComponent());
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
fireEvent.click(container.querySelector(".mx_SSOButton")); fireEvent.click(container.querySelector(".mx_SSOButton"));
expect(registerRequest.mock.instances[0].baseUrl).toBe("https://matrix.org"); expect(registerRequest.mock.instances[0].baseUrl).toBe("https://matrix.org");
@ -126,7 +126,7 @@ describe("Registration", function () {
versions: [], versions: [],
}); });
rerender(getRawComponent("https://server2")); rerender(getRawComponent("https://server2"));
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading...")); await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading"));
fireEvent.click(container.querySelector(".mx_SSOButton")); fireEvent.click(container.querySelector(".mx_SSOButton"));
expect(registerRequest.mock.instances[1].baseUrl).toBe("https://server2"); expect(registerRequest.mock.instances[1].baseUrl).toBe("https://server2");

View file

@ -48,7 +48,7 @@ exports[`<BeaconStatus /> renders loading state 1`] = `
<span <span
class="mx_BeaconStatus_description_status" class="mx_BeaconStatus_description_status"
> >
Loading live location... Loading live location
</span> </span>
</div> </div>
</div> </div>

View file

@ -11,7 +11,7 @@ exports[`<OwnBeaconStatus /> renders without a beacon instance 1`] = `
<span <span
class="mx_BeaconStatus_description_status" class="mx_BeaconStatus_description_status"
> >
Loading live location... Loading live location
</span> </span>
</div> </div>
</div> </div>

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`PollCreateDialog renders a blank poll 1`] = `"<div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div><div data-focus-lock-disabled="false" role="dialog" aria-labelledby="mx_CompoundDialog_title" aria-describedby="mx_CompoundDialog_content" class="mx_CompoundDialog mx_ScrollableBaseDialog"><div class="mx_CompoundDialog_header"><h1>Create poll</h1><div aria-label="Close dialog" role="button" tabindex="0" class="mx_AccessibleButton mx_CompoundDialog_cancelButton"></div></div><form class="mx_CompoundDialog_form"><div class="mx_CompoundDialog_content"><div class="mx_PollCreateDialog"><h2>Poll type</h2><div class="mx_Field mx_Field_select"><select type="text" id="mx_Field_1"><option value="org.matrix.msc3381.poll.disclosed">Open poll</option><option value="org.matrix.msc3381.poll.undisclosed">Closed poll</option></select><label for="mx_Field_1"></label></div><p>Voters see results as soon as they have voted</p><h2>What is your poll question or topic?</h2><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="poll-topic-input" maxlength="340" label="Question or topic" placeholder="Write something..." type="text" value=""><label for="poll-topic-input">Question or topic</label></div><h2>Create options</h2><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_0" maxlength="340" label="Option 1" placeholder="Write an option" type="text" value=""><label for="pollcreate_option_0">Option 1</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_1" maxlength="340" label="Option 2" placeholder="Write an option" type="text" value=""><label for="pollcreate_option_1">Option 2</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_addOption mx_AccessibleButton_hasKind mx_AccessibleButton_kind_secondary">Add option</div></div></div><div class="mx_CompoundDialog_footer"><div role="button" tabindex="0" class="mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary_outline">Cancel</div><button type="submit" role="button" tabindex="0" aria-disabled="true" disabled="" class="mx_AccessibleButton mx_Dialog_nonDialogButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary mx_AccessibleButton_disabled">Create Poll</button></div></form></div><div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div>"`; exports[`PollCreateDialog renders a blank poll 1`] = `"<div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div><div data-focus-lock-disabled="false" role="dialog" aria-labelledby="mx_CompoundDialog_title" aria-describedby="mx_CompoundDialog_content" class="mx_CompoundDialog mx_ScrollableBaseDialog"><div class="mx_CompoundDialog_header"><h1>Create poll</h1><div aria-label="Close dialog" role="button" tabindex="0" class="mx_AccessibleButton mx_CompoundDialog_cancelButton"></div></div><form class="mx_CompoundDialog_form"><div class="mx_CompoundDialog_content"><div class="mx_PollCreateDialog"><h2>Poll type</h2><div class="mx_Field mx_Field_select"><select type="text" id="mx_Field_1"><option value="org.matrix.msc3381.poll.disclosed">Open poll</option><option value="org.matrix.msc3381.poll.undisclosed">Closed poll</option></select><label for="mx_Field_1"></label></div><p>Voters see results as soon as they have voted</p><h2>What is your poll question or topic?</h2><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="poll-topic-input" maxlength="340" label="Question or topic" placeholder="Write something" type="text" value=""><label for="poll-topic-input">Question or topic</label></div><h2>Create options</h2><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_0" maxlength="340" label="Option 1" placeholder="Write an option" type="text" value=""><label for="pollcreate_option_0">Option 1</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_1" maxlength="340" label="Option 2" placeholder="Write an option" type="text" value=""><label for="pollcreate_option_1">Option 2</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_addOption mx_AccessibleButton_hasKind mx_AccessibleButton_kind_secondary">Add option</div></div></div><div class="mx_CompoundDialog_footer"><div role="button" tabindex="0" class="mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary_outline">Cancel</div><button type="submit" role="button" tabindex="0" aria-disabled="true" disabled="" class="mx_AccessibleButton mx_Dialog_nonDialogButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary mx_AccessibleButton_disabled">Create Poll</button></div></form></div><div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div>"`;
exports[`PollCreateDialog renders a question and some options 1`] = `"<div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div><div data-focus-lock-disabled="false" role="dialog" aria-labelledby="mx_CompoundDialog_title" aria-describedby="mx_CompoundDialog_content" class="mx_CompoundDialog mx_ScrollableBaseDialog"><div class="mx_CompoundDialog_header"><h1>Create poll</h1><div aria-label="Close dialog" role="button" tabindex="0" class="mx_AccessibleButton mx_CompoundDialog_cancelButton"></div></div><form class="mx_CompoundDialog_form"><div class="mx_CompoundDialog_content"><div class="mx_PollCreateDialog"><h2>Poll type</h2><div class="mx_Field mx_Field_select"><select type="text" id="mx_Field_4"><option value="org.matrix.msc3381.poll.disclosed">Open poll</option><option value="org.matrix.msc3381.poll.undisclosed">Closed poll</option></select><label for="mx_Field_4"></label></div><p>Voters see results as soon as they have voted</p><h2>What is your poll question or topic?</h2><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="poll-topic-input" maxlength="340" label="Question or topic" placeholder="Write something..." type="text" value="How many turnips is the optimal number?"><label for="poll-topic-input">Question or topic</label></div><h2>Create options</h2><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_0" maxlength="340" label="Option 1" placeholder="Write an option" type="text" value="As many as my neighbour"><label for="pollcreate_option_0">Option 1</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_1" maxlength="340" label="Option 2" placeholder="Write an option" type="text" value="The question is meaningless"><label for="pollcreate_option_1">Option 2</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_2" maxlength="340" label="Option 3" placeholder="Write an option" type="text" value="Mu"><label for="pollcreate_option_2">Option 3</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_addOption mx_AccessibleButton_hasKind mx_AccessibleButton_kind_secondary">Add option</div></div></div><div class="mx_CompoundDialog_footer"><div role="button" tabindex="0" class="mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary_outline">Cancel</div><button type="submit" role="button" tabindex="0" class="mx_AccessibleButton mx_Dialog_nonDialogButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary">Create Poll</button></div></form></div><div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div>"`; exports[`PollCreateDialog renders a question and some options 1`] = `"<div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div><div data-focus-lock-disabled="false" role="dialog" aria-labelledby="mx_CompoundDialog_title" aria-describedby="mx_CompoundDialog_content" class="mx_CompoundDialog mx_ScrollableBaseDialog"><div class="mx_CompoundDialog_header"><h1>Create poll</h1><div aria-label="Close dialog" role="button" tabindex="0" class="mx_AccessibleButton mx_CompoundDialog_cancelButton"></div></div><form class="mx_CompoundDialog_form"><div class="mx_CompoundDialog_content"><div class="mx_PollCreateDialog"><h2>Poll type</h2><div class="mx_Field mx_Field_select"><select type="text" id="mx_Field_4"><option value="org.matrix.msc3381.poll.disclosed">Open poll</option><option value="org.matrix.msc3381.poll.undisclosed">Closed poll</option></select><label for="mx_Field_4"></label></div><p>Voters see results as soon as they have voted</p><h2>What is your poll question or topic?</h2><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="poll-topic-input" maxlength="340" label="Question or topic" placeholder="Write something" type="text" value="How many turnips is the optimal number?"><label for="poll-topic-input">Question or topic</label></div><h2>Create options</h2><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_0" maxlength="340" label="Option 1" placeholder="Write an option" type="text" value="As many as my neighbour"><label for="pollcreate_option_0">Option 1</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_1" maxlength="340" label="Option 2" placeholder="Write an option" type="text" value="The question is meaningless"><label for="pollcreate_option_1">Option 2</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_2" maxlength="340" label="Option 3" placeholder="Write an option" type="text" value="Mu"><label for="pollcreate_option_2">Option 3</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_addOption mx_AccessibleButton_hasKind mx_AccessibleButton_kind_secondary">Add option</div></div></div><div class="mx_CompoundDialog_footer"><div role="button" tabindex="0" class="mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary_outline">Cancel</div><button type="submit" role="button" tabindex="0" class="mx_AccessibleButton mx_Dialog_nonDialogButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary">Create Poll</button></div></form></div><div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div>"`;
exports[`PollCreateDialog renders info from a previous event 1`] = `"<div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div><div data-focus-lock-disabled="false" role="dialog" aria-labelledby="mx_CompoundDialog_title" aria-describedby="mx_CompoundDialog_content" class="mx_CompoundDialog mx_ScrollableBaseDialog"><div class="mx_CompoundDialog_header"><h1>Edit poll</h1><div aria-label="Close dialog" role="button" tabindex="0" class="mx_AccessibleButton mx_CompoundDialog_cancelButton"></div></div><form class="mx_CompoundDialog_form"><div class="mx_CompoundDialog_content"><div class="mx_PollCreateDialog"><h2>Poll type</h2><div class="mx_Field mx_Field_select"><select type="text" id="mx_Field_5"><option value="org.matrix.msc3381.poll.disclosed">Open poll</option><option value="org.matrix.msc3381.poll.undisclosed">Closed poll</option></select><label for="mx_Field_5"></label></div><p>Voters see results as soon as they have voted</p><h2>What is your poll question or topic?</h2><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="poll-topic-input" maxlength="340" label="Question or topic" placeholder="Write something..." type="text" value="Poll Q"><label for="poll-topic-input">Question or topic</label></div><h2>Create options</h2><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_0" maxlength="340" label="Option 1" placeholder="Write an option" type="text" value="Answer 1"><label for="pollcreate_option_0">Option 1</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_1" maxlength="340" label="Option 2" placeholder="Write an option" type="text" value="Answer 2"><label for="pollcreate_option_1">Option 2</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_addOption mx_AccessibleButton_hasKind mx_AccessibleButton_kind_secondary">Add option</div></div></div><div class="mx_CompoundDialog_footer"><div role="button" tabindex="0" class="mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary_outline">Cancel</div><button type="submit" role="button" tabindex="0" class="mx_AccessibleButton mx_Dialog_nonDialogButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary">Done</button></div></form></div><div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div>"`; exports[`PollCreateDialog renders info from a previous event 1`] = `"<div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div><div data-focus-lock-disabled="false" role="dialog" aria-labelledby="mx_CompoundDialog_title" aria-describedby="mx_CompoundDialog_content" class="mx_CompoundDialog mx_ScrollableBaseDialog"><div class="mx_CompoundDialog_header"><h1>Edit poll</h1><div aria-label="Close dialog" role="button" tabindex="0" class="mx_AccessibleButton mx_CompoundDialog_cancelButton"></div></div><form class="mx_CompoundDialog_form"><div class="mx_CompoundDialog_content"><div class="mx_PollCreateDialog"><h2>Poll type</h2><div class="mx_Field mx_Field_select"><select type="text" id="mx_Field_5"><option value="org.matrix.msc3381.poll.disclosed">Open poll</option><option value="org.matrix.msc3381.poll.undisclosed">Closed poll</option></select><label for="mx_Field_5"></label></div><p>Voters see results as soon as they have voted</p><h2>What is your poll question or topic?</h2><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="poll-topic-input" maxlength="340" label="Question or topic" placeholder="Write something" type="text" value="Poll Q"><label for="poll-topic-input">Question or topic</label></div><h2>Create options</h2><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_0" maxlength="340" label="Option 1" placeholder="Write an option" type="text" value="Answer 1"><label for="pollcreate_option_0">Option 1</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div class="mx_PollCreateDialog_option"><div class="mx_Field mx_Field_input mx_Field_labelAlwaysTopLeft mx_Field_placeholderIsHint"><input id="pollcreate_option_1" maxlength="340" label="Option 2" placeholder="Write an option" type="text" value="Answer 2"><label for="pollcreate_option_1">Option 2</label></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_removeOption"></div></div><div role="button" tabindex="0" class="mx_AccessibleButton mx_PollCreateDialog_addOption mx_AccessibleButton_hasKind mx_AccessibleButton_kind_secondary">Add option</div></div></div><div class="mx_CompoundDialog_footer"><div role="button" tabindex="0" class="mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary_outline">Cancel</div><button type="submit" role="button" tabindex="0" class="mx_AccessibleButton mx_Dialog_nonDialogButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_primary">Done</button></div></form></div><div data-focus-guard="true" tabindex="0" style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"></div>"`;

View file

@ -120,7 +120,7 @@ describe("<MBeaconBody />", () => {
); );
makeRoomWithStateEvents([beaconInfoEvent], { roomId, mockClient }); makeRoomWithStateEvents([beaconInfoEvent], { roomId, mockClient });
const component = getComponent({ mxEvent: beaconInfoEvent }); const component = getComponent({ mxEvent: beaconInfoEvent });
expect(component.text()).toEqual("Loading live location..."); expect(component.text()).toEqual("Loading live location");
}); });
it("does not open maximised map when on click when beacon is stopped", () => { it("does not open maximised map when on click when beacon is stopped", () => {
@ -227,7 +227,7 @@ describe("<MBeaconBody />", () => {
makeRoomWithStateEvents([aliceBeaconInfo], { roomId, mockClient }); makeRoomWithStateEvents([aliceBeaconInfo], { roomId, mockClient });
const component = getComponent({ mxEvent: aliceBeaconInfo }); const component = getComponent({ mxEvent: aliceBeaconInfo });
expect(component.text()).toEqual("Loading live location..."); expect(component.text()).toEqual("Loading live location");
}); });
it("does nothing on click when a beacon has no location", () => { it("does nothing on click when a beacon has no location", () => {

View file

@ -465,7 +465,7 @@ exports[`MPollBody renders a finished poll with no votes 1`] = `
</div> </div>
`; `;
exports[`MPollBody renders a loader while responses are still loading 1`] = `"Based on 4 votes<div class="mx_Spinner"><div class="mx_Spinner_icon" style="width: 16px; height: 16px;" aria-label="Loading..." role="progressbar" data-testid="spinner"></div></div>"`; exports[`MPollBody renders a loader while responses are still loading 1`] = `"Based on 4 votes<div class="mx_Spinner"><div class="mx_Spinner_icon" style="width: 16px; height: 16px;" aria-label="Loading" role="progressbar" data-testid="spinner"></div></div>"`;
exports[`MPollBody renders a poll that I have not voted in 1`] = ` exports[`MPollBody renders a poll that I have not voted in 1`] = `
<div> <div>

View file

@ -95,7 +95,7 @@ exports[`<MPollEndBody /> when poll start event exists in current timeline rende
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"

View file

@ -102,17 +102,17 @@ describe("<RoomPreviewBar />", () => {
const component = getComponent({ joining: true }); const component = getComponent({ joining: true });
expect(isSpinnerRendered(component)).toBeTruthy(); expect(isSpinnerRendered(component)).toBeTruthy();
expect(getMessage(component)?.textContent).toEqual("Joining …"); expect(getMessage(component)?.textContent).toEqual("Joining…");
}); });
it("renders rejecting message", () => { it("renders rejecting message", () => {
const component = getComponent({ rejecting: true }); const component = getComponent({ rejecting: true });
expect(isSpinnerRendered(component)).toBeTruthy(); expect(isSpinnerRendered(component)).toBeTruthy();
expect(getMessage(component)?.textContent).toEqual("Rejecting invite …"); expect(getMessage(component)?.textContent).toEqual("Rejecting invite…");
}); });
it("renders loading message", () => { it("renders loading message", () => {
const component = getComponent({ loading: true }); const component = getComponent({ loading: true });
expect(isSpinnerRendered(component)).toBeTruthy(); expect(isSpinnerRendered(component)).toBeTruthy();
expect(getMessage(component)?.textContent).toEqual("Loading …"); expect(getMessage(component)?.textContent).toEqual("Loading…");
}); });
it("renders not logged in message", () => { it("renders not logged in message", () => {

View file

@ -35,7 +35,7 @@ exports[`<DecryptionFailureBar /> Displays a loading spinner 1`] = `
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"
@ -48,7 +48,7 @@ exports[`<DecryptionFailureBar /> Displays a loading spinner 1`] = `
<div <div
class="mx_DecryptionFailureBar_message_headline" class="mx_DecryptionFailureBar_message_headline"
> >
Decrypting messages... Decrypting messages
</div> </div>
<div <div
class="mx_DecryptionFailureBar_message_body" class="mx_DecryptionFailureBar_message_body"

View file

@ -17,7 +17,7 @@ exports[`FontScalingPanel renders the font scaling UI 1`] = `
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"

View file

@ -694,7 +694,7 @@ exports[`<LoginWithQRFlow /> renders spinner while connecting 1`] = `
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"
@ -702,7 +702,7 @@ exports[`<LoginWithQRFlow /> renders spinner while connecting 1`] = `
/> />
</div> </div>
<p> <p>
Connecting... Connecting
</p> </p>
</div> </div>
</div> </div>
@ -756,7 +756,7 @@ exports[`<LoginWithQRFlow /> renders spinner while loading 1`] = `
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"
@ -806,7 +806,7 @@ exports[`<LoginWithQRFlow /> renders spinner while signing in 1`] = `
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"
@ -868,7 +868,7 @@ exports[`<LoginWithQRFlow /> renders spinner while verifying 1`] = `
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"
@ -921,7 +921,7 @@ exports[`<LoginWithQRFlow /> renders spinner whilst QR generating 1`] = `
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"

View file

@ -6,7 +6,7 @@ exports[`Module Components should override the factory for a ModuleSpinner 1`] =
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"

View file

@ -165,7 +165,7 @@ exports[`VoiceBroadcastHeader when rendering a live broadcast header with broadc
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"

View file

@ -46,7 +46,7 @@ exports[`VoiceBroadcastPlaybackBody when rendering a buffering voice broadcast s
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"

View file

@ -200,7 +200,7 @@ exports[`<VoiceBroadcastSmallPlaybackBody /> when rendering a buffering broadcas
class="mx_Spinner" class="mx_Spinner"
> >
<div <div
aria-label="Loading..." aria-label="Loading"
class="mx_Spinner_icon" class="mx_Spinner_icon"
data-testid="spinner" data-testid="spinner"
role="progressbar" role="progressbar"