import React, { useEffect, useState } from 'react'; import { slide as Menu } from 'react-burger-menu'; import ConfirmDialog from 'components/ConfirmDialog'; import Spinner from 'react-bootstrap/Spinner'; import subscriptionService, { Subscription, } from 'services/subscriptionService'; import constants from 'utils/strings/constants'; import { logoutUser } from 'services/userService'; import { getData, LS_KEYS } from 'utils/storage/localStorage'; import { getToken } from 'utils/common/key'; import { getEndpoint } from 'utils/common/apiUtil'; import { Button } from 'react-bootstrap'; import { planIsActive, hasActivePaidPlan, convertBytesToGBs, getUserSubscription, isOnFreePlan, } from 'utils/billingUtil'; enum Action { logout = 'logout', cancelSubscription = 'cancel_subscription', } interface Props { setNavbarIconView; setPlanModalView; setBannerMessage; } export default function Sidebar(props: Props) { const [confirmModalView, setConfirmModalView] = useState(false); function closeConfirmModal() { setConfirmModalView(false); } const [usage, SetUsage] = useState(null); const [action, setAction] = useState(null); const [user, setUser] = useState(null); const [subscription, setSubscription] = useState(null); useEffect(() => { setUser(getData(LS_KEYS.USER)); setSubscription(getUserSubscription()); }, []); const [isOpen, setIsOpen] = useState(false); useEffect(() => { const main = async () => { if (!isOpen) { return; } const usage = await subscriptionService.getUsage(); SetUsage(usage); setSubscription(getUserSubscription()); }; main(); }, [isOpen]); const logout = async () => { setConfirmModalView(false); setIsOpen(false); props.setNavbarIconView(false); logoutUser(); }; const cancelSubscription = async () => { setConfirmModalView(false); setIsOpen(false); try { await subscriptionService.cancelSubscription(); } catch (e) { props.setBannerMessage({ message: constants.SUBSCRIPTION_CANCEL_FAILED, variant: 'danger', }); } props.setBannerMessage({ message: constants.SUBSCRIPTION_CANCEL_SUCCESS, variant: 'secondary', }); }; let callback = []; callback[Action.logout] = logout; callback[Action.cancelSubscription] = cancelSubscription; function openFeedbackURL() { const feedbackURL: string = getEndpoint() + '/users/feedback?token=' + getToken(); var win = window.open(feedbackURL, '_blank'); win.focus(); } return ( setIsOpen(state.isOpen)} itemListElement="div" >
Hi {user?.email} !!
{constants.SUBSCRIPTION_PLAN}
{planIsActive(subscription) ? ( isOnFreePlan(subscription) ? ( constants.FREE_SUBSCRIPTION_INFO( subscription?.expiryTime ) ) : ( constants.PAID_SUBSCRIPTION_INFO( subscription?.expiryTime ) ) ) : (

{constants.SUBSCRIPTION_EXPIRED}

)}
{hasActivePaidPlan(subscription) && ( )}
{constants.USAGE_DETAILS}
{usage ? ( constants.USAGE_INFO( usage, Math.ceil( Number(convertBytesToGBs(subscription?.storage)) ) ) ) : ( )}
request feature
support
<>
{ setAction(Action.logout); setConfirmModalView(true); }} > logout
); }