Skip to content

Commit 8f3b9d7

Browse files
Workaround to avoiding button loading dom changes when doing in-context translations
1 parent cad4678 commit 8f3b9d7

File tree

5 files changed

+20
-10
lines changed

5 files changed

+20
-10
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { Button, ButtonProps } from "@chakra-ui/react"
2+
import { flags } from "../flags"
3+
4+
// Workaround to avoid error caused by DOM changes when doing in-context translations.
5+
export const ButtonWithLoading = ({isLoading, ...props}: ButtonProps) => {
6+
return <Button {...props} isLoading={isLoading && !flags.translate} disabled={isLoading}/>
7+
}

src/components/ConnectFirstDialog.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44
* SPDX-License-Identifier: MIT
55
*/
66
import {
7-
Button,
87
Modal,
98
ModalBody,
109
ModalCloseButton,
1110
ModalContent,
1211
ModalFooter,
1312
ModalHeader,
1413
ModalOverlay,
15-
Text,
14+
Text
1615
} from "@chakra-ui/react";
1716
import { ComponentProps, useCallback, useEffect, useState } from "react";
1817
import { FormattedMessage } from "react-intl";
1918
import { ConnectionStatus } from "../connect-status-hooks";
2019
import { useConnectionStage } from "../connection-stage-hooks";
2120
import { ConnectOptions } from "../store";
21+
import { ButtonWithLoading } from "./ButtonWithLoading";
2222

2323
interface ConnectFirstDialogProps
2424
extends Omit<ComponentProps<typeof Modal>, "children"> {
@@ -124,13 +124,13 @@ const ConnectFirstDialog = ({
124124
</Text>
125125
</ModalBody>
126126
<ModalFooter justifyContent="flex-end">
127-
<Button
127+
<ButtonWithLoading
128128
variant="primary"
129129
onClick={handleConnect}
130130
isLoading={isWaiting}
131131
>
132132
<FormattedMessage id="connect-action" />
133-
</Button>
133+
</ButtonWithLoading>
134134
</ModalFooter>
135135
</ModalContent>
136136
</ModalOverlay>

src/components/IncompatibleEditorDevice.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
import { ReactNode } from "react";
2121
import { FormattedMessage } from "react-intl";
2222
import { useProject } from "../hooks/project-hooks";
23+
import { ButtonWithLoading } from "./ButtonWithLoading";
2324

2425
interface IncompatibleEditorDeviceProps {
2526
isOpen: boolean;
@@ -122,7 +123,7 @@ const IncompatibleEditorDevice = ({
122123
id={onBack ? "back-action" : "cancel-action"}
123124
/>
124125
</Button>
125-
<Button
126+
<ButtonWithLoading
126127
onClick={onNext ?? onClose}
127128
variant={onNext ? "primary" : "secondary"}
128129
size="lg"
@@ -131,7 +132,7 @@ const IncompatibleEditorDevice = ({
131132
<FormattedMessage
132133
id={onNext ? "continue-makecode-action" : "cancel-action"}
133134
/>
134-
</Button>
135+
</ButtonWithLoading>
135136
</HStack>
136137
</ModalFooter>
137138
</ModalContent>

src/pages/ImportPage.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import { MicrobitOrgResource } from "../model";
2828
import { validateProjectName } from "../project-name";
2929
import { useStore } from "../store";
3030
import { createDataSamplesPageUrl } from "../urls";
31+
import { ButtonWithLoading } from "../components/ButtonWithLoading";
3132

3233
const ImportPage = () => {
3334
const intl = useIntl();
@@ -152,15 +153,15 @@ const ImportPage = () => {
152153
/>
153154
</Stack>
154155
<HStack pt={5} justifyContent="flex-end">
155-
<Button
156+
<ButtonWithLoading
156157
isDisabled={!isValidSetup}
157158
isLoading={fetchingProject}
158159
variant="primary"
159160
onClick={handleStartSession}
160161
size="lg"
161162
>
162163
<FormattedMessage id="start-session-action" />
163-
</Button>
164+
</ButtonWithLoading>
164165
</HStack>
165166
</Stack>
166167
</VStack>

src/pages/TestingModelPage.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import { keyboardShortcuts, useShortcut } from "../keyboard-shortcut-hooks";
3737
import { useStore } from "../store";
3838
import { tourElClassname } from "../tours";
3939
import { createDataSamplesPageUrl } from "../urls";
40+
import { ButtonWithLoading } from "../components/ButtonWithLoading";
4041

4142
const TestingModelPage = () => {
4243
const navigate = useNavigate();
@@ -153,7 +154,7 @@ const TestingModelPage = () => {
153154
>
154155
<Menu>
155156
<ButtonGroup isAttached>
156-
<Button
157+
<ButtonWithLoading
157158
variant="primary"
158159
onClick={maybeOpenEditor}
159160
className={tourElClassname.editInMakeCodeButton}
@@ -162,7 +163,7 @@ const TestingModelPage = () => {
162163
}
163164
>
164165
<FormattedMessage id="edit-in-makecode-action" />
165-
</Button>
166+
</ButtonWithLoading>
166167
<MoreMenuButton
167168
variant="primary"
168169
aria-label={intl.formatMessage({

0 commit comments

Comments
 (0)