Skip to content

Commit 11d478e

Browse files
committed
chore: add loading spinner in the network menu to show it is trying to change
1 parent 0b2107b commit 11d478e

File tree

3 files changed

+41
-7
lines changed

3 files changed

+41
-7
lines changed

source/components/Header/Menus/NetworkMenu.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import arrow from 'assets/images/arrow.png';
1111
import btcIcon from 'assets/images/btcIcon.svg';
1212
import ethIcon from 'assets/images/ethIcon.svg';
1313
import { Icon } from 'components/index';
14+
import Spinner from 'components/Spinner/Spinner';
1415
import { useUtils } from 'hooks/index';
1516
import { useController } from 'hooks/useController';
1617
import { dispatchChangeNetworkBgEvent } from 'scripts/Background/utils/bgActions';
@@ -45,6 +46,7 @@ export const NetworkMenu: React.FC<INetworkComponent> = (
4546
);
4647
const {
4748
activeAccount: { type: activeAccountType },
49+
isNetworkChanging,
4850
} = useSelector((state: RootState) => state.vault);
4951

5052
const activeNetwork = useSelector(
@@ -127,6 +129,7 @@ export const NetworkMenu: React.FC<INetworkComponent> = (
127129
>
128130
{networkType}
129131
</span>
132+
{isNetworkChanging && <Spinner size={16} color="#ffffff" />}
130133

131134
<img
132135
src={arrow}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import React from 'react';
2+
3+
const Spinner: React.FC<{ color?: string; size?: number }> = ({
4+
size = 16,
5+
color = '#ffffff',
6+
}) => (
7+
<svg
8+
width={size}
9+
height={size}
10+
viewBox="0 0 38 38"
11+
xmlns="http://www.w3.org/2000/svg"
12+
stroke={color}
13+
>
14+
<g fill="none" fillRule="evenodd">
15+
<g transform="translate(1 1)" strokeWidth="2">
16+
<circle strokeOpacity=".5" cx="18" cy="18" r="18" />
17+
<path d="M36 18c0-9.94-8.06-18-18-18">
18+
<animateTransform
19+
attributeName="transform"
20+
type="rotate"
21+
from="0 18 18"
22+
to="360 18 18"
23+
dur="1s"
24+
repeatCount="indefinite"
25+
/>
26+
</path>
27+
</g>
28+
</g>
29+
</svg>
30+
);
31+
32+
export default Spinner;

source/pages/SwitchNetwork/NetworkList.tsx

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export const NetworkList = ({ isChanging }: { isChanging: boolean }) => {
3232
const [selectedNetwork, setSelectedNetwork] = useState<string>(
3333
isBitcoinBased ? 'EVM' : 'UTXO'
3434
);
35+
const [isLoading, setIsLoading] = useState(false);
3536

3637
const {
3738
networkThatNeedsChanging,
@@ -53,6 +54,7 @@ export const NetworkList = ({ isChanging }: { isChanging: boolean }) => {
5354

5455
const handleChangeNetwork = async (network: INetwork, chain: string) => {
5556
try {
57+
setIsLoading(true);
5658
store.dispatch(setOpenDAppErrorModal(false));
5759

5860
await controllerEmitter(['wallet', 'setActiveNetwork'], [network, chain]);
@@ -62,6 +64,8 @@ export const NetworkList = ({ isChanging }: { isChanging: boolean }) => {
6264
navigate('/home');
6365
} catch (networkError) {
6466
window.close();
67+
} finally {
68+
setIsLoading(false);
6569
}
6670
};
6771

@@ -182,22 +186,17 @@ export const NetworkList = ({ isChanging }: { isChanging: boolean }) => {
182186
))}
183187
</div>
184188
<div className="mt-4">
185-
{/* <div className="flex justify-center items-center gap-2 mb-4">
186-
<img src={networkImg} alt="Network Icon" />
187-
<span className="underline text-white font-normal text-sm">
188-
Add new network
189-
</span>
190-
</div> */}
191189
<Button
192190
type="submit"
193-
disabled={!selectCurrentNetwork?.current}
191+
disabled={!selectCurrentNetwork?.current || isLoading}
194192
onClick={() =>
195193
handleChangeNetwork(
196194
selectCurrentNetwork?.current,
197195
selectCurrentNetwork?.chain
198196
)
199197
}
200198
className={`${isButtonDisabledBgStyle} rounded-[100px] w-[19.5rem] h-[40px] text-brand-blue400 text-base font-medium`}
199+
loading={isLoading}
201200
>
202201
Connect
203202
</Button>

0 commit comments

Comments
 (0)