diff --git a/tdrive/frontend/src/app/views/client/body/drive/browser.tsx b/tdrive/frontend/src/app/views/client/body/drive/browser.tsx index 147b603f..950406b7 100644 --- a/tdrive/frontend/src/app/views/client/body/drive/browser.tsx +++ b/tdrive/frontend/src/app/views/client/body/drive/browser.tsx @@ -29,6 +29,7 @@ import { CreateModalAtom } from './modals/create'; import { UploadModelAtom } from './modals/upload' import { PropertiesModal } from './modals/properties'; import { AccessModal } from './modals/update-access'; +import { PublicLinkModal } from './modals/public-link'; import { VersionsModal } from './modals/versions'; import { UsersModal } from './modals/manage-users'; import { SharedFilesTable } from './shared-files-table'; @@ -267,6 +268,7 @@ export default memo( {role == "admin" && } + diff --git a/tdrive/frontend/src/app/views/client/body/drive/context-menu.tsx b/tdrive/frontend/src/app/views/client/body/drive/context-menu.tsx index a4a09bbb..a092165a 100644 --- a/tdrive/frontend/src/app/views/client/body/drive/context-menu.tsx +++ b/tdrive/frontend/src/app/views/client/body/drive/context-menu.tsx @@ -8,6 +8,7 @@ import { UploadModelAtom } from './modals/upload' import { PropertiesModalAtom } from './modals/properties'; import { SelectorModalAtom } from './modals/selector'; import { AccessModalAtom } from './modals/update-access'; +import { PublicLinkModalAtom } from './modals/public-link'; import { VersionsModalAtom } from './modals/versions'; import { UsersModalAtom } from './modals/manage-users'; import { DriveApiClient, getPublicLinkToken } from '@features/drive/api-client/api-client'; @@ -46,6 +47,7 @@ export const useOnBuildContextMenu = (children: DriveItem[], initialParentId?: s const setConfirmTrashModalState = useSetRecoilState(ConfirmTrashModalAtom); const setVersionModal = useSetRecoilState(VersionsModalAtom); const setAccessModalState = useSetRecoilState(AccessModalAtom); + const setPublicLinkModalState = useSetRecoilState(PublicLinkModalAtom); const setPropertiesModalState = useSetRecoilState(PropertiesModalAtom); const setUsersModalState = useSetRecoilState(UsersModalAtom); const { open: preview } = useDrivePreview(); @@ -82,7 +84,7 @@ export const useOnBuildContextMenu = (children: DriveItem[], initialParentId?: s type: 'menu', text: Languages.t('components.item_context_menu.share'), hide: access === 'read' || getPublicLinkToken() || inTrash, - onClick: () => setAccessModalState({ open: true, id: item.id }), + onClick: () => setPublicLinkModalState({ open: true, id: item.id }), }, { type: 'menu', diff --git a/tdrive/frontend/src/app/views/client/body/drive/modals/public-link/index.tsx b/tdrive/frontend/src/app/views/client/body/drive/modals/public-link/index.tsx new file mode 100644 index 00000000..3c417963 --- /dev/null +++ b/tdrive/frontend/src/app/views/client/body/drive/modals/public-link/index.tsx @@ -0,0 +1,75 @@ +import { atom, useRecoilState } from 'recoil'; +import { useState, useEffect } from 'react'; + +import { useDriveItem } from '@features/drive/hooks/use-drive-item'; +import { useCurrentCompany } from '@features/companies/hooks/use-companies'; +import Languages from 'features/global/services/languages-service'; +import { changePublicLink, hasAnyPublicLinkAccess } from '@features/files/utils/access-info-helpers'; + +import { Subtitle } from '@atoms/text'; +import { Modal, ModalContent } from '@atoms/modal'; + +export type PublicLinkModalType = { + open: boolean; + id: string; +}; + +export const PublicLinkModalAtom = atom({ + key: 'PublicLinkModalType', + default: { + open: false, + id: '', + }, +}); + +export const PublicLinkModal = () => { + const [state, setState] = useRecoilState(PublicLinkModalAtom); + const [isOnAdvancedScreen, setIsOnAdvancedScreen] = useState(false); + + return ( + { + setState({ ...state, open: false }); + }} + > + {!!state.id && + setIsOnAdvancedScreen(active)} + />} + + ); +}; + +const PublicLinkModalContent = (props: { + id: string, + isOnAdvancedScreen: boolean, + onShowAdvancedScreen: (active: boolean) => void, +}) => { + const { id } = props; + const { item, access, loading, update, refresh } = useDriveItem(id); + const { item: parentItem } = useDriveItem(item?.parent_id || ''); + const { company, refresh: refreshCompany } = useCurrentCompany(); + useEffect(() => { + refresh(id); + refreshCompany(); + }, []); + const havePublicLink = hasAnyPublicLinkAccess(item); + + return ( + + {Languages.t(props.isOnAdvancedScreen + ? 'components.item_context_menu.manage_access_advanced_to' + : 'components.item_context_menu.manage_access_to') + ' '} + {item?.name} + + } + > + Im content ! {havePublicLink ? "Got a" : "No"} public link. + + ); +} \ No newline at end of file diff --git a/tdrive/frontend/src/app/views/client/body/drive/modals/update-access/public-link-access-options.tsx b/tdrive/frontend/src/app/views/client/body/drive/modals/public-link/public-link-access-options.tsx similarity index 100% rename from tdrive/frontend/src/app/views/client/body/drive/modals/update-access/public-link-access-options.tsx rename to tdrive/frontend/src/app/views/client/body/drive/modals/public-link/public-link-access-options.tsx diff --git a/tdrive/frontend/src/app/views/client/body/drive/modals/update-access/public-link-access.tsx b/tdrive/frontend/src/app/views/client/body/drive/modals/public-link/public-link-access.tsx similarity index 98% rename from tdrive/frontend/src/app/views/client/body/drive/modals/update-access/public-link-access.tsx rename to tdrive/frontend/src/app/views/client/body/drive/modals/public-link/public-link-access.tsx index fb4b4af7..9d4922e9 100644 --- a/tdrive/frontend/src/app/views/client/body/drive/modals/update-access/public-link-access.tsx +++ b/tdrive/frontend/src/app/views/client/body/drive/modals/public-link/public-link-access.tsx @@ -3,7 +3,7 @@ import { useDriveItem, getPublicLink } from '@features/drive/hooks/use-drive-ite import { copyToClipboard } from '@features/global/utils/CopyClipboard'; import { Input } from 'app/atoms/input/input-text'; import { useState } from 'react'; -import { AccessLevelDropdown } from './access-level-dropdown'; +import { AccessLevelDropdown } from '../update-access/access-level-dropdown'; import Languages from 'features/global/services/languages-service'; import { Button } from '@atoms/button/button'; import { LinkIcon, UserGroupIcon, CheckCircleIcon } from '@heroicons/react/outline'; diff --git a/tdrive/frontend/src/app/views/client/body/drive/modals/update-access/index.tsx b/tdrive/frontend/src/app/views/client/body/drive/modals/update-access/index.tsx index e1c87977..15b56058 100644 --- a/tdrive/frontend/src/app/views/client/body/drive/modals/update-access/index.tsx +++ b/tdrive/frontend/src/app/views/client/body/drive/modals/update-access/index.tsx @@ -5,14 +5,14 @@ import { useDriveItem } from '@features/drive/hooks/use-drive-item'; import { useState, useEffect } from 'react'; import { atom, useRecoilState } from 'recoil'; import { InternalAccessManager } from './internal-access'; -import { PublicLinkManager } from './public-link-access'; +import { PublicLinkManager } from '../public-link/public-link-access'; import { useCurrentCompany } from '@features/companies/hooks/use-companies'; import Languages from 'features/global/services/languages-service'; import FeatureTogglesService, { FeatureNames, } from '@features/global/services/feature-toggles-service'; import { ArrowLeftIcon, LockClosedIcon } from '@heroicons/react/outline'; -import { PublicLinkAccessOptions } from './public-link-access-options'; +import { PublicLinkAccessOptions } from '../public-link/public-link-access-options'; import { CuteDepictionOfFolderHierarchy } from './cute-depiction-of-folder-hierarchy'; import { InheritAccessOptions } from './inherit-access-options'; import { changePublicLink, hasAnyPublicLinkAccess } from '@features/files/utils/access-info-helpers';