diff --git a/package.json b/package.json index 24fe155..12bcfa4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@project-serum/swap-ui", - "version": "0.1.0-alpha.5", + "version": "0.1.0-alpha.6", "main": "dist/index.js", "types": "dist/index.d.ts", "homepage": ".", diff --git a/src/swap/components/Info.tsx b/src/swap/components/Info.tsx index a4331f7..74ae4e5 100644 --- a/src/swap/components/Info.tsx +++ b/src/swap/components/Info.tsx @@ -8,10 +8,10 @@ import { import { Info } from "@material-ui/icons"; import PopupState, { bindTrigger, bindPopover } from "material-ui-popup-state"; import { PublicKey } from "@solana/web3.js"; -import { useTokenMap } from "./context/TokenList"; -import { useSwapContext, useSwapFair } from "./context/Swap"; -import { useMint } from "./context/Mint"; -import { useRoute, useMarketName, useFair } from "./context/Dex"; +import { useTokenMap } from "../context/TokenList"; +import { useSwapContext, useSwapFair } from "../context/Swap"; +import { useMint } from "../context/Mint"; +import { useRoute, useMarketName, useFair } from "../context/Dex"; const useStyles = makeStyles((theme) => ({ infoLabel: { diff --git a/src/swap/components/Settings.tsx b/src/swap/components/Settings.tsx index 3591347..fa5f75b 100644 --- a/src/swap/components/Settings.tsx +++ b/src/swap/components/Settings.tsx @@ -30,11 +30,11 @@ import { import { ToggleButton } from "@material-ui/lab"; import { SettingsOutlined as Settings, Close } from "@material-ui/icons"; import PopupState, { bindTrigger, bindPopover } from "material-ui-popup-state"; -import { useSwapContext, useSwapFair } from "./context/Swap"; -import { useMarket, useOpenOrders, useDexContext } from "./context/Dex"; -import { useTokenMap } from "./context/TokenList"; -import { useMint } from "./context/Mint"; -import { useOwnedTokenAccount } from "./context/Token"; +import { useSwapContext, useSwapFair } from "../context/Swap"; +import { useMarket, useOpenOrders, useDexContext } from "../context/Dex"; +import { useTokenMap } from "../context/TokenList"; +import { useMint } from "../context/Mint"; +import { useOwnedTokenAccount } from "../context/Token"; const useStyles = makeStyles((theme) => ({ tab: { diff --git a/src/swap/components/Swap.tsx b/src/swap/components/Swap.tsx index ac4480d..d7d3a2b 100644 --- a/src/swap/components/Swap.tsx +++ b/src/swap/components/Swap.tsx @@ -1,8 +1,6 @@ import { useState } from "react"; import { PublicKey } from "@solana/web3.js"; -import { TokenListContainer } from "@solana/spl-token-registry"; -import { BN, Provider } from "@project-serum/anchor"; -import { Swap as SwapClient } from "@project-serum/swap"; +import { BN } from "@project-serum/anchor"; import { makeStyles, Card, @@ -12,23 +10,21 @@ import { TextField, } from "@material-ui/core"; import { ExpandMore } from "@material-ui/icons"; -import { SwapContextProvider, useSwapContext } from "./context/Swap"; +import { useSwapContext } from "../context/Swap"; import { - DexContextProvider, useDexContext, useOpenOrders, useRouteVerbose, useMarket, -} from "./context/Dex"; -import { MintContextProvider, useMint } from "./context/Mint"; +} from "../context/Dex"; +import { useMint } from "../context/Mint"; import { - TokenListContextProvider, useTokenMap, useTokenListContext, SPL_REGISTRY_SOLLET_TAG, SPL_REGISTRY_WORM_TAG, -} from "./context/TokenList"; -import { TokenContextProvider, useOwnedTokenAccount } from "./context/Token"; +} from "../context/TokenList"; +import { useOwnedTokenAccount } from "../context/Token"; import TokenDialog from "./TokenDialog"; import { SettingsButton } from "./Settings"; import { InfoLabel } from "./Info"; @@ -61,45 +57,7 @@ const useStyles = makeStyles(() => ({ }, })); -export default function Swap({ - style, - provider, - tokenList, - fromMint, - toMint, - fromAmount, - toAmount, -}: { - provider: Provider; - tokenList: TokenListContainer; - fromMint?: PublicKey; - toMint?: PublicKey; - fromAmount?: number; - toAmount?: number; - style?: any; -}) { - const swapClient = new SwapClient(provider, tokenList); - return ( - - - - - - - - - - - - ); -} - -function SwapCard({ style }: { style?: any }) { +export default function SwapCard({ style }: { style?: any }) { const styles = useStyles(); return (
diff --git a/src/swap/components/TokenDialog.tsx b/src/swap/components/TokenDialog.tsx index 5d5ddf3..8cbe867 100644 --- a/src/swap/components/TokenDialog.tsx +++ b/src/swap/components/TokenDialog.tsx @@ -15,7 +15,7 @@ import { Tab, } from "@material-ui/core"; import { TokenIcon } from "./Swap"; -import { useSwappableTokens } from "./context/TokenList"; +import { useSwappableTokens } from "../context/TokenList"; const useStyles = makeStyles(() => ({ dialogContent: { diff --git a/src/swap/components/context/Dex.tsx b/src/swap/context/Dex.tsx similarity index 99% rename from src/swap/components/context/Dex.tsx rename to src/swap/context/Dex.tsx index 640d2ab..10a4bd4 100644 --- a/src/swap/components/context/Dex.tsx +++ b/src/swap/context/Dex.tsx @@ -18,7 +18,7 @@ import { WORM_USDC_MARKET, WORM_USDT_MARKET, WORM_MARKET_BASE, -} from "../../utils/pubkeys"; +} from "../utils/pubkeys"; import { useTokenMap, useTokenListContext } from "./TokenList"; import { fetchSolletInfo, requestWormholeSwapMarketIfNeeded } from "./Sollet"; diff --git a/src/swap/components/context/Mint.tsx b/src/swap/context/Mint.tsx similarity index 100% rename from src/swap/components/context/Mint.tsx rename to src/swap/context/Mint.tsx diff --git a/src/swap/components/context/Sollet.tsx b/src/swap/context/Sollet.tsx similarity index 100% rename from src/swap/components/context/Sollet.tsx rename to src/swap/context/Sollet.tsx diff --git a/src/swap/components/context/Swap.tsx b/src/swap/context/Swap.tsx similarity index 98% rename from src/swap/components/context/Swap.tsx rename to src/swap/context/Swap.tsx index e749e7a..b025df3 100644 --- a/src/swap/components/context/Swap.tsx +++ b/src/swap/context/Swap.tsx @@ -1,7 +1,7 @@ import React, { useContext, useState } from "react"; import * as assert from "assert"; import { PublicKey } from "@solana/web3.js"; -import { SRM_MINT, USDC_MINT } from "../../utils/pubkeys"; +import { SRM_MINT, USDC_MINT } from "../utils/pubkeys"; import { useFairRoute } from "./Dex"; const DEFAULT_SLIPPAGE_PERCENT = 0.5; diff --git a/src/swap/components/context/Token.tsx b/src/swap/context/Token.tsx similarity index 96% rename from src/swap/components/context/Token.tsx rename to src/swap/context/Token.tsx index 71cb817..84aa9bc 100644 --- a/src/swap/components/context/Token.tsx +++ b/src/swap/context/Token.tsx @@ -1,7 +1,7 @@ import React, { useContext, useState, useEffect } from "react"; import { PublicKey } from "@solana/web3.js"; import { AccountInfo as TokenAccount } from "@solana/spl-token"; -import { getOwnedTokenAccounts } from "../../utils/tokens"; +import { getOwnedTokenAccounts } from "../utils/tokens"; const _TokenContext = React.createContext(null); diff --git a/src/swap/components/context/TokenList.tsx b/src/swap/context/TokenList.tsx similarity index 98% rename from src/swap/components/context/TokenList.tsx rename to src/swap/context/TokenList.tsx index 0134751..da2e174 100644 --- a/src/swap/components/context/TokenList.tsx +++ b/src/swap/context/TokenList.tsx @@ -1,6 +1,6 @@ import React, { useContext, useMemo } from "react"; import { TokenInfo } from "@solana/spl-token-registry"; -import { USDC_MINT, USDT_MINT } from "../../utils/pubkeys"; +import { USDC_MINT, USDT_MINT } from "../utils/pubkeys"; type TokenListContext = { tokenMap: Map; diff --git a/src/swap/index.ts b/src/swap/index.ts deleted file mode 100644 index d45ebd3..0000000 --- a/src/swap/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -// The swap module exports a single `Swap` component that can be embedded into -// applications. - -import Swap from "./components/Swap"; -export default Swap; diff --git a/src/swap/index.tsx b/src/swap/index.tsx new file mode 100644 index 0000000..ceb2bf6 --- /dev/null +++ b/src/swap/index.tsx @@ -0,0 +1,50 @@ +import { PublicKey } from "@solana/web3.js"; +import { TokenListContainer } from "@solana/spl-token-registry"; +import { Provider } from "@project-serum/anchor"; +import { Swap as SwapClient } from "@project-serum/swap"; +import { SwapContextProvider } from "./context/Swap"; +import { DexContextProvider } from "./context/Dex"; +import { MintContextProvider } from "./context/Mint"; +import { TokenListContextProvider } from "./context/TokenList"; +import { TokenContextProvider } from "./context/Token"; +import SwapCard from "./components/Swap"; + +// The swap module exports a single `Swap` component that can be embedded into +// applications. +export default function Swap({ + style, + provider, + tokenList, + fromMint, + toMint, + fromAmount, + toAmount, +}: { + provider: Provider; + tokenList: TokenListContainer; + fromMint?: PublicKey; + toMint?: PublicKey; + fromAmount?: number; + toAmount?: number; + style?: any; +}) { + const swapClient = new SwapClient(provider, tokenList); + return ( + + + + + + + + + + + + ); +}