diff --git a/src/App.tsx b/src/App.tsx
index a68fc36c..e987abeb 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -10,17 +10,22 @@ import Header from "./components/Header";
import { PWAModal } from "./components/PWAModal";
import { SplashScreen } from "./components/Splashscreen";
import { usePrivateKeyAsAuth } from "./hooks/usePrivateKeyAsAuth";
+import ConnectWalletDialog from "./screens/ConnectWallet";
import UnderConstruction from "./screens/Errors/UnderConstruction";
import Faucet from "./screens/Faucet";
+import SpotScreen from "./screens/SpotScreen";
import { SwapScreen } from "./screens/SwapScreen";
-import TradeScreen from "./screens/TradeScreen";
+import { MODAL_TYPE } from "./stores/ModalStore";
import { DEFAULT_MARKET, ROUTES } from "./constants";
+import { useStores } from "./stores";
const isUnderConstruction = false;
const DEFAULT_SPOT_ROUTE = `/spot/${DEFAULT_MARKET}`;
const App: React.FC = observer(() => {
+ const { modalStore } = useStores();
+
usePrivateKeyAsAuth();
if (isUnderConstruction) {
@@ -31,7 +36,7 @@ const App: React.FC = observer(() => {
- } path={`${ROUTES.SPOT}/:marketId`} />
+ } path={`${ROUTES.SPOT}/:marketId`} />
} path={ROUTES.SWAP} />
} path={ROUTES.FAUCET} />
} path="*" />
@@ -40,6 +45,7 @@ const App: React.FC = observer(() => {
+ modalStore.close()} />
);
});
diff --git a/src/assets/icons/onboardingArrow.svg b/src/assets/icons/onboardingArrow.svg
index 548004dc..37bc8956 100644
--- a/src/assets/icons/onboardingArrow.svg
+++ b/src/assets/icons/onboardingArrow.svg
@@ -1,3 +1,3 @@
diff --git a/src/components/Button.tsx b/src/components/Button.tsx
index 150f12c4..78d3432e 100644
--- a/src/components/Button.tsx
+++ b/src/components/Button.tsx
@@ -4,7 +4,7 @@ import styled from "@emotion/styled";
import { TEXT_TYPES, TEXT_TYPES_MAP } from "@components/Text";
import { media } from "@src/themes/breakpoints";
-const Button = styled.button<{
+export interface ButtonProps {
green?: boolean;
red?: boolean;
text?: boolean;
@@ -12,7 +12,9 @@ const Button = styled.button<{
grey?: boolean;
fitContent?: boolean;
active?: boolean;
-}>`
+}
+
+const Button = styled.button`
text-decoration: none;
white-space: nowrap;
display: flex;
diff --git a/src/components/ConnectWalletButton.tsx b/src/components/ConnectWalletButton.tsx
new file mode 100644
index 00000000..edcfb291
--- /dev/null
+++ b/src/components/ConnectWalletButton.tsx
@@ -0,0 +1,28 @@
+import React from "react";
+import { observer } from "mobx-react-lite";
+
+import { useStores } from "@src/stores";
+import { MODAL_TYPE } from "@src/stores/ModalStore";
+
+import Button, { ButtonProps } from "./Button";
+
+interface Props extends ButtonProps {
+ connectText?: string;
+ children: React.ReactNode;
+}
+
+export const ConnectWalletButton: React.FC = observer(
+ ({ connectText = "Connect wallet", children, ...props }) => {
+ const { accountStore, modalStore } = useStores();
+
+ if (!accountStore.isConnected) {
+ return (
+
+ );
+ }
+
+ return <>{children}>;
+ },
+);
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
index fe713101..735c85f2 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/Header/Header.tsx
@@ -3,29 +3,29 @@ import styled from "@emotion/styled";
import { observer } from "mobx-react";
import Button from "@components/Button";
-import ConnectedWallet from "@components/Header/ConnectedWallet";
import DataBase from "@src/assets/icons/dataBase.svg?react";
import Logo from "@src/assets/icons/logo.svg?react";
import Menu from "@src/assets/icons/menu.svg?react";
import useFlag from "@src/hooks/useFlag";
import { useMedia } from "@src/hooks/useMedia";
-import ConnectWalletDialog from "@src/screens/ConnectWallet";
+import { MODAL_TYPE } from "@src/stores/ModalStore";
import { media } from "@src/themes/breakpoints";
import { useStores } from "@stores";
+import { ConnectWalletButton } from "../ConnectWalletButton";
import { AccountInfoSheet } from "../Modal";
import { SmartFlex } from "../SmartFlex";
+import WalletButton from "../WalletButton";
-import ConnectedWalletButton from "./ConnectedWalletButton";
import { MenuNav } from "./MenuNav";
import MobileMenu from "./MobileMenu";
+import WalletAddressButton from "./WalletAddressButton";
const Header: React.FC = observer(() => {
- const { modalStore, accountStore, quickAssetsStore } = useStores();
+ const { modalStore, quickAssetsStore } = useStores();
const media = useMedia();
const [isMobileMenuOpen, openMobileMenu, closeMobileMenu] = useFlag();
- const [isConnectDialogVisible, openConnectDialog, closeConnectDialog] = useFlag();
const [isAccountInfoSheetOpen, openAccountInfo, closeAccountInfo] = useFlag();
useEffect(() => {
@@ -44,30 +44,16 @@ const Header: React.FC = observer(() => {
}
};
+ const openConnectModal = () => modalStore.open(MODAL_TYPE.CONNECT_MODAL);
+
const renderWallet = () => {
const dataOnboardingConnectKey = `connect-${media.mobile ? "mobile" : "desktop"}`;
- if (!accountStore.address) {
- return (
-
-
-
- );
- }
-
- if (media.mobile) {
- return (
-
-
-
- );
- }
+ const walletButtonContent = media.mobile ? : ;
return (
-
-
+
+ {walletButtonContent}
);
};
@@ -123,11 +109,8 @@ const Header: React.FC = observer(() => {
isOpen={isMobileMenuOpen}
onAccountClick={openAccountInfo}
onClose={closeMobileMenu}
- onWalletConnect={openConnectDialog}
+ onWalletConnect={openConnectModal}
/>
- {isConnectDialogVisible ? (
-
- ) : null}
);
diff --git a/src/components/Header/MobileMenu.tsx b/src/components/Header/MobileMenu.tsx
index 0715743e..a65376d8 100644
--- a/src/components/Header/MobileMenu.tsx
+++ b/src/components/Header/MobileMenu.tsx
@@ -1,19 +1,16 @@
import React from "react";
-import { useLocation } from "react-router-dom";
import styled from "@emotion/styled";
import { observer } from "mobx-react-lite";
-import Text from "@components/Text";
import { useStores } from "@src/stores";
-import { media } from "@src/themes/breakpoints";
import Button from "../Button";
import MenuOverlay from "../MenuOverlay";
import SizedBox from "../SizedBox";
import { SmartFlex } from "../SmartFlex";
-import ConnectedWalletButton from "./ConnectedWalletButton";
import { MenuNav } from "./MenuNav";
+import WalletAddressButton from "./WalletAddressButton";
interface IProps {
isOpen: boolean;
@@ -23,8 +20,7 @@ interface IProps {
}
const MobileMenu: React.FC = observer(({ isOpen, onAccountClick, onWalletConnect, onClose }) => {
- const { accountStore, quickAssetsStore, mixPanelStore } = useStores();
- const location = useLocation();
+ const { accountStore, quickAssetsStore } = useStores();
const handleAccountClick = () => {
onAccountClick();
@@ -36,9 +32,9 @@ const MobileMenu: React.FC = observer(({ isOpen, onAccountClick, onWalle
onClose();
};
- const renderWalletButton = () => {
+ const renderWalletAddressButton = () => {
return accountStore.address ? (
-
+
) : (