()
| 169 | } |
| 170 | |
| 171 | export function Files() { |
| 172 | const fileInputRef = useRef<HTMLInputElement>(null) |
| 173 | const saveRef = useRef<(() => Promise<void>) | null>(null) |
| 174 | |
| 175 | const params = useParams() |
| 176 | const router = useRouter() |
| 177 | const [{ folderId: currentFolderId, new: isNewFile, shareFileId }, setFilesParams] = |
| 178 | useQueryStates(filesParsers, filesUrlKeys) |
| 179 | const workspaceId = params?.workspaceId as string |
| 180 | |
| 181 | const posthog = usePostHog() |
| 182 | const posthogRef = useRef(posthog) |
| 183 | posthogRef.current = posthog |
| 184 | |
| 185 | const fileIdFromRoute = |
| 186 | typeof params?.fileId === 'string' && params.fileId.length > 0 ? params.fileId : null |
| 187 | const userPermissions = useUserPermissionsContext() |
| 188 | const canEdit = userPermissions.canEdit === true |
| 189 | const { config: permissionConfig } = usePermissionConfig() |
| 190 | |
| 191 | useEffect(() => { |
| 192 | if (permissionConfig.hideFilesTab) { |
| 193 | router.replace(`/workspace/${workspaceId}`) |
| 194 | } |
| 195 | }, [permissionConfig.hideFilesTab, router, workspaceId]) |
| 196 | |
| 197 | const { data: files = EMPTY_WORKSPACE_FILES, isLoading, error } = useWorkspaceFiles(workspaceId) |
| 198 | const { data: folders = EMPTY_WORKSPACE_FILE_FOLDERS } = useWorkspaceFileFolders(workspaceId) |
| 199 | const { data: members } = useWorkspaceMembersQuery(workspaceId) |
| 200 | const membersById = useMemo(() => { |
| 201 | const map = new Map<string, WorkspaceMember>() |
| 202 | for (const member of members ?? []) map.set(member.userId, member) |
| 203 | return map |
| 204 | }, [members]) |
| 205 | const uploadFile = useUploadWorkspaceFile() |
| 206 | const notifyLimit = useLimitUpgradeToast() |
| 207 | const deleteFile = useDeleteWorkspaceFile() |
| 208 | const renameFile = useRenameWorkspaceFile() |
| 209 | const createFolder = useCreateWorkspaceFileFolder() |
| 210 | const updateFolder = useUpdateWorkspaceFileFolder() |
| 211 | const moveItems = useMoveWorkspaceFileItems() |
| 212 | const bulkArchiveItems = useBulkArchiveWorkspaceFileItems() |
| 213 | |
| 214 | const { |
| 215 | isOpen: isContextMenuOpen, |
| 216 | position: contextMenuPosition, |
| 217 | handleContextMenu: openContextMenu, |
| 218 | closeMenu: closeContextMenu, |
| 219 | } = useContextMenu() |
| 220 | |
| 221 | const { |
| 222 | isOpen: isListContextMenuOpen, |
| 223 | position: listContextMenuPosition, |
| 224 | handleContextMenu: handleListContextMenu, |
| 225 | closeMenu: closeListContextMenu, |
| 226 | } = useContextMenu() |
| 227 | |
| 228 | if (error) { |
nothing calls this directly
no test coverage detected