From a2a386d939c15895477c0ee880dc663c0a88414d Mon Sep 17 00:00:00 2001 From: karancoder Date: Sat, 28 Sep 2024 01:36:09 +0530 Subject: [PATCH] fix: add capsule client check before rendering provider-ui components inside examples --- example/next/pages/index.tsx | 34 +++----------- example/next/ui/capsule-modals.tsx | 44 +++++++++++++++++++ example/starter/src/pages/index.tsx | 31 ++----------- .../starter/src/ui/modal/capsule-modals.tsx | 44 +++++++++++++++++++ example/vite/src/App.tsx | 2 + example/vite/src/components/CapsuleModals.tsx | 31 +++++++++++++ 6 files changed, 131 insertions(+), 55 deletions(-) create mode 100644 example/next/ui/capsule-modals.tsx create mode 100644 example/starter/src/ui/modal/capsule-modals.tsx create mode 100644 example/vite/src/components/CapsuleModals.tsx diff --git a/example/next/pages/index.tsx b/example/next/pages/index.tsx index 8da2757b..8589a07f 100644 --- a/example/next/pages/index.tsx +++ b/example/next/pages/index.tsx @@ -1,25 +1,20 @@ -import { Center, HStack, Spacer, Stack, Text, useColorMode } from "@chakra-ui/react"; -import { useAccount, useCapsule } from "graz"; +import "@leapwallet/cosmos-social-login-capsule-provider-ui/styles.css"; + +import { Center, HStack, Spacer, Stack, Text } from "@chakra-ui/react"; +import { useAccount } from "graz"; import type { NextPage } from "next"; -import dynamic from "next/dynamic"; import { BalanceList } from "ui/balance-list"; +import CapsuleModals from "ui/capsule-modals"; import { ChainSwitcher } from "ui/chain-switcher"; import { ConnectButton } from "ui/connect-button"; import { ConnectStatus } from "ui/connect-status"; import { ToggleTheme } from "ui/toggle-theme"; -import "@leapwallet/cosmos-social-login-capsule-provider-ui/styles.css"; - -const LeapSocialLogin = dynamic( - () => import("@leapwallet/cosmos-social-login-capsule-provider-ui").then((m) => m.CustomCapsuleModalView), - { ssr: false }, -); const HomePage: NextPage = () => { const { data: accountData } = useAccount({ chainId: "cosmoshub-4", }); - const { client, modalState, onAfterLoginSuccessful, setModalState, onLoginFailure } = useCapsule(); - const { colorMode } = useColorMode(); + return (
@@ -45,22 +40,7 @@ const HomePage: NextPage = () => { -
- { - void onAfterLoginSuccessful?.(); - }} - onLoginFailure={() => { - onLoginFailure(); - }} - setShowCapsuleModal={setModalState} - showCapsuleModal={modalState} - theme={colorMode} - /> -
+
); }; diff --git a/example/next/ui/capsule-modals.tsx b/example/next/ui/capsule-modals.tsx new file mode 100644 index 00000000..db6ce849 --- /dev/null +++ b/example/next/ui/capsule-modals.tsx @@ -0,0 +1,44 @@ +import "@leapwallet/cosmos-social-login-capsule-provider-ui/styles.css"; + +import { useColorMode } from "@chakra-ui/react"; +import { useCapsule } from "graz"; +import dynamic from "next/dynamic"; +import React from "react"; + +const LeapSocialLogin = dynamic( + () => import("@leapwallet/cosmos-social-login-capsule-provider-ui").then((m) => m.CustomCapsuleModalView), + { ssr: false }, +); + +const TransactionSigningModal = dynamic( + () => import("@leapwallet/cosmos-social-login-capsule-provider-ui").then((m) => m.TransactionSigningModal), + { ssr: false }, +); + +const CapsuleModals = () => { + const { client, modalState, onAfterLoginSuccessful, setModalState, onLoginFailure } = useCapsule(); + const { colorMode } = useColorMode(); + + return client ? ( +
+ { + void onAfterLoginSuccessful?.(); + }} + onLoginFailure={() => { + onLoginFailure(); + }} + setShowCapsuleModal={setModalState} + showCapsuleModal={modalState} + theme={colorMode} + /> + +
+ ) : null; +}; + +export default CapsuleModals; diff --git a/example/starter/src/pages/index.tsx b/example/starter/src/pages/index.tsx index daa77ebe..a4dfde6c 100644 --- a/example/starter/src/pages/index.tsx +++ b/example/starter/src/pages/index.tsx @@ -1,19 +1,9 @@ -import { Stack, useColorMode } from "@chakra-ui/react"; -import { useCapsule } from "graz"; -import dynamic from "next/dynamic"; +import { Stack } from "@chakra-ui/react"; import { Card } from "src/ui/card/chain"; +import CapsuleModals from "src/ui/modal/capsule-modals"; import { mainnetChains } from "src/utils/graz"; -import "@leapwallet/cosmos-social-login-capsule-provider-ui/styles.css"; - -const LeapSocialLogin = dynamic( - () => import("@leapwallet/cosmos-social-login-capsule-provider-ui").then((m) => m.CustomCapsuleModalView), - { ssr: false }, -); const HomePage = () => { - const { client, modalState, onAfterLoginSuccessful, setModalState, onLoginFailure } = useCapsule(); - - const { colorMode } = useColorMode(); return ( <> @@ -21,22 +11,7 @@ const HomePage = () => { ))} -
- { - void onAfterLoginSuccessful?.(); - }} - onLoginFailure={() => { - onLoginFailure(); - }} - setShowCapsuleModal={setModalState} - showCapsuleModal={modalState} - theme={colorMode} - /> -
+ ); }; diff --git a/example/starter/src/ui/modal/capsule-modals.tsx b/example/starter/src/ui/modal/capsule-modals.tsx new file mode 100644 index 00000000..db6ce849 --- /dev/null +++ b/example/starter/src/ui/modal/capsule-modals.tsx @@ -0,0 +1,44 @@ +import "@leapwallet/cosmos-social-login-capsule-provider-ui/styles.css"; + +import { useColorMode } from "@chakra-ui/react"; +import { useCapsule } from "graz"; +import dynamic from "next/dynamic"; +import React from "react"; + +const LeapSocialLogin = dynamic( + () => import("@leapwallet/cosmos-social-login-capsule-provider-ui").then((m) => m.CustomCapsuleModalView), + { ssr: false }, +); + +const TransactionSigningModal = dynamic( + () => import("@leapwallet/cosmos-social-login-capsule-provider-ui").then((m) => m.TransactionSigningModal), + { ssr: false }, +); + +const CapsuleModals = () => { + const { client, modalState, onAfterLoginSuccessful, setModalState, onLoginFailure } = useCapsule(); + const { colorMode } = useColorMode(); + + return client ? ( +
+ { + void onAfterLoginSuccessful?.(); + }} + onLoginFailure={() => { + onLoginFailure(); + }} + setShowCapsuleModal={setModalState} + showCapsuleModal={modalState} + theme={colorMode} + /> + +
+ ) : null; +}; + +export default CapsuleModals; diff --git a/example/vite/src/App.tsx b/example/vite/src/App.tsx index 6790675b..8dc49118 100644 --- a/example/vite/src/App.tsx +++ b/example/vite/src/App.tsx @@ -3,6 +3,7 @@ import "./App.css"; import { useAccount, useActiveChainIds, useConnect, useDisconnect } from "graz"; import reactLogo from "./assets/react.svg"; +import CapsuleModals from "./components/CapsuleModals"; // eslint-disable-next-line prefer-arrow-functions/prefer-arrow-functions, react/function-component-definition export default function App() { @@ -47,6 +48,7 @@ export default function App() { {isDisconnected ? "Connect Wallet" : null} + ); } diff --git a/example/vite/src/components/CapsuleModals.tsx b/example/vite/src/components/CapsuleModals.tsx new file mode 100644 index 00000000..eee1e0fe --- /dev/null +++ b/example/vite/src/components/CapsuleModals.tsx @@ -0,0 +1,31 @@ +import "@leapwallet/cosmos-social-login-capsule-provider-ui/styles.css"; + +import { CustomCapsuleModalView, TransactionSigningModal } from "@leapwallet/cosmos-social-login-capsule-provider-ui"; +import { useCapsule } from "graz"; +import React from "react"; + +const CapsuleModals = () => { + const { client, modalState, onAfterLoginSuccessful, setModalState, onLoginFailure } = useCapsule(); + return client ? ( +
+ { + void onAfterLoginSuccessful?.(); + }} + onLoginFailure={() => { + onLoginFailure(); + }} + setShowCapsuleModal={setModalState} + showCapsuleModal={modalState} + theme="light" + /> + +
+ ) : null; +}; + +export default CapsuleModals;