ente/src/components/Sidebar.tsx

113 lines
3.6 KiB
TypeScript
Raw Normal View History

import React, { useEffect, useState } from 'react';
import { slide as Menu } from 'react-burger-menu';
import { Button } from 'react-bootstrap';
import ConfirmLogout from 'components/ConfirmLogout';
import Spinner from 'react-bootstrap/Spinner';
import subscriptionService, {
Subscription,
} from 'services/subscriptionService';
import ChangeDisabledMessage from './ChangeDisabledMessage';
import constants from 'utils/strings/constants';
2021-03-12 04:50:58 +00:00
import { logoutUser } from 'services/userService';
import { getData, LS_KEYS } from 'utils/storage/localStorage';
import { getToken } from 'utils/common/key';
2021-03-12 04:50:58 +00:00
interface Props {
setNavbarIconView;
}
export default function Sidebar(props: Props) {
const [logoutModalView, setLogoutModalView] = useState(false);
const [
changeDisabledMessageModalView,
setChangeDisabledMessageModalView,
] = useState(false);
function showLogoutModal() {
setLogoutModalView(true);
}
function closeLogoutModal() {
setLogoutModalView(false);
}
const [usage, SetUsage] = useState<string>(null);
const subscription: Subscription = getData(LS_KEYS.SUBSCRIPTION);
const [isOpen, setIsOpen] = useState(false);
useEffect(() => {
const main = async () => {
if (!isOpen) {
return;
}
const usage = await subscriptionService.getUsage();
SetUsage(usage);
};
main();
}, [isOpen]);
const logout = async () => {
2021-03-12 04:50:58 +00:00
setLogoutModalView(false);
setIsOpen(false);
2021-03-12 04:50:58 +00:00
props.setNavbarIconView(false);
logoutUser();
};
return (
<Menu
isOpen={isOpen}
onStateChange={(state) => setIsOpen(state.isOpen)}
itemListElement="div"
>
<div style={{ outline: 'none' }}>
2021-03-13 07:00:40 +00:00
<h4 style={{ marginBottom: '20px' }}>{constants.SUBSCRIPTION_PLAN}</h4>
2021-03-12 17:22:19 +00:00
{constants.SUBSCRIPTION_INFO(
subscription?.productID,
subscription?.expiryTime
)}
<Button
variant="success"
size="sm"
onClick={() => setChangeDisabledMessageModalView(true)}
>
{constants.CHANGE}
</Button>
<ChangeDisabledMessage
show={changeDisabledMessageModalView}
onHide={() => setChangeDisabledMessageModalView(false)}
/>
<br />
<br />
<br />
</div>
2021-03-12 04:39:32 +00:00
<div style={{ outline: 'none' }}>
<h4>{constants.USAGE_DETAILS}</h4>
<div>
{usage ? (
constants.USAGE_INFO(
usage,
Math.ceil(
Number(
subscriptionService.convertBytesToGBs(
subscription?.storage
)
)
)
)
) : (
<Spinner animation="border" />
)}
</div>
<br />
</div>
<>
<ConfirmLogout
show={logoutModalView}
onHide={closeLogoutModal}
2021-03-12 04:50:58 +00:00
logout={logout}
/>
<Button variant="danger" onClick={showLogoutModal}>
logout
</Button>
</>
</Menu>
);
}