Files
workavia-drive/tdrive/frontend/src/app/views/client/index.tsx
T
Anton Shepilov fddd3b4ebd 🌐Translations for the latest features (#78)
* 🌐Translations for the latest features
Also:
  - Rename “Home” to Shared drive
  - Hide banner with suggestion of downloading desktop app
  - Fix Upload button on main screen
  - Add separate buttons for the manage access and share by link
2023-06-16 14:15:48 +02:00

104 lines
3.9 KiB
TypeScript
Executable File

// eslint-disable-next-line @typescript-eslint/no-use-before-define
import classNames from 'classnames';
import React, { Suspense, useState } from 'react';
import UploadsViewer from '@components/file-uploads/uploads-viewer';
import { useFeatureToggles } from '@components/locked-features-components/feature-toggles-hooks';
import MenusBodyLayer from '@components/menus/menus-body-layer.jsx';
import ModalComponent from '@components/modal/modal-component';
import PopupService from '@deprecated/popupManager/popupManager.js';
import useUsetiful from '@features/global/hooks/use-usetiful';
import Languages from '@features/global/services/languages-service';
import { useCurrentUser, useCurrentUserRealtime } from '@features/users/hooks/use-current-user';
import UserContext from '@features/users/state/integration/user-context';
import Viewer from '@views/client/viewer/viewer';
import ConnectionIndicator from 'components/connection-indicator/connection-indicator';
import NewVersionComponent from 'components/new-version/new-version-component';
import PopupComponent from 'components/popup-component/popup-component.jsx';
import SearchPopup from 'components/search-popup/search-popup';
import MainView from './body';
import DownloadAppBanner from '@components/download-app-banner/download-app-banner';
import DesktopRedirect from '../../components/desktop-redirect';
import Header from './header';
import SideBar from './side-bar';
export default React.memo((): JSX.Element => {
const [menuIsOpen, setMenuIsOpen] = useState(false);
const { user } = useCurrentUser();
useCurrentUserRealtime();
const { FeatureToggles, activeFeatureNames } = useFeatureToggles();
useUsetiful();
PopupService.useListener();
Languages.useListener();
let page: JSX.Element = <></>;
if (user?.id) {
page = (
<DesktopRedirect>
<div className="fade_in bg-zinc-100 dark:bg-black flex flex-col gap-2 h-full">
<DownloadAppBanner/>
<NewVersionComponent />
<FeatureToggles features={activeFeatureNames}>
<>
<Header openSideMenu={() => setMenuIsOpen(true)} />
<div className="grow flex flex-row grid-cols-2 sm:px-2 sm:pb-2 overflow-hidden">
<div
style={
menuIsOpen
? {
transform: 'translateX(0)',
}
: {}
}
className="flex sm:rounded-lg sm:relative sm:translate-x-0 sm:w-1/3 absolute left-0 top-0 h-full -translate-x-full bg-white dark:bg-zinc-900 mr-2 rounded-none max-w-xs w-full p-4 transition-all z-50"
>
<Suspense fallback={<></>}>
<SideBar />
</Suspense>
</div>
<div
style={
menuIsOpen
? {
opacity: '1',
}
: {
pointerEvents: 'none',
}
}
onClick={() => setMenuIsOpen(false)}
className="absolute left-0 top-0 h-full w-full bg-black bg-opacity-50 transition-all z-40 opacity-0"
></div>
<div className="bg-white dark:bg-zinc-900 flex grow sm:rounded-lg p-4">
<Suspense fallback={<></>}>
<MainView className={classNames({ collapsed: menuIsOpen })} />
</Suspense>
</div>
</div>
</>
</FeatureToggles>
<UserContext />
</div>
</DesktopRedirect>
);
}
return (
<>
{PopupService.isOpen() && <PopupComponent key="PopupComponent" />}
{page}
<MenusBodyLayer />
<Viewer />
<ModalComponent />
<SearchPopup />
<ConnectionIndicator />
<UploadsViewer />
</>
);
});