diff --git a/frontend/src/App-unifyre.tsx b/frontend/src/App-unifyre.tsx deleted file mode 100644 index cb0da2b..0000000 --- a/frontend/src/App-unifyre.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import './App.scss'; -import { - BrowserRouter as Router, -} from "react-router-dom"; -import { Provider as AlertProvider } from 'react-alert'; -import { WaitingContainer } from './components/Waiting'; -import { Provider } from 'react-redux'; -import { store } from './common/Store'; -// @ts-ignore -import { Dialogue, } from 'unifyre-web-components'; -// @ts-ignore -import AlertTemplate from 'react-alert-template-basic' -import { DashboardContainer } from './pages/dashboard/DashboardContainer'; - -// optional configuration -const options = { - // you can also just use 'bottom center' - timeout: 4000, -} - -function App() { - return ( - - - - - - - - - - ) -} - -export default App; diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx deleted file mode 100644 index a53698a..0000000 --- a/frontend/src/App.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import logo from './logo.svg'; -import './App.css'; - -function App() { - return ( -
-
- logo -

- Edit src/App.tsx and save to reload. -

- - Learn React - -
-
- ); -} - -export default App; diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx index 8e49d43..8332d4c 100644 --- a/frontend/src/index.tsx +++ b/frontend/src/index.tsx @@ -1,19 +1,19 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App-web3'; -import * as serviceWorker from './serviceWorker'; -import './fonts/SawarabiGothic-Regular.ttf'; -import { BackendMode } from './common/Utils'; +import React from "react"; +import ReactDOM from "react-dom"; +import "./index.css"; +import App from "./App-web3"; +import * as serviceWorker from "./serviceWorker"; +import "./fonts/SawarabiGothic-Regular.ttf"; +import { BackendMode } from "./common/Utils"; -BackendMode.mode = 'web3'; -BackendMode.app = 'staking'; +BackendMode.mode = "web3"; +BackendMode.app = "staking"; ReactDOM.render( , - document.getElementById('root') + document.getElementById("root") ); // If you want your app to work offline and load faster, you can change diff --git a/frontend/src/pages/dashboard/DashboardContainer.tsx b/frontend/src/pages/dashboard/DashboardContainer.tsx deleted file mode 100644 index 8beef42..0000000 --- a/frontend/src/pages/dashboard/DashboardContainer.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import React, {useEffect} from 'react'; -import { Dashboard, DashboardDispatch, DashboardProps } from './Dashboard'; -import { Switch, Route } from 'react-router-dom'; -import { - Row, ThemedText, Gap, Page, - // @ts-ignore -} from 'unifyre-web-components'; -import { connect } from 'react-redux'; -import { CONFIG, IocModule } from '../../common/IocModule'; -import { MainContainer } from '../main/MainContainer'; -import { StakingContractContainer } from '../stakingContract/StakingContractContainer'; -import { StakeTokenContainer } from '../stakeToken/StakeTokenContainer'; -import { UnstakeTokenContainer } from '../unstakeToken/UnstakeTokenContainer'; -import {ConfirmTxnContainer} from '../confirmation/ConfirmTxnContainer'; -import { BackendMode, Utils } from '../../common/Utils'; -import { ResponsivePageWrapper } from '../../base/ResponsivePageWrapper'; -import { defaultDarkThemeConstantsBuilder, Theme, ThemeConstantProvider } from 'unifyre-react-helper'; -function DashboardComponent(props: DashboardProps&DashboardDispatch) { - const {onLoad} = props; - useEffect(() => { - console.log("heeleelleel") - onLoad(); - }, [onLoad]); - let themeProvider = new ThemeConstantProvider('unifyre', defaultDarkThemeConstantsBuilder - .set(Theme.Font.main, "'Open Sans', sans-serif") - .set(Theme.Colors.themeNavBkg, "$Color.bkgShade2") - .set(Theme.Logo.logo, 'https://staking.ferrum.network/static/media/logo.44e552d9.png') - .build()); - const testAlert = CONFIG.isProd ? undefined : (<>TEST MODE) - if (props.initialized) { - // Render the routes - return ( - <> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { - Utils.getQueryparam('continuation') ? - : - } - - - - - ); - } - - const fatalError = props.fatalError ? ( - <> - - {'Could not open the app'} - - - {props.fatalError} - - - ) : ( - - Connecting... - - ); - - return ( - - {testAlert} - - - - - {fatalError} - - ); -} - -export const DashboardContainer = connect( - Dashboard.mapStateToProps, Dashboard.mapDispatchToProps)(DashboardComponent); \ No newline at end of file diff --git a/frontend/src/pages/main/MainContainer.tsx b/frontend/src/pages/main/MainContainer.tsx deleted file mode 100644 index 1d7e7bd..0000000 --- a/frontend/src/pages/main/MainContainer.tsx +++ /dev/null @@ -1,237 +0,0 @@ -import React, {useContext} from 'react'; -import { connect } from 'react-redux'; -import { useHistory } from 'react-router-dom'; -import { - Page,PageTopPart, Row, ThemedText, Gap, - // @ts-ignore -} from 'unifyre-web-components'; -import { Main, MainDispatch, MainProps } from './Main'; -import 'react-circular-progressbar/dist/styles.css'; -import {ThemeContext, Theme} from 'unifyre-react-helper'; -import {CategoryBtn} from "./../../components/Categories"; -import { StakingApp } from "../../common/Types"; -import {Transactions} from '../../components/transactions'; -import { Utils } from '../../common/Utils'; -function MainComponent(props: MainProps&MainDispatch) { - const theme = useContext(ThemeContext); - const styles = themedStyles(theme); - const history = useHistory(); - const {stakings} = props; - - const recentTx = props.stakeEvents && props.stakeEvents.length ? ( - <> - - {'Recent Transactions'} - - - { - props.stakeEvents.length > 0 && - props.stakeEvents.map((e, idx) => ( - - - )) - } - { - props.stakeEvents.length === 0 && - -
- You Have Made No Recent Transactions -
-
- } - - ) : undefined; - - - return ( - - - {`${props.symbol} Staking`} -
-
- - { - stakings.map((e:StakingApp, i: number) => - props.onContractSelected(history, e, props.userAddress)} - />) - } - - {recentTx} -
- ); -} - -//@ts-ignore -const themedStyles = (theme) => ({ - btnContainer: { - display: 'flex', - color: 'black', - justifyContent: 'center', - width: '100%', - backgroundColor: 'white', - borderRadius: '15px', - padding: '15px', - fontSize: '15px' - }, - miniText: { - fontSize: '14px', - }, - symb:{ - fontSize: '17px', - }, - rewards:{ - backgroundColor: 'white', - color: '#c1052a', - textAlign: "center" as "center", - borderRadius: '5px', - fontSize: '17px', - fontWeight: "bold" as "bold", - margin: '5px 0px', - padding: '2px 0px' - }, - tokenInfo: { - display: 'flex', - color: 'white', - justifyContent: 'space-around', - alignItems: 'center' - }, - tokenSymbol: { - margin: '0px 10px' - }, - listContainer: { - display: 'flex', - flexDirection: 'column', - justifyContent: 'flex-start', - alignItems: 'stretch', - }, - listItemContainer: { - display: 'flex', - flexDirection: 'row', - justifyContent: 'flex-start', - alignItems: 'center', - minHeight: theme.get(Theme.Spaces.line) * 4, - padding: theme.get(Theme.Spaces.line), - }, - stakedText:{ - fontFamily: 'Sawarabi Gothic', - marginTop: 'auto', - margin: '3px', - justifyContent: 'center', - alignItems: 'center', - textAlign: "center" as "center", - lineHeight: 1 - }, - commonText: { - fontFamily: 'Sawarabi Gothic', - fontWeight: 'bold', - fontSize: '16.5px', - letterSpacing: '1px' - }, - unifyreTextColor: { - color: '#9a3531' - }, - stakingInfoHeader: { - justifyContent: 'center', - fontSize: '14px', - fontWeight: 'bold', - letterSpacing: 1.3, - lineHeight: '1.2' - }, - stakingAmountStyle: { - color: '#ffff', - fontSize: '30px', - lineHeight: 1, - fontWeight: '900', - letterSpacing: '3px' - }, - stakingSymbol:{ - paddingTop: '3px', - letterSpacing: 1, - fontSize:'13px', - fontWeight: 200 - }, - unifyreMainTextlineHeight: { - lineHeight: 0.9 - }, - smallerMediumText:{ - fontSize: '14px', - letterSpacing: '1px', - lineHeight: '0.8', - fontWeight: 200 - }, - navHeader: { - fontSize: '17px', - lineHeight: 1 - }, - mediumText: { - fontSize: '25px', - fontWeight: 'bold', - letterSpacing: '2px', - lineHeight: '1.3' - }, - littleText: { - fontSize: '12.5px', - fontWeight: '200' - }, - percentStake: { - textAlign: "center" as "center", - marginTop: '15px', - marginRight: '0px', - marginLeft: '20px', - marginBottom: '2px', - width:'45%', - display: 'flex', - flexDirection: "row" as "row", - }, - arrows: { - marginRight: '10px', - marginLeft: '10px', - width: '16px' - }, - divider: { - height: '3px', - borderTopStyle: "solid" as "solid", - borderTopColor: 'rgba(249, 64, 43, 1)', - width: '5%', - margin: '0px auto', - }, - highlight:{ - color: 'rgb(255, 59, 47)' - }, - DurText: { - fontSize: '12.5px' - }, - btnText: { - color: '#ffffff', - letterSpacing: '2px', - lineHeight: '1.7' - }, - bottomFix:{ - width: '99%', - marginBottom: '1rem' - }, - header: { - fontSize: '45px', - width: '80%', - lineHeight: 0.9, - marginLeft: '15pt' - } -}); - -export const MainContainer = connect( - Main.mapStateToProps, Main.mapDispatchToProps)(MainComponent); \ No newline at end of file diff --git a/frontend/src/pages/stakeToken/StakeTokenContainer.tsx b/frontend/src/pages/stakeToken/StakeTokenContainer.tsx deleted file mode 100644 index 2ffd6a0..0000000 --- a/frontend/src/pages/stakeToken/StakeTokenContainer.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import React, {useContext} from 'react'; -import { connect } from 'react-redux'; -import { useHistory } from 'react-router-dom'; -import { - Page,PageTopPart, Row, ThemedText, Gap, InputCurrency, ThemedButton, ErrorMessage, - InputGroupAddon, ThemedLink - // @ts-ignore -} from 'unifyre-web-components'; -import { formatter, Utils } from "../../common/Utils"; -import { StakeToken, StakeTokenDispatch, StakeTokenProps } from './StakeToken'; -import { Big } from 'big.js'; -import {ThemeContext} from 'unifyre-react-helper'; -import { LoaderContainer } from '../../components/Loader'; - -function StakeTokenComponent(props: StakeTokenProps&StakeTokenDispatch) { - const theme = useContext(ThemeContext); - const styles = themedStyles(theme); - const history = useHistory(); - const {balance} = props; - const error = props.error ? ( - - - - ) : undefined; - const whitelisted = (!!props.contract.emailWhitelist || !!props.contract.addressWhitelist) ? ( - - You must be on the whitelist to stake in this contract - - ) : undefined; - return ( - - - - {`Staking`} -
-
- { - - <> - - {'Amount To Stake'} - - - { }} - autoFocus={true} - formatter={formatter} - inputMode={'decimal'} - /> - - - - {'Available Balance'} - - - - - - - {'Amount Remaining in Stake'} - - - - - - {whitelisted} - {error} - - { - props.onStakeToken(history,props)}} - textStyle={styles.btnText}/> - - - } - - history.replace('/info/' + props.contract.contractAddress)} /> - -
- ); -} - -export const StakeTokenContainer = connect( - StakeToken.mapStateToProps, StakeToken.mapDispatchToProps)(StakeTokenComponent); - - //@ts-ignore -const themedStyles = (theme) => ({ - stakingInfoHeader: { - justifyContent: 'center', - fontSize: '19px', - fontWeight: 'bold', - letterspacing: 1, - lineHeight: '1.2' - }, - stakingAmountStyle: { - fontSize: '33px', - lineHeight: 1, - fontWeight: 900, - letterSpacing: '2.4px', - color:'rgb(255 59 47 / 88%)' - }, - stakingSymbol:{ - paddingTop: '3px', - letterSpacing: 1 - }, - unifyreMainTextlineHeight: { - lineHeight: 0.9 - }, - smallerMediumText:{ - fontSize: '13px', - letterSpacing: '1px', - lineHeight: '0.8' - }, - navHeader: { - fontSize: '17px', - lineHeight: 1 - }, - mediumText: { - fontSize: '25px', - fontWeight: 'bold', - letterSpacing: '1px', - lineHeight: '1.2' - }, - littleText: { - fontSize: '12.5px', - fontWeight: 'bold' - }, - percentStake: { - textAlign: "center" as "center", - marginTop: '15px', - marginRight: '0px', - marginLeft: '40px', - marginBottom: '2px', - width:'40%', - display: 'flex', - flexDirection: "row" as "row", - }, - arrows: { - marginRight: '10px', - marginLeft: '10px', - width: '16px' - }, - divider: { - height: '3px', - borderTopStyle: "solid" as "solid", - borderTopColor: 'rgba(249, 64, 43, 1)', - width: '10%', - margin: '0px auto', - }, - highlight:{ - color: 'rgb(255, 59, 47)' - }, - DurText: { - fontSize: '12.5px' - }, - btnText: { - color: '#ffffff', - lineHeight:1.6, - fontSize: '15px', - fontWeight: 'bold', - letterSpacing: '1px', - } -}); diff --git a/frontend/src/pages/stakingContract/StakingContractContainer.tsx b/frontend/src/pages/stakingContract/StakingContractContainer.tsx deleted file mode 100644 index 98073a6..0000000 --- a/frontend/src/pages/stakingContract/StakingContractContainer.tsx +++ /dev/null @@ -1,529 +0,0 @@ -import React, {useContext} from 'react'; -import { - Page,PageTopPart, Row, ThemedText, Gap, ThemedButton, ThemedLink, InputGroupAddon, - // @ts-ignore -} from 'unifyre-web-components'; -import { useHistory } from 'react-router-dom'; -import { dataFormat, Utils } from "../../common/Utils"; -import { connect } from 'react-redux'; -import { StakingContract, StakingContractDispatch, StakingContractProps } from './StakingContract'; -import { LoaderContainer } from '../../components/Loader'; -import { buildStyles,CircularProgressbarWithChildren} from 'react-circular-progressbar'; -import 'react-circular-progressbar/dist/styles.css'; -import {ThemeContext, Theme} from 'unifyre-react-helper'; -import {RewardsBar, StakeCompletionProgress} from "./../../components/ProgressBar"; -import { StakingApp } from '../../common/Types'; - -function PreStakingView(props: StakingContractProps&StakingContractDispatch) { - return ( - - {'Starting Soon.'} - - {'Staking starts at ' + dataFormat(props.contract.stakingStarts)} - - - ); -} - -function MoreStakingDetails(props: {contract: StakingApp}) { - return ( - <> - - STAKING ENDS - - - {dataFormat(props.contract.stakingEnds)} - - - EARLY WITHDRAW STARTS - - - {dataFormat(props.contract.withdrawStarts)} - - - MATURITY - - - {dataFormat(props.contract.withdrawEnds)} - - - + Maturity rewards will usually be MORE than the advertised number. - This is because any rewards left due to early withrawals will be distributed to the - people who waited until maturity. By staying until maturity you will be usually pleasantly surprised. - - - - ); -} - -function StakingView(props: StakingContractProps&StakingContractDispatch) { - const theme = useContext(ThemeContext); - const styles = themedStyles(theme); - const history = useHistory(); - const {symbol} = props; - return ( - <> - <> - - { - (props.userStake?.amountInStake === '0') && - ( - - {`Start staking ${props.symbol} right now`} - - ) - } - - {'Simple, secure and dynamic the way to start Winning Today'} - - - - { - props.userStake?.amountInStake != '0' && - <> -
- {'You Staked'} - {props.userStake?.amountInStake} -
{props.symbol}
-
- - } - { - props.userStake?.amountInStake === '0' && - <> -
- {'You Have'} - {props.balance} -
{`${props.symbol} available to stake`}
-
- - } - -
-
- - {'REMAINING'} - {props.remaining} - {'CAPACITY'} - ; -
-
- - - - - - Time Elapsed in staking so far - - - - - - props.onContractSelected(history,props.contract.network,props.contract.contractAddress,false)} - disabled={props.filled} - textStyle={{...styles.mediumText,...styles.btnText}} - /> - - - - - - - ) -} - -function WithdrawView(props: StakingContractProps&StakingContractDispatch) { - const theme = useContext(ThemeContext); - const styles = themedStyles(theme); - const history = useHistory(); - const [tillMon, tillDay, tillHour] = Utils.tillDate(props.contract.withdrawEnds); - return ( - <> - <> - <> - - - <> -
- {'You Staked'} - {props.userStake?.amountInStake} -
{props.symbol}
-
- -
-
- - {'MATURITY'} - {tillMon + ' months'} - {tillDay + ' days'} - ; -
-
- - - Rewards if un-staked today - - - - - - Rewards at maturity - - - - - - Early withdraw starts - - - - - - Maturity - - - - - -
- - props.onContractSelected(history,props.contract.network,props.contract.contractAddress,true)} - textStyle={{...styles.mediumText,...styles.btnText}} - /> - -
- - - - ) -} - -function StakingContractComponent(props: StakingContractProps&StakingContractDispatch) { - const history = useHistory(); - let mainPart = (<> ); - switch (props.state) { - case 'pre-stake': - mainPart = (); - break; - case 'stake': - mainPart = (); - break; - case 'pre-withdraw': - case 'maturity': - case 'withdraw': - mainPart = (); - break; - } - - return ( - - - - - {props.contract.name} - - - - {mainPart} - - history.replace('/')} /> - - - - ); -} - -export const StakingContractContainer = connect( - StakingContract.mapStateToProps, StakingContract.mapDispatchToProps)(StakingContractComponent); - - //@ts-ignore - const themedStyles = (theme) => ({ - stakingInfoHeader: { - justifyContent: 'center', - fontSize: '14px', - fontWeight: 'bold', - letterspacing: 1.5, - lineHeight: '1.2' - }, - listText: { - fontSize: '14px', - letterspacing: 1, - lineHeight: '1.2' - }, - btnText: { - color: '#ffffff', - lineHeight:1.3 - }, - divider: { - height: '3px', - borderTopStyle: "solid" as "solid", - borderTopColor: 'rgba(249, 64, 43, 1)', - width: '10%', - margin: '0px auto', - }, - list: { - marginTop: theme.get(Theme.Spaces.line), - display: 'flex', - flexDirection: "row" as "row", - justifyContent: 'space-between', - paddingLeft: theme.get(Theme.Spaces.screenMarginVertical), - paddingRight: theme.get(Theme.Spaces.screenMarginVertical) - }, - listValue:{ - marginTop: theme.get(Theme.Spaces.line), - display: 'flex', - flexDirection: "row" as "row", - justifyContent: 'center', - paddingLeft: theme.get(Theme.Spaces.screenMarginVertical), - paddingRight: theme.get(Theme.Spaces.screenMarginVertical), - width: '30%' - }, - dateValue:{ - marginTop: theme.get(Theme.Spaces.line), - display: 'flex', - flexDirection: "row" as "row", - justifyContent: 'space-between', - paddingLeft: theme.get(Theme.Spaces.screenMarginVertical), - width: '50%' - }, - btnContainer: { - display: 'flex', - color: 'black', - justifyContent: 'center', - width: '100%', - backgroundColor: 'white', - borderRadius: '15px', - padding: '15px', - fontSize: '15px' - }, - miniText: { - fontSize: '14px', - }, - symb:{ - fontSize: '17px', - }, - rewards:{ - backgroundColor: 'white', - color: '#c1052a', - textAlign: "center" as "center", - borderRadius: '5px', - fontSize: '17px', - fontWeight: "bold" as "bold", - margin: '5px 0px', - padding: '2px 0px' - }, - tokenInfo: { - display: 'flex', - color: 'white', - justifyContent: 'space-around', - alignItems: 'center' - }, - tokenSymbol: { - margin: '0px 10px' - }, - listContainer: { - display: 'flex', - flexDirection: 'column', - justifyContent: 'flex-start', - alignItems: 'stretch', - }, - listItemContainer: { - display: 'flex', - flexDirection: 'row', - justifyContent: 'flex-start', - alignItems: 'center', - minHeight: theme.get(Theme.Spaces.line) * 4, - padding: theme.get(Theme.Spaces.line), - }, - stakedText:{ - fontFamily: 'Sawarabi Gothic', - marginTop: 'auto', - margin: '3px', - justifyContent: 'center', - alignItems: 'center', - textAlign: "center" as "center", - lineHeight: 1 - }, - commonText: { - fontFamily: 'Sawarabi Gothic', - fontWeight: 'bold', - fontSize: '16.5px', - letterSpacing: '1px' - }, - unifyreTextColor: { - color: '#9a3531' - }, - stakingAmountStyle: { - color: '#ffff', - fontSize: '30px', - lineHeight: 1, - fontWeight: '900', - letterSpacing: '3px' - }, - stakingSymbol:{ - paddingTop: '3px', - letterSpacing: 1, - fontSize:'11px', - fontWeight: 200 - }, - unifyreMainTextlineHeight: { - lineHeight: 0.9 - }, - smallerMediumText:{ - fontSize: '14px', - letterSpacing: '1px', - lineHeight: '0.8', - fontWeight: 200 - }, - navHeader: { - fontSize: '17px', - lineHeight: 1 - }, - mediumText: { - fontSize: '25px', - fontWeight: 'bold', - letterSpacing: '2px', - lineHeight: '1.4' - }, - mediumTextRow: { - fontSize: '18px', - fontWeight: 'bold', - letterSpacing: '2px', - }, - littleText: { - fontSize: '10.5px', - fontWeight: '200' - }, - percentStake: { - textAlign: "center" as "center", - marginTop: '15px', - marginRight: '10px', - marginLeft: '20px', - marginBottom: '2px', - width:'50%', - display: 'flex', - flexDirection: "row" as "row", - }, - percentStakeRow: { - width: '60%', - display: 'flex', - flexDirection: 'row' as 'row', - margin: '25px auto', - marginBottom: '10px' - }, - arrows: { - marginRight: '10px', - marginLeft: '10px', - width: '16px' - }, - highlight:{ - color: 'rgb(255, 59, 47)' - }, - DurText: { - fontSize: '12.5px' - }, - bottomFix:{ - width: '99%', - }, - header: { - fontSize: '33px', - width: '80%', - lineHeight: 1.1, - marginLeft: '15pt', - fontWeight: 'bold' - }, - preStakingheader: { - fontSize: '40px', - width: '100%', - lineHeight: 0.7, - marginLeft: '15pt', - marginTop: '20pt', - textAlign:'center' - }, - summaryContainerFlex: { - marginTop: '15px', - display: 'flex', - flexDirection: 'row' as 'row', - justifyContent: 'center' as 'center', - alignItems: 'center' as 'center' - }, - summaryContainerRow: { - marginTop: '15px', - flexDirection: 'row' as 'row', - justifyContent: 'center' as 'center', - alignItems: 'center' as 'center' - } -}); \ No newline at end of file diff --git a/frontend/src/pages/unstakeToken/UnstakeTokenContainer.tsx b/frontend/src/pages/unstakeToken/UnstakeTokenContainer.tsx deleted file mode 100644 index 804a7af..0000000 --- a/frontend/src/pages/unstakeToken/UnstakeTokenContainer.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import React, {useContext} from 'react'; -import { connect } from 'react-redux'; -import { - Page,PageTopPart, Row, ThemedText, Gap,InputGroupAddon,ThemedButton, InputCurrency, ErrorMessage, - // @ts-ignore -} from 'unifyre-web-components'; -import { formatter } from "../../common/Utils"; -import { LoaderContainer } from '../../components/Loader'; -import { UnstakeToken, UnstakeTokenDispatch, UnstakeTokenProps } from './UnstakeToken'; -import { useHistory } from 'react-router-dom'; -import {ThemeContext} from 'unifyre-react-helper'; - - -function UnstakeTokenComponent(props: UnstakeTokenProps&UnstakeTokenDispatch) { - const history = useHistory(); - const theme = useContext(ThemeContext); - const styles = themedStyles(theme); - const error = props.error ? ( - - - - ) : undefined; - const takeRewards = props.contract.rewardContinuationAddress ? ( - - {props.onTakeRewards(history, props)}}/> - - ) : undefined; - return ( - - - - {`Staking`} -
-
- { - <> - - {'Amount To Withdraw'} - - - { }} - autoFocus={true} - formatter={formatter} - inputMode={'decimal'} - /> - - - - {'Amount In Stake'} - - - - - - {error} - - {props.onUnstakeToken(history, props)}}/> - - {takeRewards} - - } -
- ); -} - -//@ts-ignore -const themedStyles = (theme) => ({ - divider: { - height: '3px', - borderTopStyle: "solid" as "solid", - borderTopColor: 'rgba(249, 64, 43, 1)', - width: '10%', - margin: '0px auto', - }, - stakingInfoHeader: { - justifyContent: 'center', - fontSize: '19px', - fontWeight: 'bold', - letterspacing: 1, - lineHeight: '1.2' - }, -}) - -export const UnstakeTokenContainer = connect( - UnstakeToken.mapStateToProps, UnstakeToken.mapDispatchToProps)(UnstakeTokenComponent); \ No newline at end of file