import React, { useEffect, useState } from 'react'; import { slide as Menu } from 'react-burger-menu'; import { CONFIRM_ACTION } from 'components/ConfirmDialog'; import Spinner from 'react-bootstrap/Spinner'; import billingService, { Subscription } from 'services/billingService'; import constants from 'utils/strings/constants'; 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 { isSubscriptionActive, convertBytesToGBs, getUserSubscription, isOnFreePlan, isSubscriptionCancelled, isSubscribed, } from 'utils/billingUtil'; import exportService from 'services/exportService'; import { file } from 'services/fileService'; import isElectron from 'is-electron'; import { collection } from 'services/collectionService'; import { useRouter } from 'next/router'; import RecoveryKeyModal from './RecoveryKeyModal'; import { justSignedUp } from 'utils/storage'; interface Props { files: file[]; collections: collection[]; setConfirmAction: any; somethingWentWrong: any; setPlanModalView; setBannerMessage; } export default function Sidebar(props: Props) { const [usage, SetUsage] = 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); const [modalView, setModalView] = useState(justSignedUp()); useEffect(() => { const main = async () => { if (!isOpen) { return; } const usage = await billingService.getUsage(); SetUsage(usage); setSubscription(getUserSubscription()); }; main(); }, [isOpen]); function openFeedbackURL() { const feedbackURL: string = getEndpoint() + '/users/feedback?token=' + getToken(); var win = window.open(feedbackURL, '_blank'); win.focus(); } function exportFiles() { if (isElectron()) { exportService.exportFiles(props.files, props.collections); } else { props.setConfirmAction(CONFIRM_ACTION.DOWNLOAD_APP); } } async function onManageClick(event) { try { event.preventDefault(); await billingService.redirectToCustomerPortal(); } catch (error) { props.somethingWentWrong(); } } const router = useRouter(); return ( setIsOpen(state.isOpen)} itemListElement="div" >
Hi {user?.email} !!
{constants.SUBSCRIPTION_PLAN}
{isSubscriptionActive(subscription) ? ( isOnFreePlan(subscription) ? ( constants.FREE_SUBSCRIPTION_INFO( subscription?.expiryTime ) ) : isSubscriptionCancelled(subscription) ? ( constants.RENEWAL_CANCELLED_SUBSCRIPTION_INFO( subscription?.expiryTime ) ) : ( constants.RENEWAL_ACTIVE_SUBSCRIPTION_INFO( subscription?.expiryTime ) ) ) : (

{constants.SUBSCRIPTION_EXPIRED}

)}
{isSubscribed(subscription) ? ( <>
) : ( )}
{constants.USAGE_DETAILS}
{usage ? ( constants.USAGE_INFO( usage, Math.ceil( Number(convertBytesToGBs(subscription?.storage)) ) ) ) : ( )}
request feature
support
setModalView(false)} somethingWentWrong={props.somethingWentWrong} />
setModalView(true)} > {constants.DOWNLOAD_RECOVERY_KEY}
router.push('changePassword')} > {constants.CHANGE_PASSWORD}
{constants.EXPORT}
props.setConfirmAction(CONFIRM_ACTION.LOGOUT)} > logout
); }