From 9e5001d542062e16de02fda5a810fb7ed7a22098 Mon Sep 17 00:00:00 2001 From: perry <235711131719k@gmail.com> Date: Sat, 19 Mar 2022 14:23:32 +0900 Subject: [PATCH 1/4] add button as send sol transaction --- src/components/Main.tsx | 12 +- src/components/Swap.tsx | 54 ++++++ src/components/notify.tsx | 51 ++++++ src/package.json | 5 + src/pages/_app.tsx | 93 +++++----- src/yarn.lock | 351 +++++++++++++++++++++++++++++++++++++- 6 files changed, 507 insertions(+), 59 deletions(-) create mode 100644 src/components/Swap.tsx create mode 100644 src/components/notify.tsx diff --git a/src/components/Main.tsx b/src/components/Main.tsx index 8c85cba..b1ff6b6 100644 --- a/src/components/Main.tsx +++ b/src/components/Main.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { WalletMultiButton } from "@solana/wallet-adapter-react-ui"; +import { SendTransaction } from "./Swap"; const style = { wrapper: `absolute top-12 bottom-12 w-screen flex items-center justify-center mt-14`, @@ -28,7 +28,7 @@ const Main = () => { className={style.transferPropInput} placeholder="0.0" pattern="^[0-9]*[.,]?[0-9]*$" - onChange={null} + onChange={undefined} />
@@ -42,18 +42,18 @@ const Main = () => { type="text" className={style.transferPropInput} placeholder="0.0" - onChange={null} + onChange={undefined} />
{" "}
-
UXD
+
SOL
-
- +
+
diff --git a/src/components/Swap.tsx b/src/components/Swap.tsx new file mode 100644 index 0000000..52b8c69 --- /dev/null +++ b/src/components/Swap.tsx @@ -0,0 +1,54 @@ +import { Button } from "@mui/material"; +import { useConnection, useWallet } from "@solana/wallet-adapter-react"; +import { + Keypair, + SystemProgram, + Transaction, + TransactionSignature, +} from "@solana/web3.js"; +import { FC, useCallback } from "react"; +// import { useNotify } from "./notify"; + +export const SendTransaction: FC = () => { + const { connection } = useConnection(); + const { publicKey, sendTransaction } = useWallet(); + // const notify = useNotify(); + + const onClick = useCallback(async () => { + if (!publicKey) { + // notify("error", "Wallet not connected!"); + return; + } + + let signature: TransactionSignature = ""; + try { + const transaction = new Transaction().add( + SystemProgram.transfer({ + fromPubkey: publicKey, + toPubkey: Keypair.generate().publicKey, + lamports: 1, + }) + ); + + signature = await sendTransaction(transaction, connection); + // notify("info", "Transaction sent:", signature); + + await connection.confirmTransaction(signature, "processed"); + // notify("success", "Transaction successful!", signature); + } catch (error: any) { + // notify("error", `Transaction failed! ${error?.message}`, signature); + return; + } + }, [publicKey, connection, sendTransaction]); + + return ( + + ); +}; diff --git a/src/components/notify.tsx b/src/components/notify.tsx new file mode 100644 index 0000000..1290c1b --- /dev/null +++ b/src/components/notify.tsx @@ -0,0 +1,51 @@ +import LaunchIcon from "@mui/icons-material/Launch"; +import { Link } from "@mui/material"; +import { styled } from "@mui/material/styles"; +import { useSnackbar, VariantType } from "notistack"; +import { useCallback } from "react"; + +const Notification = styled("span")(() => ({ + display: "flex", + alignItems: "center", +})); + +const StyledLink = styled(Link)(() => ({ + color: "#ffffff", + display: "flex", + alignItems: "center", + marginLeft: 16, + textDecoration: "underline", + "&:hover": { + color: "#000000", + }, +})); + +const StyledLaunchIcon = styled(LaunchIcon)(() => ({ + fontSize: 20, + marginLeft: 8, +})); + +export function useNotify() { + const { enqueueSnackbar } = useSnackbar(); + + return useCallback( + (variant: VariantType, message: string, signature?: string) => { + enqueueSnackbar( + + {message} + {signature && ( + + Transaction + + + )} + , + { variant } + ); + }, + [enqueueSnackbar] + ); +} diff --git a/src/package.json b/src/package.json index 796abe2..02b3d38 100644 --- a/src/package.json +++ b/src/package.json @@ -9,6 +9,10 @@ "lint": "next lint" }, "dependencies": { + "@emotion/react": "^11.8.2", + "@emotion/styled": "^11.8.1", + "@mui/icons-material": "^5.5.1", + "@mui/material": "^5.5.1", "@saberhq/stableswap-sdk": "^1.12.53", "@saberhq/token-utils": "^1.12.53", "@solana/wallet-adapter-base": "^0.9.5", @@ -19,6 +23,7 @@ "bs58": "^5.0.0", "jsbi": "^4.2.0", "next": "12.1.0", + "notistack": "^2.0.3", "react": "^17.0.2", "react-dom": "17.0.2" }, diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index b0f5ef5..3dff479 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,55 +1,58 @@ -import { WalletAdapterNetwork } from '@solana/wallet-adapter-base'; -import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react'; -import { WalletModalProvider } from '@solana/wallet-adapter-react-ui'; +import { WalletAdapterNetwork } from "@solana/wallet-adapter-base"; import { - LedgerWalletAdapter, - PhantomWalletAdapter, - SlopeWalletAdapter, - SolflareWalletAdapter, - SolletExtensionWalletAdapter, - SolletWalletAdapter, - TorusWalletAdapter, -} from '@solana/wallet-adapter-wallets'; -import { clusterApiUrl } from '@solana/web3.js'; -import { AppProps } from 'next/app'; -import { FC, useMemo } from 'react'; + ConnectionProvider, + WalletProvider, +} from "@solana/wallet-adapter-react"; +import { WalletModalProvider } from "@solana/wallet-adapter-react-ui"; +import { + LedgerWalletAdapter, + PhantomWalletAdapter, + SlopeWalletAdapter, + SolflareWalletAdapter, + SolletExtensionWalletAdapter, + SolletWalletAdapter, + TorusWalletAdapter, +} from "@solana/wallet-adapter-wallets"; +import { clusterApiUrl } from "@solana/web3.js"; +import { AppProps } from "next/app"; +import { FC, useMemo } from "react"; // Use require instead of import since order matters -require('@solana/wallet-adapter-react-ui/styles.css'); -require('../styles/globals.css'); +require("@solana/wallet-adapter-react-ui/styles.css"); +require("../styles/globals.css"); const App: FC = ({ Component, pageProps }) => { - // Can be set to 'devnet', 'testnet', or 'mainnet-beta' - const network = WalletAdapterNetwork.Devnet; + // Can be set to 'devnet', 'testnet', or 'mainnet-beta' + const network = WalletAdapterNetwork.Mainnet; - // You can also provide a custom RPC endpoint - const endpoint = useMemo(() => clusterApiUrl(network), [network]); + // You can also provide a custom RPC endpoint + const endpoint = useMemo(() => clusterApiUrl(network), [network]); - // @solana/wallet-adapter-wallets includes all the adapters but supports tree shaking and lazy loading -- - // Only the wallets you configure here will be compiled into your application, and only the dependencies - // of wallets that your users connect to will be loaded - const wallets = useMemo( - () => [ - new PhantomWalletAdapter(), - new SlopeWalletAdapter(), - new SolflareWalletAdapter({ network }), - new TorusWalletAdapter(), - new LedgerWalletAdapter(), - new SolletWalletAdapter({ network }), - new SolletExtensionWalletAdapter({ network }), - ], - [network] - ); + // @solana/wallet-adapter-wallets includes all the adapters but supports tree shaking and lazy loading -- + // Only the wallets you configure here will be compiled into your application, and only the dependencies + // of wallets that your users connect to will be loaded + const wallets = useMemo( + () => [ + new PhantomWalletAdapter(), + new SlopeWalletAdapter(), + new SolflareWalletAdapter({ network }), + new TorusWalletAdapter(), + new LedgerWalletAdapter(), + new SolletWalletAdapter({ network }), + new SolletExtensionWalletAdapter({ network }), + ], + [network] + ); - return ( - - - - - - - - ); + return ( + + + + + + + + ); }; -export default App; \ No newline at end of file +export default App; diff --git a/src/yarn.lock b/src/yarn.lock index 0e47756..bdbc873 100644 --- a/src/yarn.lock +++ b/src/yarn.lock @@ -9,6 +9,18 @@ dependencies: "@babel/highlight" "^7.16.7" +"@babel/helper-module-imports@^7.12.13": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" @@ -23,6 +35,13 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/plugin-syntax-jsx@^7.12.13": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/runtime-corejs3@^7.10.2": version "7.17.2" resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz" @@ -45,6 +64,21 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.13.10", "@babel/runtime@^7.17.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" + integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/types@^7.16.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@blocto/sdk@^0.2.21": version "0.2.21" resolved "https://registry.yarnpkg.com/@blocto/sdk/-/sdk-0.2.21.tgz#40b729f0ef6b2e46942dfe992f5cccb6abaa4403" @@ -56,6 +90,107 @@ eip1193-provider "^1.0.1" js-sha3 "^0.8.0" +"@emotion/babel-plugin@^11.7.1": + version "11.7.2" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz#fec75f38a6ab5b304b0601c74e2a5e77c95e5fa0" + integrity sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/runtime" "^7.13.10" + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.5" + "@emotion/serialize" "^1.0.2" + babel-plugin-macros "^2.6.1" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.0.13" + +"@emotion/cache@^11.7.1": + version "11.7.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539" + integrity sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/sheet" "^1.1.0" + "@emotion/utils" "^1.0.0" + "@emotion/weak-memoize" "^0.2.5" + stylis "4.0.13" + +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/is-prop-valid@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95" + integrity sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ== + dependencies: + "@emotion/memoize" "^0.7.4" + +"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" + integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== + +"@emotion/react@^11.8.2": + version "11.8.2" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.8.2.tgz#e51f5e6372e22e82780836c9288da19af4b51e70" + integrity sha512-+1bcHBaNJv5nkIIgnGKVsie3otS0wF9f1T1hteF3WeVvMNQEtfZ4YyFpnphGoot3ilU/wWMgP2SgIDuHLE/wAA== + dependencies: + "@babel/runtime" "^7.13.10" + "@emotion/babel-plugin" "^11.7.1" + "@emotion/cache" "^11.7.1" + "@emotion/serialize" "^1.0.2" + "@emotion/utils" "^1.1.0" + "@emotion/weak-memoize" "^0.2.5" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.2.tgz#77cb21a0571c9f68eb66087754a65fa97bfcd965" + integrity sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A== + dependencies: + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.4" + "@emotion/unitless" "^0.7.5" + "@emotion/utils" "^1.0.0" + csstype "^3.0.2" + +"@emotion/sheet@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" + integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== + +"@emotion/styled@^11.8.1": + version "11.8.1" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.8.1.tgz#856f6f63aceef0eb783985fa2322e2bf66d04e17" + integrity sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@emotion/babel-plugin" "^11.7.1" + "@emotion/is-prop-valid" "^1.1.2" + "@emotion/serialize" "^1.0.2" + "@emotion/utils" "^1.1.0" + +"@emotion/unitless@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@emotion/utils@^1.0.0", "@emotion/utils@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf" + integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ== + +"@emotion/weak-memoize@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + "@eslint/eslintrc@^1.2.1": version "1.2.1" resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz" @@ -170,6 +305,92 @@ resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.0.tgz#c012c1ecc1a0e53d50e6af381618dca5268461c1" integrity sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw== +"@mui/base@5.0.0-alpha.72": + version "5.0.0-alpha.72" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.72.tgz#551d64402ee5065cf81fd1388a3e7ab8c426fe3e" + integrity sha512-WCAooa9eqbsC68LhyKtDBRumH4hV1eRZ0A3SDKFHSwYG9fCOdsFv/H1dIYRJM0rwD45bMnuDiG3Qmx7YsTiptw== + dependencies: + "@babel/runtime" "^7.17.2" + "@emotion/is-prop-valid" "^1.1.2" + "@mui/utils" "^5.4.4" + "@popperjs/core" "^2.11.3" + clsx "^1.1.1" + prop-types "^15.7.2" + react-is "^17.0.2" + +"@mui/icons-material@^5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.5.1.tgz#848a57972617411370775980cbc6990588d4aafb" + integrity sha512-40f68p5+Yhq3dCn3QYHqQt5RETPyR3AkDw+fma8PtcjqvZ+d+jF84kFmT6NqwA3he7TlwluEtkyAmPzUE4uPdA== + dependencies: + "@babel/runtime" "^7.17.2" + +"@mui/material@^5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.5.1.tgz#9ca89a8b32afd59c843a5bc0332b0786cf9bf1d0" + integrity sha512-bJSYgymgSZ7btPTNnWFrr2EmGoVQc4A/0WLfP/ESY2dxnhnbFDwt7twiOKmJp3u84YXriEDt5v9EZQLf7A+y0Q== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/base" "5.0.0-alpha.72" + "@mui/system" "^5.5.1" + "@mui/types" "^7.1.3" + "@mui/utils" "^5.4.4" + "@types/react-transition-group" "^4.4.4" + clsx "^1.1.1" + csstype "^3.0.11" + hoist-non-react-statics "^3.3.2" + prop-types "^15.7.2" + react-is "^17.0.2" + react-transition-group "^4.4.2" + +"@mui/private-theming@^5.4.4": + version "5.4.4" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.4.4.tgz#cc2b2d897888ce5d1c319adfa2c50c0063a649ab" + integrity sha512-V/gxttr6736yJoU9q+4xxXsa0K/w9Hn9pg99zsOHt7i/O904w2CX5NHh5WqDXtoUzVcayLF0RB17yr6l79CE+A== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/utils" "^5.4.4" + prop-types "^15.7.2" + +"@mui/styled-engine@^5.4.4": + version "5.4.4" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.4.4.tgz#8991b2e2dd47ae60071e7f042a5fab8e6e092e82" + integrity sha512-AKx3rSgB6dmt5f7iP4K18mLFlE5/9EfJe/5EH9Pyqez8J/CPkTgYhJ/Va6qtlrcunzpui+uG/vfuf04yAZekSg== + dependencies: + "@babel/runtime" "^7.17.2" + "@emotion/cache" "^11.7.1" + prop-types "^15.7.2" + +"@mui/system@^5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.5.1.tgz#1f2b2a8c5542db6176e3b5a8ed12aea602cdeb81" + integrity sha512-2hynI4hN8304hOCT8sc4knJviwUUYJ7XK3mXwQ0nagVGOPnWSOad/nYADm7K0vdlCeUXLIbDbe7oNN3Kaiu2kA== + dependencies: + "@babel/runtime" "^7.17.2" + "@mui/private-theming" "^5.4.4" + "@mui/styled-engine" "^5.4.4" + "@mui/types" "^7.1.3" + "@mui/utils" "^5.4.4" + clsx "^1.1.1" + csstype "^3.0.11" + prop-types "^15.7.2" + +"@mui/types@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.3.tgz#d7636f3046110bcccc63e6acfd100e2ad9ca712a" + integrity sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA== + +"@mui/utils@^5.4.4": + version "5.4.4" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.4.4.tgz#bd7dde4f48f60c02b6debf976bd74f3505b188fe" + integrity sha512-hfYIXEuhc2mXMGN5nUPis8beH6uE/zl3uMWJcyHX0/LN/+QxO9zhYuV6l8AsAaphHFyS/fBv0SW3Nid7jw5hKQ== + dependencies: + "@babel/runtime" "^7.17.2" + "@types/prop-types" "^15.7.4" + "@types/react-is" "^16.7.1 || ^17.0.0" + prop-types "^15.7.2" + react-is "^17.0.2" + "@next/env@12.1.0": version "12.1.0" resolved "https://registry.npmjs.org/@next/env/-/env-12.1.0.tgz" @@ -263,6 +484,11 @@ resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== +"@popperjs/core@^2.11.3": + version "2.11.4" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.4.tgz#d8c7b8db9226d2d7664553a0741ad7d0397ee503" + integrity sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg== + "@project-serum/sol-wallet-adapter@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.2.0.tgz#e1fa5508bf13110429bf26e10b818182015f2161" @@ -713,7 +939,7 @@ dependencies: "@types/retry" "*" -"@types/prop-types@*": +"@types/prop-types@*", "@types/prop-types@^15.7.4": version "15.7.4" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== @@ -728,7 +954,21 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react@^17.0.40": +"@types/react-is@^16.7.1 || ^17.0.0": + version "17.0.3" + resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" + integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" + integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^17.0.40": version "17.0.40" resolved "https://registry.npmjs.org/@types/react/-/react-17.0.40.tgz" integrity sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ== @@ -1003,6 +1243,15 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== +babel-plugin-macros@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1271,6 +1520,11 @@ circular-json@^0.5.9: resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== +clsx@^1.1.0, clsx@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1305,11 +1559,29 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +convert-source-map@^1.5.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + core-js-pure@^3.20.2: version "3.21.1" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + cosmiconfig@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" @@ -1370,7 +1642,7 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csstype@^3.0.2: +csstype@^3.0.11, csstype@^3.0.2: version "3.0.11" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== @@ -1478,6 +1750,14 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dotenv@10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" @@ -1921,6 +2201,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" @@ -2098,6 +2383,13 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -2108,7 +2400,7 @@ ignore@^5.2.0: resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -2616,6 +2908,14 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +notistack@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/notistack/-/notistack-2.0.3.tgz#9007550e5cbc14df84d1d54e7a55ac0948eb59e8" + integrity sha512-krmVFtTO9kEY1Pa4NrbyexrjiRcV6TqBM2xLx8nuDea1g96Z/OZfkvVLmYKkTvoSJ3jyQntWK16z86ssW5kt4A== + dependencies: + clsx "^1.1.0" + hoist-non-react-statics "^3.3.0" + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2886,7 +3186,7 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -prop-types@^15.8.1: +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -2934,11 +3234,26 @@ react-dom@17.0.2: object-assign "^4.1.1" scheduler "^0.20.2" -react-is@^16.13.1: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-transition-group@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" @@ -2986,7 +3301,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.20.0, resolve@^1.22.0: +resolve@^1.12.0, resolve@^1.20.0, resolve@^1.22.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -3073,6 +3388,11 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-json-utils@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" @@ -3164,6 +3484,11 @@ source-map-support@^0.5.17: buffer-from "^1.0.0" source-map "^0.6.0" +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -3236,6 +3561,11 @@ styled-jsx@5.0.0: resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.0.tgz#816b4b92e07b1786c6b7111821750e0ba4d26e77" integrity sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA== +stylis@4.0.13: + version "4.0.13" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" + integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== + superstruct@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" @@ -3307,6 +3637,11 @@ tiny-invariant@^1.2.0: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -3519,7 +3854,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2: +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== From 49a975ae8b0788a8d3e876661c0cbbb141e56036 Mon Sep 17 00:00:00 2001 From: adust09 Date: Sat, 19 Mar 2022 16:52:34 +0900 Subject: [PATCH 2/4] =?UTF-8?q?amount=E3=82=92props=E3=81=A7=E6=B8=A1?= =?UTF-8?q?=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Main.tsx | 3 ++- src/components/Swap.tsx | 15 +++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/components/Main.tsx b/src/components/Main.tsx index b1ff6b6..a2c22f5 100644 --- a/src/components/Main.tsx +++ b/src/components/Main.tsx @@ -43,6 +43,7 @@ const Main = () => { className={style.transferPropInput} placeholder="0.0" onChange={undefined} + // value={this.state.text} />
{" "} @@ -53,7 +54,7 @@ const Main = () => {
- +
diff --git a/src/components/Swap.tsx b/src/components/Swap.tsx index 52b8c69..f51d20d 100644 --- a/src/components/Swap.tsx +++ b/src/components/Swap.tsx @@ -6,10 +6,16 @@ import { Transaction, TransactionSignature, } from "@solana/web3.js"; -import { FC, useCallback } from "react"; +import { FC, ReactNode, useCallback } from "react"; + +type Props = { + amount: number + // children: ReactNode +} + // import { useNotify } from "./notify"; -export const SendTransaction: FC = () => { +export const SendTransaction: FC = ({amount}) => { const { connection } = useConnection(); const { publicKey, sendTransaction } = useWallet(); // const notify = useNotify(); @@ -21,13 +27,14 @@ export const SendTransaction: FC = () => { } let signature: TransactionSignature = ""; + let swapAmount : number = amount; try { const transaction = new Transaction().add( SystemProgram.transfer({ fromPubkey: publicKey, toPubkey: Keypair.generate().publicKey, - lamports: 1, - }) + lamports: amount, + },) ); signature = await sendTransaction(transaction, connection); From 5ee3f5797f818d565a4515812d2be556afa05c45 Mon Sep 17 00:00:00 2001 From: adust09 Date: Sat, 19 Mar 2022 17:37:26 +0900 Subject: [PATCH 3/4] =?UTF-8?q?change=20transaction=20=E2=86=92=20tx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Main.tsx | 24 ++++++++++++++++++------ src/components/Swap.tsx | 31 +++++++++++++++++++------------ 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/src/components/Main.tsx b/src/components/Main.tsx index a2c22f5..36ca6fc 100644 --- a/src/components/Main.tsx +++ b/src/components/Main.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import { SendTransaction } from "./Swap"; const style = { @@ -16,6 +16,16 @@ const style = { }; const Main = () => { + const [values, setValues] = useState({ + placeholder: 0, + }); + + function handleInputChange(e: { target: any; }) { + const target = e.target; + const value = target.type === "checkbox" ? target.checked : target.value; + setValues({ ...values}); + } + return (
@@ -28,12 +38,13 @@ const Main = () => { className={style.transferPropInput} placeholder="0.0" pattern="^[0-9]*[.,]?[0-9]*$" - onChange={undefined} + value={values.placeholder} + onChange={handleInputChange} />
-
USDC
+
USDC→SOL
@@ -43,18 +54,19 @@ const Main = () => { className={style.transferPropInput} placeholder="0.0" onChange={undefined} - // value={this.state.text} + value={values.placeholder} + // onChange={handleInputChange} />
{" "}
-
SOL
+
SOL→USDC
- +
diff --git a/src/components/Swap.tsx b/src/components/Swap.tsx index f51d20d..6dce9df 100644 --- a/src/components/Swap.tsx +++ b/src/components/Swap.tsx @@ -1,4 +1,5 @@ import { Button } from "@mui/material"; +import { u64 } from "@saberhq/token-utils"; import { useConnection, useWallet } from "@solana/wallet-adapter-react"; import { Keypair, @@ -7,15 +8,16 @@ import { TransactionSignature, } from "@solana/web3.js"; import { FC, ReactNode, useCallback } from "react"; +import BN from "bn.js"; +import { addUsdcToSolInstruction } from "../libs/composeSwap"; type Props = { - amount: number - // children: ReactNode -} + amount: number; +}; // import { useNotify } from "./notify"; -export const SendTransaction: FC = ({amount}) => { +export const SendTransaction: FC = ({ amount }) => { const { connection } = useConnection(); const { publicKey, sendTransaction } = useWallet(); // const notify = useNotify(); @@ -27,17 +29,22 @@ export const SendTransaction: FC = ({amount}) => { } let signature: TransactionSignature = ""; - let swapAmount : number = amount; + let swapAmount: number = amount; try { - const transaction = new Transaction().add( - SystemProgram.transfer({ - fromPubkey: publicKey, - toPubkey: Keypair.generate().publicKey, - lamports: amount, - },) + const transaction = new Transaction(); + const swapUsdcAmount = new u64(swapAmount); + const swapUxdAmount = new u64( + swapUsdcAmount.mul(new BN(995)).div(new BN(1000)).toNumber() + ); + + const tx = await addUsdcToSolInstruction( + transaction, + publicKey, + swapUsdcAmount, + swapUxdAmount ); - signature = await sendTransaction(transaction, connection); + signature = await sendTransaction(tx, connection); // notify("info", "Transaction sent:", signature); await connection.confirmTransaction(signature, "processed"); From 92c8d5695a6167c1692fbd9a81d0f08d8582ebc7 Mon Sep 17 00:00:00 2001 From: perry <235711131719k@gmail.com> Date: Sat, 19 Mar 2022 18:45:06 +0900 Subject: [PATCH 4/4] demo --- src/components/Main.tsx | 10 +++++----- src/components/Swap.tsx | 14 +++++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/components/Main.tsx b/src/components/Main.tsx index 36ca6fc..91fb4a6 100644 --- a/src/components/Main.tsx +++ b/src/components/Main.tsx @@ -20,10 +20,10 @@ const Main = () => { placeholder: 0, }); - function handleInputChange(e: { target: any; }) { + function handleInputChange(e: { target: any }) { const target = e.target; const value = target.type === "checkbox" ? target.checked : target.value; - setValues({ ...values}); + setValues({ ...values }); } return ( @@ -38,7 +38,7 @@ const Main = () => { className={style.transferPropInput} placeholder="0.0" pattern="^[0-9]*[.,]?[0-9]*$" - value={values.placeholder} + // value={values.placeholder} onChange={handleInputChange} />
@@ -48,7 +48,7 @@ const Main = () => {
-
+ {/*
{
SOL→USDC
- + */}
diff --git a/src/components/Swap.tsx b/src/components/Swap.tsx index 6dce9df..bd8b831 100644 --- a/src/components/Swap.tsx +++ b/src/components/Swap.tsx @@ -29,10 +29,10 @@ export const SendTransaction: FC = ({ amount }) => { } let signature: TransactionSignature = ""; - let swapAmount: number = amount; + // let swapAmount: number = amount; try { const transaction = new Transaction(); - const swapUsdcAmount = new u64(swapAmount); + const swapUsdcAmount = new u64(9000000); const swapUxdAmount = new u64( swapUsdcAmount.mul(new BN(995)).div(new BN(1000)).toNumber() ); @@ -47,7 +47,11 @@ export const SendTransaction: FC = ({ amount }) => { signature = await sendTransaction(tx, connection); // notify("info", "Transaction sent:", signature); - await connection.confirmTransaction(signature, "processed"); + const confrimTx = await connection.confirmTransaction( + signature, + "processed" + ); + alert("Transaction successful! \n txid: " + signature); // notify("success", "Transaction successful!", signature); } catch (error: any) { // notify("error", `Transaction failed! ${error?.message}`, signature); @@ -58,11 +62,11 @@ export const SendTransaction: FC = ({ amount }) => { return ( ); };