mirror of
https://github.com/apotdevin/thunderhub.git
synced 2025-02-22 22:25:21 +01:00
108 lines
2.9 KiB
TypeScript
108 lines
2.9 KiB
TypeScript
import React, { useEffect } from 'react';
|
|
import styled from 'styled-components';
|
|
import { GridWrapper } from 'src/components/gridWrapper/GridWrapper';
|
|
import { NextPageContext } from 'next';
|
|
import { getProps } from 'src/utils/ssr';
|
|
import { UserInfo } from 'src/views/lnmarkets/UserInfo';
|
|
import { Title } from 'src/components/typography/Styled';
|
|
import { GoToLnMarkets } from 'src/views/lnmarkets/GoToLnMarkets';
|
|
import { DepositWithdraw } from 'src/views/lnmarkets/DepositWithdraw';
|
|
import { useGetLnMarketsStatusQuery } from 'src/graphql/queries/__generated__/getLnMarketsStatus.generated';
|
|
import {
|
|
useLnMarketsLoginMutation,
|
|
useLnMarketsLogoutMutation,
|
|
} from 'src/graphql/mutations/__generated__/lnMarkets.generated';
|
|
import { getErrorContent } from 'src/utils/error';
|
|
import { toast } from 'react-toastify';
|
|
import { ColorButton } from 'src/components/buttons/colorButton/ColorButton';
|
|
import { useConfigDispatch } from 'src/context/ConfigContext';
|
|
import { SingleLine } from '../src/components/generic/Styled';
|
|
|
|
export const ButtonRow = styled.div`
|
|
width: auto;
|
|
display: flex;
|
|
`;
|
|
|
|
export const SettingsLine = styled(SingleLine)`
|
|
margin: 8px 0;
|
|
`;
|
|
|
|
const LnMarketsView = () => {
|
|
const dispatch = useConfigDispatch();
|
|
|
|
const { data: statusData } = useGetLnMarketsStatusQuery({
|
|
fetchPolicy: 'no-cache',
|
|
});
|
|
|
|
const [login, { data, loading }] = useLnMarketsLoginMutation({
|
|
onError: error => toast.error(getErrorContent(error)),
|
|
refetchQueries: ['GetLnMarketsStatus'],
|
|
});
|
|
|
|
const [logout, { loading: logoutLoading }] = useLnMarketsLogoutMutation({
|
|
onCompleted: () => {
|
|
toast.success('Logged out');
|
|
dispatch({ type: 'change', lnMarketsAuth: false });
|
|
},
|
|
refetchQueries: ['GetLnMarketsStatus'],
|
|
});
|
|
|
|
useEffect(() => {
|
|
if (data?.lnMarketsLogin?.status === 'OK') {
|
|
dispatch({ type: 'change', lnMarketsAuth: true });
|
|
toast.success('Logged In');
|
|
}
|
|
}, [data, dispatch]);
|
|
|
|
const Content = () => {
|
|
if (statusData?.getLnMarketsStatus === 'out') {
|
|
return (
|
|
<ColorButton
|
|
loading={loading}
|
|
disabled={loading}
|
|
withMargin={'8px 0 0 '}
|
|
fullWidth={true}
|
|
onClick={login}
|
|
>
|
|
Login
|
|
</ColorButton>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<UserInfo />
|
|
<DepositWithdraw />
|
|
<GoToLnMarkets />
|
|
<ColorButton
|
|
loading={logoutLoading}
|
|
disabled={logoutLoading}
|
|
withMargin={'8px 0 0 '}
|
|
fullWidth={true}
|
|
onClick={logout}
|
|
>
|
|
Logout
|
|
</ColorButton>
|
|
</>
|
|
);
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<Title>LnMarkets</Title>
|
|
<Content />
|
|
</>
|
|
);
|
|
};
|
|
|
|
const Wrapped = () => (
|
|
<GridWrapper noNavigation={true}>
|
|
<LnMarketsView />
|
|
</GridWrapper>
|
|
);
|
|
|
|
export default Wrapped;
|
|
|
|
export async function getServerSideProps(context: NextPageContext) {
|
|
return await getProps(context);
|
|
}
|