204 lines
6.5 KiB
TypeScript
204 lines
6.5 KiB
TypeScript
import { Button } from '@atoms/button/button';
|
|
import {
|
|
ClockIcon,
|
|
CloudIcon,
|
|
ExternalLinkIcon,
|
|
HeartIcon,
|
|
ShareIcon,
|
|
TrashIcon,
|
|
UserIcon,
|
|
UserGroupIcon,
|
|
} from '@heroicons/react/outline';
|
|
import { useEffect } from 'react';
|
|
import useRouterCompany from '@features/router/hooks/use-router-company';
|
|
import { useCurrentUser } from 'app/features/users/hooks/use-current-user';
|
|
import { useRecoilState } from 'recoil';
|
|
import { Title } from '../../../atoms/text';
|
|
import { useDriveItem } from '../../../features/drive/hooks/use-drive-item';
|
|
import { DriveCurrentFolderAtom } from '../body/drive/browser';
|
|
import Account from '../common/account';
|
|
import AppGrid from '../common/app-grid';
|
|
import DiskUsage from '../common/disk-usage';
|
|
import Actions from './actions';
|
|
import { useHistory } from 'react-router-dom';
|
|
import RouterServices from '@features/router/services/router-service';
|
|
import Languages from 'features/global/services/languages-service';
|
|
import FeatureTogglesService, {
|
|
FeatureNames,
|
|
} from '@features/global/services/feature-toggles-service';
|
|
|
|
export default () => {
|
|
const history = useHistory();
|
|
const { user } = useCurrentUser();
|
|
const company = useRouterCompany();
|
|
const { viewId, itemId, dirId } = RouterServices.getStateFromRoute();
|
|
const [parentId, setParentId] = useRecoilState(
|
|
DriveCurrentFolderAtom({ initialFolderId: viewId || 'user_' + user?.id }),
|
|
);
|
|
const active = false;
|
|
const { sharedWithMe, inTrash, path } = useDriveItem(parentId);
|
|
const activeClass = 'bg-zinc-50 dark:bg-zinc-900 !text-blue-500';
|
|
let folderType = 'home';
|
|
if ((path || [])[0]?.id === 'user_' + user?.id) folderType = 'personal';
|
|
if (inTrash) folderType = 'trash';
|
|
if (sharedWithMe) folderType = 'shared';
|
|
|
|
useEffect(() => {
|
|
!itemId && !dirId && viewId && setParentId(viewId);
|
|
dirId && viewId && setParentId(dirId);
|
|
}, [viewId, itemId, dirId]);
|
|
return (
|
|
<div className="grow flex flex-col overflow-auto -m-4 p-4 relative">
|
|
<div className="grow">
|
|
<div className="sm:hidden block mb-2">
|
|
<div className="flex flex-row space-between w-full">
|
|
<div className="grow">
|
|
<Account />
|
|
</div>
|
|
<AppGrid />
|
|
</div>
|
|
|
|
<div className="mt-6" />
|
|
<Title>Actions</Title>
|
|
</div>
|
|
|
|
<Actions />
|
|
|
|
<div className="mt-4" />
|
|
<Title>Drive</Title>
|
|
<Button
|
|
onClick={() => {
|
|
history.push(
|
|
RouterServices.generateRouteFromState({
|
|
companyId: company,
|
|
viewId: 'user_' + user?.id,
|
|
itemId: '',
|
|
dirId: '',
|
|
}),
|
|
);
|
|
// setParentId('user_' + user?.id);
|
|
}}
|
|
size="lg"
|
|
theme="white"
|
|
className={
|
|
'w-full mb-1 ' +
|
|
(folderType === 'personal' && (viewId == '' || viewId == 'user_' + user?.id)
|
|
? activeClass
|
|
: '')
|
|
}
|
|
>
|
|
<UserIcon className="w-5 h-5 mr-4" /> {Languages.t('components.side_menu.my_drive')}
|
|
</Button>
|
|
{FeatureTogglesService.isActiveFeatureName(FeatureNames.COMPANY_SHARED_DRIVE) && (
|
|
<Button
|
|
onClick={() => {
|
|
setParentId('root');
|
|
history.push(
|
|
RouterServices.generateRouteFromState({
|
|
companyId: company,
|
|
viewId: 'root',
|
|
itemId: '',
|
|
dirId: '',
|
|
}),
|
|
);
|
|
}}
|
|
size="lg"
|
|
theme="white"
|
|
className={
|
|
'w-full mb-1 ' + (folderType === 'home' && viewId == 'root' ? activeClass : '')
|
|
}
|
|
>
|
|
<CloudIcon className="w-5 h-5 mr-4" /> {Languages.t('components.side_menu.home')}
|
|
</Button>
|
|
)}
|
|
{FeatureTogglesService.isActiveFeatureName(FeatureNames.COMPANY_MANAGE_ACCESS) && (
|
|
<Button
|
|
onClick={() => {
|
|
history.push(
|
|
RouterServices.generateRouteFromState({
|
|
companyId: company,
|
|
viewId: 'shared_with_me',
|
|
itemId: '',
|
|
dirId: '',
|
|
}),
|
|
);
|
|
// setParentId('shared_with_me');
|
|
}}
|
|
size="lg"
|
|
theme="white"
|
|
className={
|
|
'w-full mb-1 ' +
|
|
(folderType === 'shared' && viewId == 'shared_with_me' ? activeClass : '')
|
|
}
|
|
>
|
|
<UserGroupIcon className="w-5 h-5 mr-4" />{' '}
|
|
{Languages.t('components.side_menu.shared_with_me')}
|
|
</Button>
|
|
)}
|
|
{false && (
|
|
<>
|
|
<Button
|
|
size="lg"
|
|
theme="white"
|
|
className={'w-full mb-1 ' + (!active ? activeClass : '')}
|
|
>
|
|
<ClockIcon className="w-5 h-5 mr-4" /> Recent
|
|
</Button>
|
|
<Button
|
|
size="lg"
|
|
theme="white"
|
|
className={'w-full mb-1 ' + (!active ? activeClass : '')}
|
|
>
|
|
<HeartIcon className="w-5 h-5 mr-4" /> Favorites
|
|
</Button>
|
|
</>
|
|
)}
|
|
<Button
|
|
onClick={() => {
|
|
history.push(
|
|
RouterServices.generateRouteFromState({
|
|
companyId: company,
|
|
viewId: 'trash_' + user?.id,
|
|
itemId: '',
|
|
dirId: '',
|
|
}),
|
|
);
|
|
// setParentId('trash_' + user?.id);
|
|
}}
|
|
size="lg"
|
|
theme="white"
|
|
className={'w-full mb-1 ' + (viewId?.includes('trash') ? activeClass : '')}
|
|
>
|
|
<TrashIcon className="w-5 h-5 mr-4 text-rose-500" />{' '}
|
|
{Languages.t('components.side_menu.trash')}
|
|
</Button>
|
|
|
|
{false && (
|
|
<>
|
|
<div className="mt-4" />
|
|
<Title>Shared</Title>
|
|
<Button
|
|
size="lg"
|
|
theme="white"
|
|
className={'w-full mt-2 mb-1 ' + (!inTrash ? activeClass : '')}
|
|
>
|
|
<ShareIcon className="w-5 h-5 mr-4" /> Shared with me
|
|
</Button>
|
|
<Button
|
|
size="lg"
|
|
theme="white"
|
|
className={'w-full mb-1 ' + (inTrash ? activeClass : '')}
|
|
>
|
|
<ExternalLinkIcon className="w-5 h-5 mr-4" /> Shared by me
|
|
</Button>
|
|
</>
|
|
)}
|
|
</div>
|
|
|
|
<div className="">
|
|
<DiskUsage />
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|