QR code rotation

This commit is contained in:
Fedor Indutny 2025-01-14 12:14:32 -08:00 committed by GitHub
parent f4e5b8c80e
commit ba80d310d2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 579 additions and 404 deletions

View file

@ -132,6 +132,8 @@ function InstallScreenQrCode(
const { i18n } = props;
let contents: ReactNode;
let isJustButton = false;
switch (props.loadingState) {
case LoadingState.Loading:
contents = <Spinner size="24px" svgSize="small" />;
@ -146,7 +148,9 @@ function InstallScreenQrCode(
>
{i18n('icu:Install__qr-failed-load__error--timeout')}
</span>
<RetryButton i18n={i18n} onClick={props.retryGetQrCode} />
<RetryButton onClick={props.retryGetQrCode}>
{i18n('icu:Install__qr-failed-load__retry')}
</RetryButton>
</>
);
break;
@ -162,7 +166,9 @@ function InstallScreenQrCode(
components={{ paragraph: Paragraph }}
/>
</span>
<RetryButton i18n={i18n} onClick={props.retryGetQrCode} />
<RetryButton onClick={props.retryGetQrCode}>
{i18n('icu:Install__qr-failed-load__retry')}
</RetryButton>
</>
);
break;
@ -186,6 +192,14 @@ function InstallScreenQrCode(
</>
);
break;
case InstallScreenQRCodeError.MaxRotations:
isJustButton = true;
contents = (
<RetryButton onClick={props.retryGetQrCode}>
{i18n('icu:Install__qr-max-rotations__retry')}
</RetryButton>
);
break;
default:
throw missingCaseError(props.error);
}
@ -210,7 +224,8 @@ function InstallScreenQrCode(
props.loadingState === LoadingState.Loaded &&
getQrCodeClassName('--loaded'),
props.loadingState === LoadingState.LoadFailed &&
getQrCodeClassName('--load-failed')
getQrCodeClassName('--load-failed'),
isJustButton && getQrCodeClassName('--just-button')
)}
>
{contents}
@ -219,11 +234,11 @@ function InstallScreenQrCode(
}
function RetryButton({
i18n,
onClick,
children,
}: {
i18n: LocalizerType;
onClick: () => void;
children: ReactNode;
}): JSX.Element {
const onKeyDown = useCallback(
(ev: React.KeyboardEvent<HTMLButtonElement>) => {
@ -243,7 +258,7 @@ function RetryButton({
onKeyDown={onKeyDown}
type="button"
>
{i18n('icu:Install__qr-failed-load__retry')}
{children}
</button>
);
}