{"version":3,"sources":["hooks/fileSubtitle.js","middleware/Api.ts","redux/explorer/async.ts","component/Placeholder/TextLoading.js","redux/explorer/reducer.ts","component/Dial/AutoHidden.js","middleware/Auth.ts","services/navigate.ts","redux/explorer/index.ts","utils/page.ts","i18n.ts","component/Uploader/core/utils/pool.ts","component/Uploader/core/utils/validator.ts","component/Uploader/core/utils/request.ts","services/file.ts","component/Navbar/DarkModeSwitcher.js","component/Navbar/PolicySwitcher.js","component/FileManager/Navigator/SubActions.js","component/Modals/Report.js","component/Modals/CreateShare.js","component/Modals/PurchaseShare.js","component/Modals/OptionSelector.js","utils/index.js","component/Dial/Save.js","component/Modals/Loading.js","component/Modals/Copy.js","component/Modals/DirectoryDownload.js","component/Modals/Decompress.js","component/Modals/Compress.js","component/Modals/Relocate.js","component/Modals/RemoteDownload.js","component/Modals/Delete.js","component/FileManager/Modals.js","component/Viewer/Text.js","component/Viewer/Code.js","component/Uploader/core/errors/index.ts","component/Uploader/core/utils/helper.ts","component/Uploader/core/utils/index.ts","component/Common/Snackbar.js","utils/zip.js","utils/api.ts","utils/filesystem.ts","redux/explorer/action.ts","component/Navbar/UserAvatarPopover.js","component/Navbar/UserAvatar.js","component/Navbar/Navbar.js","component/Navbar/SearchBar.js","component/Navbar/StorageBar.js","component/Navbar/UserInfo.js","component/Navbar/FileTags.js","component/FileManager/ImgPreview.js","config.ts","component/Uploader/core/types.ts","component/Uploader/core/uploader/base.ts","component/Uploader/core/logger.ts","component/Uploader/core/api/index.ts","component/Uploader/core/index.ts","component/Uploader/core/uploader/chunk.ts","component/Uploader/core/uploader/local.ts","component/Uploader/core/uploader/remote.ts","component/Uploader/core/uploader/onedrive.ts","component/Uploader/core/uploader/oss.ts","component/Uploader/core/uploader/qiniu.ts","component/Uploader/core/uploader/cos.ts","component/Uploader/core/uploader/upyun.ts","component/Uploader/core/uploader/s3.ts","component/Uploader/core/uploader/placeholder.ts","component/Dial/Create.js","component/Uploader/Popup/TaskDetail.js","component/Uploader/Popup/UploadTask.js","component/Uploader/UseUpload.js","component/Modals/ConcurrentOption.js","component/Uploader/Popup/MoreActions.js","component/Uploader/Popup/TaskList.js","component/Placeholder/DropFile.js","component/Uploader/Uploader.js","utils/datetime.js","redux/viewUpdate/action.ts","component/FileManager/TypeIcon.js","serviceWorker.js","middleware/AuthRoute.js","middleware/NoAuthRoute.js","component/Placeholder/PageLoading.js","component/Share/NotFound.js","component/Placeholder/Captcha.js","hooks/normal.js","component/Login/ReCaptchaWrapper.js","component/Login/ReCaptcha.js","hooks/recaptcha.js","hooks/tcaptcha.js","hooks/useCaptcha.js","component/Login/LoginForm.js","component/FileManager/Navigator/PathButton.js","component/FileManager/Navigator/DropDownItem.js","component/FileManager/Navigator/DropDown.js","component/FileManager/Navigator/Navigator.js","component/FileManager/FileName.js","component/FileManager/SmallIcon.js","component/FileManager/FileIcon.js","component/FileManager/Folder.js","component/FileManager/DnD/Preview.js","component/FileManager/DnD/DragLayer.js","component/FileManager/TableRow.js","component/FileManager/DnD/DropWarpper.js","component/FileManager/DnD/Scrolling.js","component/FileManager/ObjectIcon.js","component/FileManager/ContextMenu.js","component/FileManager/Explorer.js","hooks/pagination.js","component/Placeholder/ListLoading.js","component/FileManager/Sidebar/SideDrawer.js","component/FileManager/PaginationItem.js","component/FileManager/Pagination.js","component/FileManager/FileManager.js","component/Viewer/SelectMenu.js","component/Viewer/Video.js","component/Share/SearchResult.js","component/Share/MyShare.js","component/Modals/SelectFile.js","component/Download/DownloadingCard.js","component/Download/FinishedCard.js","component/Dial/Aria2.js","component/Download/Download.js","component/Share/LockedFile.js","component/Share/Creator.js","component/Share/SharedFile.js","component/Share/SharedFolder.js","component/Share/SharePreload.js","component/Viewer/Doc.js","component/VAS/Quota.js","component/VAS/PackSelect.js","component/VAS/PaymentDialog.js","component/VAS/BuyQuota.js","component/Modals/CreateWebDAVAccount.js","component/Modals/CreateWebDAVMount.js","component/Setting/AppQRCode.js","component/Setting/AppPromotion.js","component/Setting/WebDAV.js","component/Setting/Tasks.js","component/Setting/Profile.js","component/Setting/Authn.js","component/Modals/TimeZone.js","component/Modals/BindPhone.js","component/Setting/UserSetting.js","component/Login/QQ.js","component/Login/Register.js","component/Login/Activication.js","component/Login/ResetForm.js","component/Login/Reset.js","component/Modals/SiteNotice.js","component/FileManager/MusicPlayer.js","component/Viewer/Epub.js","App.js","middleware/Init.js","redux/viewUpdate/reducer.ts","reducers/index.js","component/Placeholder/ErrorBoundary.js","index.js","redux/combineReducers.ts","component/Placeholder/Nothing.js","component/FileManager/PathSelector.js"],"names":["UseFileSubTitle","query","math","location","dispatch","useDispatch","useState","title","setTitle","path","setPath","SetSubTitle","useCallback","changeSubTitle","useEffect","pathHelper","isSharePage","pathname","get","split","length","params","baseURL","getBaseURL","getPreviewURL","isShare","shareID","fileID","encodeURIComponent","instance","axios","create","withCredentials","AppError","message","code","error","i18next","exists","ns","t","includes","stack","Error","interceptors","response","use","rawData","data","undefined","Auth","signout","window","href","search","msg","Promise","reject","askForOption","options","getState","a","resolve","dialog","open","setOptionModal","onClose","callback","option","purchased","Map","trySharePurchase","share","router","score","Check","toggleSnackbar","closeAllModals","GetUser","group","shareFree","has","key","confirmPurchase","set","useStyles","makeStyles","theme","loader","width","padding","breakpoints","down","MyLoader","props","backgroundColor","dark","foregroundColor","className","TextLoading","useTheme","classes","palette","type","initState","dndSignal","dndTarget","dndSource","fileList","dirList","selected","selectProps","isMultiple","withFolder","withFile","withSourceEnabled","lastSelect","file","id","name","size","date","create_date","index","shiftSelectedIds","imgPreview","first","other","audioPreview","playingName","paused","isOpen","fileSave","sideBarOpen","checkSelectedProps","forEach","value","source_enabled","explorer","state","action","Object","assign","target","source","list","addedSelected","targets","newSelected","fileIds","filteredSelected","filter","keywords","searchPath","currentPolicy","policy","purchase","AutoHidden","children","enable","hide","element","hidden","setHidden","prev","scrollY","lastUpdate","addEventListener","e","currentTarget","current","scrollTop","handleNavigation","in","isAuthenticated","authenticate","cb","SetUser","JSON","parse","localStorage","getItem","newUser","setItem","stringify","anonymous","oldUser","SetPreference","preference","GetPreference","GetPreferenceWithDefault","defaultVal","apiURL","API","actions","reducers","setNavigator","navigatorLoading","navigateTo","navigator","setPagination","viewUpdate","pagination","page","navigateUp","pathSplit","pop","newPath","join","drawerToggleAction","dragAndDrop","changeViewMethod","method","toggleDaylightMode","changeContextMenu","menuType","setNavigatorLoadingStatus","status","setNavigatorError","openCreateFolderDialog","openCreateFileDialog","setUserPopover","anchor","setShareUserPopover","openRenameDialog","openResaveDialog","openMoveDialog","openRemoveDialog","openShareDialog","applyThemes","setSessionStatus","openMusicDialog","openRemoteDownloadDialog","openTorrentDownloadDialog","openDecompressDialog","openCompressDialog","openRelocateDialog","openGetSourceDialog","openCopyDialog","openLoadingDialog","text","vertical","horizontal","color","setModalsLoading","refreshFileList","searchMyFile","showImgPreivew","showAudioPreview","audioPreviewSetIsOpen","audioPreviewSetPlaying","refreshStorage","saveFile","setSiteConfig","config","openDirectoryDownloadDialog","downloading","log","done","statusHelper","isHomePage","startsWith","isAdminPage","isLoginPage","isMobile","innerWidth","i18n","ChainedBackend","LanguageDetector","initReactI18next","init","fallbackLng","debug","load","defaultNS","interpolation","escapeValue","backend","backends","LocalStorageBackend","Backend","backendOptions","expirationTime","queryStringParams","v","ASSETS_VERSION","loadPath","on","lng","document","documentElement","setAttribute","languages","displayName","Pool","limit","queue","processing","uploader","push","check","item","this","findIndex","task","dst","ProcessingTaskDuplicatedError","release","run","then","err","processingNum","availableNum","Math","max","slice","checkers","allowedSuffix","ext","FileValidateError","maxSize","validate","c","CancelToken","baseConfig","transformResponse","TransformResponseError","cdBackendConfig","request","url","catch","isCancel","RequestCanceledError","HTTPError","requestAPI","getDownloadURL","reqURL","downloadPath","put","icon","opacity","DarkModeSwitcher","position","useTranslation","ThemeType","useSelector","siteConfig","ToggleThemeMode","isDayLight","isDark","placement","classNames","onClick","uploadFromFile","blue","policySelected","green","header","fontSize","minWidth","maxHeight","overflow","PolicySwitcher","React","anchorEl","setAnchorEl","policies","setPolicies","loading","setLoading","ToggleSnackbar","RefreshFileList","handleClose","Boolean","event","anchorOrigin","transformOrigin","map","button","component","post","switchTo","primary","RouterLink","to","sideButton","marginRight","sortOptions","paginationOption","SubActions","isSmall","inherit","keyPrefix","vasT","viewMethod","explorerViewMethod","shareInfo","pageSize","OpenLoadingDialog","ChangeSortMethod","changeSortMethod","OpenResaveDialog","SetShareUserPopover","ChangePageSize","changePageSize","anchorSort","setAnchorSort","anchorPagination","setAnchorPagination","selectedIndex","setSelectedIndex","openReport","setOpenReport","handlePaginationChange","s","toggleViewMethod","newMethod","toString","parseInt","0","1","2","3","4","5","6","7","handleMenuItemClick","nick","creator","style","height","src","widthAnimation","shareUrl","wrapper","margin","spacing","buttonProgress","secondary","light","top","left","flexCenter","alignItems","noFlex","display","scoreCalc","marginTop","Report","reason","setReason","des","setDes","setTimeout","aria-labelledby","maxWidth","fullWidth","aria-label","onChange","reportReasons","k","control","label","multiline","variant","rows","disabled","ExpansionPanel","withStyles","root","border","boxShadow","borderBottom","expanded","MuiExpansionPanel","ExpansionPanelSummary","content","MuiExpansionPanelSummary","ExpansionPanelDetails","background","default","MuiExpansionPanelDetails","CreatShare","scoreEnabled","score_enabled","scoreRate","share_score_rate","lastSubmit","useRef","setExpanded","shareURL","setShareURL","password","downloads","expires","showPassword","values","setValues","expire","preview","shareOption","setShareOption","handleChange","prop","handleExpand","panel","isExpanded","handleCheck","aria-controls","checked","htmlFor","endAdornment","random","substr","edge","onMouseDown","preventDefault","onIcon","offIcon","labelWidth","labelId","num","marginLeft","inputProps","min","ceil","onFocus","select","autoFocus","readonly","link","clipboard","writeText","submitFormBody","is_dir","modalsLoading","PurchaseShareDialog","OptionSelector","modals","dividers","o","description","sizeToString","bytes","i","floor","pow","toFixed","fixUrlHash","setGetParameter","paramName","paramValue","indexOf","prefix","substring","suffix","history","pushState","changeThemeColor","querySelector","bufferDecode","Uint8Array","from","atob","charCodeAt","bufferEncode","btoa","String","fromCharCode","apply","replace","pathBack","folders","filePath","hex2bin","hex","padStart","basename","pathList","filename","fileNameNoExt","lastIndexOf","randomStr","result","characters","charactersLength","charAt","getNumber","base","conditions","isMac","platform","toUpperCase","isMobileSafari","ua","userAgent","iOS","match","webkit","vhCheck","vh","innerHeight","setProperty","getSelectItemStyles","personName","fontWeight","typography","fontWeightRegular","fontWeightMedium","removeI18nCache","keys","removeItem","fab","right","bottom","zIndex","badge","fabProgress","buttonSuccess","SaveButton","buttonClassname","clsx","avatar","loadingContainer","LoadingDialog","loadingText","Dialog","DialogContent","DialogContentText","CircularProgress","contentFix","CopyDialog","selectedPath","setSelectedPath","selectedPathName","setSelectedPathName","SetModalsLoading","DialogTitle","PathSelector","presentPath","onSelect","folder","Trans","i18nKey","components","DialogActions","Button","dirs","items","src_dir","DirectoryDownloadDialog","logRef","autoScroll","setAutoScroll","previousLog","usePrevious","next","timer","setTimer","useInterval","scrollIntoView","behavior","block","TextField","ref","FormControlLabel","Checkbox","previous","cancelDirectoryDownload","DecompressDialog","SubmitDecompressTask","submitDecompressTask","CompressDialog","fileName","setFileName","SubmitCompressTask","submitCompressTask","input","RelocateDialog","selectedPolicy","setSelectedPolicy","Select","MenuItem","dst_policy_id","formGroup","marginBottom","forumInput","flexGrow","RemoteDownload","selectPathOpen","setSelectPathOpen","downloadTo","setDownloadTo","setUrl","nodes","setNodes","nodesLoading","setNodesLoading","preferredNode","setPreferredNode","useMediaQuery","user","selectNode","torrent","placeholder","InputProps","startAdornment","InputAdornment","FolderOpenOutlined","FormControl","formControl","InputLabel","DnsOutlined","node","preferred_node","failed","r","details","form","Delete","force","setForce","unlink","setUnlink","advanceDelete","FormLabel","FormGroup","Tooltip","delete","ModalsCompoment","newFolderName","newFileName","newName","secretShare","sharePwd","purchaseCallback","handleInputChange","setState","newNameSuffix","UNSAFE_componentWillReceiveProps","nextProps","dndSignale","modalsStatus","rename","dragMove","submitResave","shareKey","submitMove","patch","DragSelectedPath","doMove","submitRename","new_name","submitCreateNewFolder","submitCreateNewFile","setMoveTarget","copySource","getSource","PurchaseShare","createNewFolder","onSubmit","createNewFile","copy","move","resave","remove","remoteDownload","remoteDownloadTorrent","decompress","compress","relocate","directoryDownloading","directoryDownloadDone","directoryDownloadLog","Component","Modals","connect","withRouter","withTranslation","layout","up","player","borderRadius","shape","overflowX","TextViewer","setContent","setStatus","useRouteMatch","$vm","createRef","useLocation","URLSearchParams","useParams","requestURL","responseType","textdata","Buffer","toBase64","reader","FileReader","readAsDataURL","onload","onerror","save","addImg","$file","$img2Url","console","elevation","language","onSave","toolbar","h1","h2","h3","h4","img","expand","undo","redo","subfield","MonacoEditor","lazy","editor","toobar","textAlign","CodeViewer","setSuffix","wordWrap","setWordWrap","extension","codePreviewSuffix","Array","Set","fallback","readOnly","extraEditorClassName","UploaderErrorName","RETRY_ERROR_LIST","FailedCreateUploadSession","HTTPRequestFailed","LocalChunkUploadFailed","SlaveChunkUploadFailed","RequestCanceled","ProcessingTaskDuplicated","FailedTransformResponse","RETRY_CODE_LIST","UploaderError","field","InvalidFile","supported","UnknownPolicyError","UnknownPolicyType","APIError","appError","CreateUploadSessionError","DeleteUploadSessionError","FailedDeleteUploadSession","axiosErr","LocalChunkUploadError","chunkIndex","SlaveChunkUploadError","OneDriveChunkError","OneDriveChunkUploadFailed","retryAfterSeconds","retryAfter","OneDriveEmptyFileSelected","OneDriveEmptyFile","OneDriveFinishUploadError","FailedFinishOneDriveUpload","S3LikeChunkError","S3LikeChunkUploadFailed","getElementsByTagName","innerHTML","S3LikeFinishUploadError","QiniuChunkError","QiniuChunkUploadFailed","QiniuFinishUploadError","FailedFinishQiniuUpload","COSUploadError","COSPostUploadFailed","COSUploadCallbackError","COSUploadCallbackFailed","UpyunUploadError","UpyunPostUploadFailed","S3LikeUploadCallbackError","S3LikeUploadCallbackFailed","parseError","getChunks","chunkByteSize","chunks","count","chunk","sumChunk","reduce","loaded","getResumeCtxKey","setResumeCtx","logger","ctxKey","warn","WriteCtxFailed","removeResumeCtx","RemoveCtxFailed","cleanupResumeCtx","getResumeCtx","localInfoString","ReadCtxFailed","localInfo","InvalidCtxData","session","Date","now","CtxExpired","listResumeCtx","res","len","OBJtoXML","obj","xml","isArray","array","getFileInput","isFolder","createElement","multiple","body","appendChild","pathJoin","parts","sep","part","RegExp","trimPrefix","getDirectoryUploadDst","relPath","webkitRelativePath","fsPath","readEntriesPromise","directoryReader","readEntries","readFilePromise","fileReader","readAllDirectoryEntries","entries","getAllFileEntries","dataTransferItemList","fileEntries","webkitGetAsEntry","getAsFile","entry","shift","isFile","fullPath","isDirectory","createReader","isFileDrop","dataTransfer","types","variantIcon","success","CheckCircleIcon","warning","WarningIcon","ErrorIcon","info","InfoIcon","MySnackbarContentWrapper","main","iconVariant","Icon","aria-describedby","close","SnackbarCompoment","snackbar","toggle","autoHideDuration","AlertBar","Crc32","crc","table","offset","prototype","j","getDataHelper","byteLength","uint8","view","DataView","buffer","ZIP","underlyingSource","ctrl","activeZipObject","closed","files","filenames","encoder","TextEncoder","activeZipIndex","processNextChunk","closeZip","zipWriter","enqueue","fileLike","TypeError","trim","lastModified","directory","endsWith","nameBuf","encode","zipObject","level","comment","compressedLength","uncompressedLength","writeHeader","setUint16","setUint32","getHours","getMinutes","getSeconds","getFullYear","getMonth","getDate","writeFooter","footer","indexFilename","setUint8","zipObj","read","outputData","append","stream","getReader","ReadableStream","start","pull","getPreviewPath","walk","f","objects","subs","getFileSystemDirectoryPaths","handle","parent","paths","fileSystemHandle","FileSystemFileHandle","createFileSystemDirectory","cur","getDirectoryHandle","saveFileToFileSystemDirectory","dir","getFileHandle","createWritable","writable","write","verifyFileSystemRWPermission","fileHandle","opts","mode","queryPermission","requestPermission","directoryDownloadAbortController","setFileList","setDirList","setSortMethod","setSideBar","setCurrentPolicy","removeSelectedTargets","addSelectedTargets","setSelectedTarget","setLastSelect","setShiftSelectedIds","sortMethodFuncs","sizePos","b","sizeRes","namePos","localeCompare","numeric","ignorePunctuation","nameRev","timePos","timeRev","modifyTimePos","modifyTimeRev","selectAll","updateFileList","sortMethod","x","sortFunc","sort","total","toggleObjectInfoSidebar","closeContextMenu","serverSideBatchDownload","postBody","startDownload","shareDownload","startBatchDownload","allowArchiveDownload","fileStream","streamSaver","createWriteStream","readableZipStream","previewPath","fetch","cache","WritableStream","pipeTo","abort","startDirectoryDownload","AbortController","showDirectoryPicker","isSecureContext","startIn","fsPaths","duplicates","updateLog","signal","blob","getViewerURL","viewer","openViewer","openPreview","isPreviewable","selectFile","fileIndex","ctrlKey","metaKey","shiftKey","isMacbook","all","begin","end","newShiftSelected","encodings","encoding","encodingRequired","allOptions","batchGetSource","sourceBatch","openTorrentDownload","openParentFolder","UserAvatarPopoverCompoment","openURL","sigOut","reload","Popover","visitorMenu","Divider","ListItemIcon","registerEnabled","largeAvatarContainer","Avatar","largeAvatar","Typography","noWrap","nickname","user_name","Chip","UserAvatarPopover","userPopoverAnchorEl","UserAvatarCompoment","showUserInfo","returnHome","loginCheck","isLogin","mobileHidden","Grow","IconButton","Home","UserAvatar","ListItem","MuiListItem","NavbarCompoment","componentDidMount","handleDrawerToggle","mobileOpen","openDownload","openDirectoryDownload","archiveDownload","signOut","finally","UploaderRef","unlisten","listen","drawer","upDrawer","minStickDrawer","paddingList","iconFix","allowRemoteDownload","process","browser","test","appBar","menuButton","handleDesktopToggle","desktopOpen","menuButtonDesktop","menuIcon","subTitle","grow","sectionForFile","disableClickAway","audioPreviewPlayingName","audioPreviewOpen","smUp","implementation","container","paper","drawerPaper","onOpen","disableDiscovery","ModalProps","keepMounted","xsDown","drawerPaperDesktop","drawerOpen","drawerClose","Navbar","loadUploader","audioPreviewIsOpen","withTheme","flexShrink","drawerDesktop","mixins","flexDirection","justifyContent","transition","transitions","easing","sharp","duration","enteringScreen","leavingScreen","nested","paddingLeft","extendedIcon","addButton","fabButton","badgeFix","dividerFix","folderShareIcon","verticalAlign","shareInfoContainer","textDecoration","shareAvatar","stickFooter","ownerInfo","overflowY","configure","ignoreTags","keyMap","SEARCH","SearchBarCompoment","handlers","searchShare","blur","cancelSuggest","searchIcon","inputRoot","inputInput","onBlur","suggestBox","TransitionProps","timeout","square","SearchBar","fade","common","white","pointerEvents","paddingTop","paddingRight","paddingBottom","StorageBarCompoment","percent","used","showExpand","firstLoad","updateStatus","refresh","onMouseEnter","onMouseLeave","storageContainer","detail","bar","StorageBar","storageRefresh","textFix","textOverflow","UserInfoCompoment","userNav","flexAvatar","avatarImg","storageCircle","nickName","groupName","UserInfo","backgroundImage","backgroundSize","minHeight","transform","hiddenButton","subMenu","overFlow","whiteSpace","paddingSummary","icons","Circle","CircleOutline","Heart","HeartOutline","Hexagon","HexagonOutline","Hexagram","HexagramOutline","Rhombus","RhombusOutline","Square","SquareOutline","Triangle","TriangleOutline","FolderHeartOutline","AddTag","FileTag","useHistory","tagOpen","setTagOpen","addTagModal","setAddTagModal","tagHover","setTagHover","tags","setTags","SearchMyFile","p","NavigateTo","onSuccess","tag","newTags","iconVideo","iconImg","iconAudio","iconDoc","expression","IconComponent","getIcon","ImagPreviewComponent","photoIndex","firstOne","newImg","intro","fileType","toLowerCase","imgPreviewSuffix","images","visible","onIndexChange","n","ImgPreivew","msDocPreviewSuffix","subtitleSuffix","audioPreviewSuffix","videoPreviewSuffix","pdfPreviewSuffix","editSuffix","epubSuffix","json","php","py","bat","cpp","h","cs","css","dockerfile","go","html","ini","java","js","jsx","less","lua","sh","sql","yaml","mediaType","audio","video","image","pdf","word","ppt","excel","zip","excute","android","python","epub","isTorrent","isCompressFile","taskStatus","taskType","taskProgress","getTaskStatus","getTaskType","getTaskProgress","setWopiExts","exts","PolicyType","TaskType","Status","Logger","allowLevel","args","getPrintPrefix","createUploadSession","req","cancel","cancelToken","localUploadChunk","sessionID","onProgress","headers","onUploadProgress","progressEvent","slaveUploadChunk","credential","Authorization","oneDriveUploadChunk","range","finishOneDriveUpload","s3LikeUploadChunk","etag","s3LikeFinishUpload","isOss","PartNumber","ETag","validateStatus","qiniuDriveUploadChunk","upToken","authorization","qiniuFinishUpload","partNumber","cosFormUploadChunk","keyTime","ak","bodyFormData","FormData","cosUploadCallback","upyunFormUploadChunk","s3LikeUploadCallback","resumePolicy","local","remote","qiniu","oss","onedrive","s3","Base","manager","child","added","subscriber","progress","lastTime","startTime","subscribe","transit","initialized","setError","queued","pool","preparing","cachedInfo","utils","policy_id","last_modified","token","resumed","chunkProgress","upload","afterUpload","finished","cancelUploadSession","canceled","reset","deleteUploadSession","onTransition","newStatus","onError","onMsg","Retryable","fromCache","SelectType","Chunk","initBeforeUploadChunks","updateLocalCache","uploadChunk","chunkSize","notifyResumeProgress","getProgressInfoItem","Local","chunkInfo","updateChunkProgress","Remote","uploadURLs","OneDrive","rangeEnd","sendRange","innererror","alignChunkOffset","chunkOffset","rangeStatus","expectedStart","nextExpectedRanges","newChunkOffset","finishing","OSS","completeURL","Qiniu","chunkRes","COS","Upyun","ResumeHint","resumable","UploadManager","fileInput","directoryInput","currentPath","changeConcurrentLimit","newLimit","File","NoPolicySelected","onchange","ev","fileSelectCallback","click","resumeTasks","tasks","dispatchUploader","resumeHint","cleanupSessions","Event","onFileDroppedIn","onDropLeave","uploaders","onDropFileAdded","logLevel","concurrentLimit","dropZone","onDropOver","cos","upyun","S3","acceptVal","removeAttribute","UploadButton","setOpen","setQueued","OpenNewFolderDialog","OpenNewFileDialog","Queued","uploadClicked","openFileList","circularProgress","useMemo","totalSize","processedSize","taskListOpen","Badge","badgeContent","invisible","Backdrop","SpeedDial","tooltipTitle","SpeedDialIcon","openIcon","FabProps","ariaLabel","SpeedDialAction","tooltipOpen","Directory","infoTitle","infoValue","wordBreak","TaskDetail","navigateToDst","Link","datetime","locale","Grid","xs","progressContent","progressContainer","listAction","successStatus","errorStatus","disabledBadge","dstLink","fileNameContainer","getSpeedText","speed","speedAvg","useSpeedAvg","displayedSpeed","getErrMsg","errMsg","Message","UploadTask","useAvgSpeed","onCancel","onRefresh","taskHover","setTaskHover","startLoadedRef","setProgress","durationTotal","resAvg","retry","useUpload","fullScreen","statusText","uploaded","percentage","resumeLabel","continueLabel","progressBar","lighten","darken","taskDetail","u","stopRipple","stopPropagation","secondaryAction","show","onTouchStart","fileIcon","TypeIcon","isUpload","newExpanded","onMouseOver","ListItemText","ConcurrentOptionDialog","setCount","Input","step","MoreActions","uploadManager","deleteTask","setUseAvgSpeed","setFilter","sorter","setSorter","cleanFinished","retryFailed","concurrentDialog","setConcurrentDialog","RefreshStorage","listItems","tooltip","divider","Replay","ClearAll","Menu","enterNextDelay","dense","val","Transition","forwardRef","Slide","direction","rootOverwrite","flex","popup","inset","paddingZero","dialogContent","virtualList","expandIcon","shortest","expandIconExpanded","sorters","reverse","filters","ongoing","TaskList","taskList","setUploaders","refreshList","setRefreshList","Fade","currentList","Nothing","increaseViewportBy","itemContent","classnames","TransitionComponent","disableEnforceFocus","hideBackdrop","disableBackdropClick","disableScrollLock","Accordion","AppBar","Toolbar","disableGutters","MoreHoriz","AccordionDetails","createStyles","backdrop","DropFileBackground","totalProgressCollector","lastProgressStart","Uploader","setTaskListOpen","dropBgOpen","setDropBgOpen","processed","totalProgress","setTotalProgress","fileSelectCounter","openFileSelector","folderSelectCounter","openFolderSelector","enableUploader","taskAdded","original","onToast","setPolicy","unfinished","setInterval","dayjs","extend","utc","timezone","userTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","preferTimeZone","refreshTimeZone","formatLocalTime","time","tz","toDate","formatParams","year","month","day","hour","minute","second","validateTimeZone","format","setSubtitle","setShareInfo","selectLanguage","changeLanguage","AudioIcon","VideoIcon","ImageIcon","PdfIcon","FileWordBox","FilePowerpointBox","FileExcelBox","ScriptText","MagnetOn","ZipBox","WindowRestore","Android","FileShowIcon","LanguagePhp","LanguageGo","LanguagePython","LanguageC","LanguageCpp","LanguageJavascript","MenuBook","fileSuffix","getColor","getColorValue","iconClassName","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","isLocalhost","hostname","AuthRoute","rest","render","NoAuthRoute","PageLoading","emptyContainer","emptyInfoBig","Notice","primaryColor","secondaryColor","y","rx","ry","captchaPlacholder","NormalCaptcha","captchaRef","useStyle","captcha","setCaptcha","captchaData","setCaptchaData","refreshCaptcha","captchaCode","captchaInputContainer","required","autoComplete","captchaImageContainer","captchaImage","alt","ReCAPTCHA","handleExpired","bind","handleErrored","handleRecaptchaRef","grecaptcha","_widgetId","getResponse","execute","_executeRequested","onExpired","onErrored","sitekey","tabindex","stoken","hl","explicitRender","delayOfCaptchaIframeRemoving","temporaryNode","firstChild","removeChild","elem","childProps","defaultProps","makeAsyncScriptLoader","callbackName","globalName","Recaptcha","reCaptchaKey","captcha_ReCaptchaKey","captchaContainer","ReCaptcha","TCaptcha","isValidateRef","submitRef","appid","tcaptcha_captcha_app_id","onLoad","TencentCaptcha","ret","ticket","randstr","isValidate","submit","cursor","defaultValidate","useCaptcha","captchaType","captcha_type","captchaLoading","setCaptchaLoading","captchaRefreshRef","normal","captchaParamsRef","CaptchaRender","useNormalCaptcha","recaptcha","useRecaptcha","tcaptcha","useTCaptcha","buttonContainer","authnLink","LoginForm","email","setEmail","pwd","setPwd","useAuthn","setUseAuthn","twoFA","setTwoFA","faCode","setFACode","loginCaptcha","QQLogin","authn","ApplyThemes","SetSessionStatus","afterLogin","Paper","login","userName","Password","EmailOutlined","VpnKeyOutlined","credentials","credentialRequestOptions","publicKey","challenge","allowCredentials","listItem","assertion","authData","authenticatorData","clientDataJSON","rawId","sig","signature","userHandle","Fingerprint","VpnKey","expandMore","active","textTransform","PathButton","inputRef","useDrop","accept","drop","more","collect","monitor","isOver","canDrop","isActive","last","DropDownItem","setActiveStatus","DropDown","clearTimeout","shouldClose","NavigatorComponent","currentID","hiddenFolders","hiddenMode","anchorHidden","URL","searchParams","renderPath","onpopstate","navigateToPath","max_size","file_type","checkOverFlow","redresh","componentDidUpdate","prevProps","prevStates","ms","drawerDesktopOpen","overflowInitLock","hasOverflowingChildren","offsetHeight","scrollHeight","offsetWidth","scrollWidth","showHiddenPath","performAction","newTarget","presentFolderMenu","disableAutoFocusItem","Archive","roundBorder","navigatorContainer","nav","rightIcon","optionContainer","Navigator","highlight","FileName","highlightClassName","searchWords","autoEscape","textToHighlight","SmallIconCompoment","nextState","nextContext","isSelectedCurrent","isSelectedNext","isSelected","ButtonBase","focusRipple","notSelected","onIconClick","iconSelected","iconNotSelected","checkIcon","folderName","folderNameSelected","folderNameNotSelected","SmallIcon","boxSizing","FileIconCompoment","showPicIcon","pic","picPreview","noDrag","afterLoad","beforeLoad","loadingAnimation","previewIcon","iconBig","fileInfo","shareFix","FileIcon","objectFit","userDrag","Folder","dragging","cardDragged","diliverIcon","object","Preview","card","layerStyles","getItemStyles","initialOffset","currentOffset","pointerOffset","WebkitTransform","CustomDragLayer","useDragLayer","itemType","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getInitialClientOffset","isDragging","TableRowCompoment","tableIcon","pref","onContextMenu","contextMenu","handleClick","onDoubleClick","handleDoubleClick","selectedShared","TableCell","dref","scope","tableRow","hideAuto","TableItem","hover","userSelect","FolderDropWarpper","isListView","useDragScrolling","isScrolling","goDown","isScrollEnd","requestAnimationFrame","goUp","throttleOnDragOver","throttle","isMouseOnTop","clientY","isMouseOnDown","addEventListenerForWindow","removeEventListenerForWindow","removeEventListener","fixFlex","ObjectIcon","navigatorPath","ContextMenu","SetSelectedTarget","NavitateTo","DragAndDrop","OpenPreview","StartDownload","SelectFile","enterFolder","handleIconClick","useDrag","dropResult","getDropResult","canDrag","drag","getEmptyImage","captureDraggingState","StyledListItemIcon","ContextMenuCompoment","X","Y","setPoint","clientX","openArchiveDownload","renderMenuItems","visibleCount","condition","menuOpen","anchorReference","anchorPosition","Unarchive","InfoOutlined","propover","contextType","contextOpen","rootTable","typeHeader","errorBox","errorMsg","flexFix","upButton","clickAway","rootShare","visuallyHidden","clip","gridContainer","gridTemplateColumns","gridItem","DELETE_FILE","SELECT_ALL_SHOWED","SELECT_ALL","DESELECT_ALL","Explorer","navigatorErrorMsg","navigatorError","OpenRemoveDialog","ChangeContextMenu","SelectAll","page_size","page_number","startIndex","usePagination","showView","listView","TableHead","TableSortLabel","TableBody","normalView","data-clickAway","dataset","clickaway","allowChanges","ListLoading","drawerContainer","placeContent","fileIconSVG","folderIcon","closeIcon","placeSelf","propsContainer","propsLabel","propsTime","propsValue","SideDrawer","SetSideBar","setTarget","setDetails","propsItem","d","toLocaleString","child_folder_num","child_file_num","updated_at","created_at","query_date","Hidden","Clear","Drawer","gutterBottom","CustomPaginationItem","PaginationItem","PaginationFooter","SetPagination","Pagination","renderItem","FileManager","DndProvider","HTML5Backend","DragLayer","SelectMenu","showIcon","Artplayer","externalPlayers","actionButton","VideoViewer","art","setArt","setFiles","subtitles","setSubtitles","playlist","setPlaylist","subtitleOpen","setSubtitleOpen","subtitleSelected","setSubtitleSelected","playlistOpen","setPlaylistOpen","externalPlayerOpen","setExternalPlayerOpen","autoHeight","pictureInPictureEnabled","playing","pip","pause","newURL","subtitle","switchUrl","switchSubtitle","switch","fileNameMatch","flip","setting","playbackRate","aspectRatio","hotkey","fullscreen","fullscreenWeb","whitelist","moreVideoAttr","playsInline","lang","getInstance","startIcon","Subtitles","PlaylistPlay","Launch","sub","cardContainer","shareTitle","avatarFile","avatarFolder","gird","loadMore","orderSelect","cardAction","SearchResult","tGlobal","setPage","setTotal","shareList","setShareList","orderBy","setOrderBy","order","sm","Card","CardHeader","subheader","MyShareCompoment","showPwd","loadList","removeShare","oldList","changePermission","newPwd","shareIndex","changePreviewOption","handlePageChange","handleOrderChange","isExpired","remain_downloads","md","CardActions","disableActionSpacing","VisibilityOff","MyShare","scroll","SelectFileDialog","filesCopy","row","iconContainer","borderInlineStart","contentSide","iconMultiple","subFile","subFileName","subFileIcon","subFileSize","subFilePercent","bitmap","DownloadingCard","canvasRef","setTask","selectDialogOpen","setSelectDialogOpen","selectFileOption","setSelectFileOption","bitfield","str","canvas","context","getContext","clearRect","strokeStyle","bit","round","numPieces","beginPath","moveTo","lineTo","stroke","getPercent","completed","activeFiles","getDownloadName","bittorrent","subFileList","processStyle","completedLength","subFileCell","newIndex","newFiles","gid","indexes","deleteFile","HighlightOff","Table","TableRow","CardContent","LinearProgress","downloaded","update","uploadLength","uploadSpeed","infoHash","numSeeders","seeder","pieceLength","FinishedCard","getTaskError","task_status","task_error","RemoteDownloadButton","OpenRemoteDownloadDialog","Fab","Add","DownloadComponent","interval","previousDownloading","finishedList","continue","loadDownloading","Download","LockedFileCompoment","setPassowrd","LockedFile","marginRottom","boxHeader","shareDes","Creator","userProfile","views","ImgPreview","SharedFileCompoment","scoreHandler","download","box","boxContent","fileSize","Box","sx","CardActionArea","rel","CardMedia","boxFooter","actionLeft","openResave","downloadButton","SharedFile","fileCotainer","buttonCotainer","ReadMe","SharedFolderComponent","handleClickAway","ignore","readmeShowed","ClickAwayListener","onClickAway","managerContainer","SharedFolder","shareUserPopoverAnchorEl","SharePreload","setShare","setPassword","locked","withPassword","iframe","DocViewer","setSession","setFile","shareOpened","modalLoading","CloseAllModals","OpenShareDialog","access_token","replaceAll","resolvedLanguage","handlePostMessage","origin","MessageId","frameholder","getElementById","office_frame","access_token_ttl","QuotaCompoment","basic","pack","r1","r2","r3","packs","usedR","baseR","packR","proBar","r1_block","note_block","r2_block","r3_block","align","activate_date","expiration","expiration_date","Quota","lineHeight","float","PackSelect","boxHead","packName","price","priceWithScore","boxBottom","codeContainer","PaymentDialog","payment","BuyQuotaCompoment","IntervalId","confirmRedeem","redeemCode","doRedeem","redeemInfo","buyPack","packType","selectedPack","packPayMethod","groups","selectedGroup","scoreNum","times","qr_code","querryLoop","clearInterval","handleChangeIndex","handleTexyChange","selectPack","selectGroup","selectPackPayMethod","scorePrice","alipay","payjs","wechat","custom","custom_name","score_price","methodSelect","RadioGroup","Radio","textField","Tabs","Tab","AccountBalanceWallet","payMethod","priceShow","tier","titleTypographyProps","subheaderTypographyProps","cardHeader","cardPricing","line","cardActions","redeemContainer","BuyQuota","grey","formIcon","CreateWebDAVAccount","setValue","pathSelectDialog","setPathSelectDialog","formContainer","LabelOutlined","CreateWebDAVMount","Storage","qrcode","AppQRCode","PhoneSkeleton","xmlns","enableBackground","viewBox","fill","strokeMiterlimit","strokeWidth","cx","cy","phoneContainer","marginX","perspective","transformStyle","perspectiveOrigin","phoneFrame","phoneImage","bold","frameContainer","grid","ol","paddingInlineStart","li","AppPromotion","effect","cardContent","tableContainer","WebDAV","tab","setTab","setCreate","mount","setMount","accounts","setAccounts","setFolders","appPromotion","app_promotion","account","ID","CreatedAt","Name","Root","Readonly","mountInfo","indicatorColor","textColor","newValue","Alert","severity","TableContainer","accountCopy","toggleAccountReadonly","deleteAccount","policy_name","folderCopy","deleteMount","Tasks","setTasks","nowrap","getError","ProfileCompoment","listType","loadNext","loadPrev","avatarContainer","centered","infoContainer","infoItem","mobileHide","th","tableLink","Profile","backgroundPosition","borderRaidus","pageInfo","sectionTitle","desenList","flexContainer","Authn","setSelected","confirm","setConfirm","deleteCredential","List","fingerprint","ListItemSecondaryAction","credentialCreationOptions","excludeCredentials","attestationObject","add","TimeZoneDialog","timeZoneValue","setTimeZoneValue","smsCode","sendButton","BindPhone","countdownTimer","countdownSecond","phone","setPhone","verifyCode","setVerifyCode","countdown","setCountdown","UserSettingCompoment","avatarModal","nickModal","changePassword","oldPwd","webdavPwd","newPwdRepeat","twoFactor","authCode","changeTheme","chosenTheme","showWebDavUrl","showWebDavUserName","changeWebDavPwd","groupBackModal","changeTimeZone","bindPhone","settings","uid","group_expires","qq","homepage","two_factor","two_fa_secret","prefer_theme","themes","changeView","loadSetting","doChangeGroup","useGravatar","changeNick","bindQQ","uploadAvatar","formData","handleToggle","changhePwd","old","new","init2FA","handleAlignment","toggleThemeMode","newMode","ListItemAvatar","infoTextWithIcon","rightIconWithText","infoText","ConfirmationNumber","Switch","firstColor","secondColor","Brightness3","ListAlt","Schedule","Translate","webdav","userGravatar","paddingText","flexContainerResponse","desText","ToggleButtonGroup","exclusive","ToggleButton","themeBlock","UserSetting","yellow","QQCallback","setMsg","avatarSuccess","Register","password_repeat","setInput","emailActive","setEmailActive","regCaptcha","Activation","setSuccess","ResetForm","secret","Reset","forgetCaptcha","overflowWrap","SiteNotice","site_notice","setShow","newNotice","dangerouslySetInnerHTML","__html","MusicPlayerComponent","currentIndex","currentTime","progressText","looptype","myAudioRef","newItem","handleItemClick","backgroundPlay","bindEvents","ele","readyPlay","loopnext","timeUpdate","unbindEvents","play","formatTime","isNaN","playOrPaues","isPlay","changeLoopType","lt","handleProgress","idx","Slider","slider_root","justify","Repeat","RepeatOne","Shuffle","MusicPlayer","ReactReader","m","EpubViewer","currentLocation","setLocation","fileUrl","locationChanged","epubcifi","epubInitOptions","openAs","showToc","PDFViewer","App","themeConfig","prefersDarkMode","prefer","createMuiTheme","overrides","MuiButton","MuiTab","Fragment","ThemeProvider","CssBaseline","exact","Text","Code","initUserConfig","store","defaultTheme","wopi_exts","preferListMethod","share_view_method","home_view_method","music","doNavigate","currntPath","defaultStatus","rawStore","configCache","InitSiteConfig","siteICPId","black","contrastText","hint","bgSelected","emptyIcon","ErrorBoundary","hasError","errorInfo","componentStack","Admin","hash","contentType","ready","unregister","checkValidServiceWorker","alert","waiting","postMessage","createBrowserHistory","reduxEnhance","applyMiddleware","routerMiddleware","thunk","createStore","viewUpdateState","explorerState","appState","cloudreveApp","combinedState","combinedReducer","combine","namespace","reducer","invariant","combineReducers","connectRouter","UpdateSiteConfig","ReactDOM","emptyInfoSmall","PathSelectorCompoment","selectedTarget","toBeLoad","back","api","unshift","displayNames","handleSelect","selector","primaryTypographyProps","showActionIcon","buttonIcon","iconWhite","actionIcon"],"mappings":"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","file":"static/js/main.0fef93ea.chunk.js","sourcesContent":["import { useDispatch } from \"react-redux\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { changeSubTitle } from \"../redux/viewUpdate/action\";\nimport pathHelper from \"../utils/page\";\n\nexport default function UseFileSubTitle(query, math, location) {\n const dispatch = useDispatch();\n const [title, setTitle] = useState(\"\");\n const [path, setPath] = useState(\"\");\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n\n useEffect(() => {\n if (!pathHelper.isSharePage(location.pathname)) {\n const path = query.get(\"p\").split(\"/\");\n setPath(query.get(\"p\"));\n SetSubTitle(path[path.length - 1]);\n setTitle(path[path.length - 1]);\n } else {\n SetSubTitle(query.get(\"name\"));\n setTitle(query.get(\"name\"));\n setPath(query.get(\"share_path\"));\n }\n // eslint-disable-next-line\n }, [math.params[0], location]);\n\n return { title, path };\n}\n","import axios from \"axios\";\nimport Auth from \"./Auth\";\nimport i18next from \"../i18n\";\n\nexport const baseURL = \"/api/v3\";\n\nexport const getBaseURL = () => {\n return baseURL;\n};\n\nexport const getPreviewURL = (\n isShare: boolean,\n shareID: any,\n fileID: any,\n path: any\n): string => {\n return (\n getBaseURL() +\n (isShare\n ? \"/share/preview/\" +\n shareID +\n (path !== \"\" ? \"?path=\" + encodeURIComponent(path) : \"\")\n : \"/file/preview/\" + fileID)\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n// @ts-ignore\nconst instance = axios.create({\n baseURL: getBaseURL(),\n withCredentials: true,\n});\n\nexport class AppError extends Error {\n constructor(message: string | undefined, public code: any, error: any) {\n super(message);\n this.code = code;\n if (i18next.exists(`errors.${code}`, { ns: \"common\" })) {\n this.message = i18next.t(`errors.${code}`, {\n ns: \"common\",\n message,\n });\n } else if (i18next.exists(`vasErrors.${code}`, { ns: \"common\" })) {\n this.message = i18next.t(`vasErrors.${code}`, {\n ns: \"common\",\n message,\n });\n } else if (i18next.exists(`errors.${code}`, { ns: \"dashboard\" })) {\n this.message = i18next.t(`errors.${code}`, {\n ns: \"dashboard\",\n message,\n });\n } else {\n this.message =\n message || i18next.t(\"unknownError\", { ns: \"common\" });\n }\n\n this.message +=\n error && !this.message.includes(error) ? ` (${error})` : \"\";\n this.stack = new Error().stack;\n }\n}\n\ninstance.interceptors.response.use(\n function (response: any) {\n response.rawData = response.data;\n response.data = response.data.data;\n if (\n response.rawData.code !== undefined &&\n response.rawData.code !== 0 &&\n response.rawData.code !== 203\n ) {\n // Login expired\n if (response.rawData.code === 401) {\n Auth.signout();\n window.location.href =\n \"/login?redirect=\" +\n encodeURIComponent(\n window.location.pathname + window.location.search\n );\n }\n\n // Non-admin\n if (response.rawData.code === 40008) {\n window.location.href = \"/home\";\n }\n\n // Not binding mobile phone\n if (response.rawData.code === 40010) {\n window.location.href = \"/setting?modal=phone\";\n }\n throw new AppError(\n response.rawData.msg,\n response.rawData.code,\n response.rawData.error\n );\n }\n return response;\n },\n function (error) {\n return Promise.reject(error);\n }\n);\n\nexport default instance;\n","import { ThunkAction } from \"redux-thunk\";\nimport Auth from \"../../middleware/Auth\";\nimport pathHelper from \"../../utils/page\";\nimport { closeAllModals, confirmPurchase, toggleSnackbar } from \"./index\";\nimport { setOptionModal } from \"../viewUpdate/action\";\nimport i18next from \"../../i18n\";\n\nexport const askForOption = (\n options: any,\n title: string\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n return new Promise((resolve, reject) => {\n const dialog = {\n open: true,\n title: title,\n options: options,\n };\n dispatch(\n setOptionModal({\n ...dialog,\n onClose: () => {\n dispatch(setOptionModal({ ...dialog, open: false }));\n reject(i18next.t(\"fileManager.userDenied\"));\n },\n callback: (option: any) => {\n resolve(option);\n dispatch(setOptionModal({ ...dialog, open: false }));\n },\n })\n );\n });\n };\n};\n\nconst purchased = new Map();\n\nexport const trySharePurchase = (\n share: any\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n return new Promise((resolve, reject) => {\n const {\n router: {\n location: { pathname },\n },\n } = getState();\n if (pathHelper.isSharePage(pathname) && share && share.score > 0) {\n if (!Auth.Check()) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"share.pleaseLogin\"),\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n reject(i18next.t(\"fileManager.userDenied\"));\n return;\n }\n\n if (\n !Auth.GetUser().group.shareFree &&\n !purchased.has(share.key)\n ) {\n dispatch(\n confirmPurchase({\n score: share.score,\n onClose: () => {\n dispatch(confirmPurchase(undefined));\n reject(i18next.t(\"fileManager.userDenied\"));\n },\n callback: () => {\n purchased.set(share.key, true);\n resolve();\n dispatch(confirmPurchase(undefined));\n },\n })\n );\n return;\n }\n }\n\n resolve();\n });\n };\n};\n","import React from \"react\";\nimport { Code } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"70%\",\n padding: 40,\n [theme.breakpoints.down(\"md\")]: {\n width: \"100%\",\n padding: 10,\n },\n },\n}));\n\nconst MyLoader = (props) => (\n \n);\n\nfunction TextLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n\nexport default TextLoading;\n","/* eslint-disable no-case-declarations */\nimport { AnyAction } from \"redux\";\nimport { CloudreveFile } from \"../../types\";\nimport { Policy } from \"../../component/Uploader/core/types\";\n\ninterface SelectProps {\n isMultiple: boolean;\n withFolder: boolean;\n withFile: boolean;\n withSourceEnabled: boolean;\n}\n\nexport interface ExplorerState {\n dndSignal: boolean;\n dndTarget: any;\n dndSource: any;\n fileList: CloudreveFile[];\n dirList: CloudreveFile[];\n selected: CloudreveFile[];\n selectProps: SelectProps;\n lastSelect: {\n file: CloudreveFile;\n index: number;\n };\n shiftSelectedIds: string[];\n imgPreview: {\n first: CloudreveFile;\n other: [];\n };\n audioPreview: {\n first: CloudreveFile;\n other: [];\n playingName: any;\n paused: boolean;\n isOpen: boolean;\n };\n search?: {\n keywords: string;\n searchPath: string;\n };\n fileSave: boolean;\n sideBarOpen: boolean;\n currentPolicy?: Policy;\n purchase?: {\n callback: any;\n onClose: any;\n score: number;\n };\n}\n\nexport const initState: ExplorerState = {\n dndSignal: false,\n dndTarget: null,\n dndSource: null,\n fileList: [],\n dirList: [],\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n withSourceEnabled: false,\n },\n lastSelect: {\n file: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n path: \"\",\n create_date: \"\",\n },\n index: -1,\n },\n shiftSelectedIds: [],\n imgPreview: {\n first: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n path: \"\",\n create_date: \"\",\n },\n other: [],\n },\n audioPreview: {\n first: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n path: \"\",\n create_date: \"\",\n },\n other: [],\n playingName: null,\n paused: false,\n isOpen: false,\n },\n fileSave: false,\n sideBarOpen: false,\n};\n\nconst checkSelectedProps = (selected: CloudreveFile[]): SelectProps => {\n const isMultiple = selected.length > 1;\n let withFolder = false;\n let withFile = false;\n let withSourceEnabled = false;\n selected.forEach((value) => {\n if (value.type === \"dir\") {\n withFolder = true;\n withSourceEnabled = true;\n } else if (value.type === \"file\") {\n withFile = true;\n if (value.source_enabled) {\n withSourceEnabled = true;\n }\n }\n });\n return {\n isMultiple,\n withFolder,\n withFile,\n withSourceEnabled,\n };\n};\n\nconst explorer = (\n state: ExplorerState = initState,\n action: AnyAction\n): ExplorerState => {\n switch (action.type) {\n case \"DRAG_AND_DROP\":\n return Object.assign({}, state, {\n dndSignal: !state.dndSignal,\n dndTarget: action.target,\n dndSource: action.source,\n });\n case \"SET_FILE_LIST\":\n return Object.assign({}, state, {\n fileList: action.list,\n });\n case \"SET_DIR_LIST\":\n return Object.assign({}, state, {\n dirList: action.list,\n });\n case \"ADD_SELECTED_TARGETS\":\n const addedSelected = [...state.selected, ...action.targets];\n return Object.assign({}, state, {\n selected: addedSelected,\n selectProps: checkSelectedProps(addedSelected),\n });\n case \"SET_SELECTED_TARGET\":\n const newSelected = action.targets;\n return Object.assign({}, state, {\n selected: newSelected,\n selectProps: checkSelectedProps(newSelected),\n });\n case \"RMOVE_SELECTED_TARGETS\":\n const { fileIds } = action;\n const filteredSelected = state.selected.filter((file) => {\n return !fileIds.includes(file.id);\n });\n return Object.assign({}, state, {\n selected: filteredSelected,\n selectProps: checkSelectedProps(filteredSelected),\n });\n case \"REFRESH_FILE_LIST\":\n return Object.assign({}, state, {\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n withSourceEnabled: false,\n },\n });\n case \"SEARCH_MY_FILE\":\n return Object.assign({}, state, {\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n withSourceEnabled: false,\n },\n search: {\n keywords: action.keywords,\n searchPath: action.path,\n },\n });\n case \"SHOW_IMG_PREIVEW\":\n return Object.assign({}, state, {\n imgPreview: {\n first: action.first,\n other: state.fileList,\n },\n });\n case \"SHOW_AUDIO_PREVIEW\":\n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n first: action.first,\n other: state.fileList,\n },\n });\n case \"AUDIO_PREVIEW_SET_IS_OPEN\":\n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n isOpen: action.isOpen,\n },\n });\n case \"AUDIO_PREVIEW_SET_PLAYING\":\n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n playingName: action.playingName,\n paused: action.paused,\n },\n });\n case \"SAVE_FILE\":\n return {\n ...state,\n fileSave: !state.fileSave,\n };\n case \"SET_LAST_SELECT\":\n const { file, index } = action;\n return {\n ...state,\n lastSelect: {\n file,\n index,\n },\n };\n case \"SET_SHIFT_SELECTED_IDS\":\n const { shiftSelectedIds } = action;\n return {\n ...state,\n shiftSelectedIds,\n };\n case \"SET_NAVIGATOR\":\n return {\n ...state,\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n withSourceEnabled: false,\n },\n search: undefined,\n };\n case \"SET_SIDE_BAR\":\n return {\n ...state,\n sideBarOpen: action.open,\n };\n case \"SET_CURRENT_POLICY\":\n return {\n ...state,\n currentPolicy: action.policy,\n };\n case \"CONFIRM_PURCHASE\":\n return {\n ...state,\n purchase: action.purchase,\n };\n default:\n return state;\n }\n};\n\nexport default explorer;\n","import React, { useEffect, useState } from \"react\";\nimport Zoom from \"@material-ui/core/Zoom\";\n\nfunction AutoHidden({ children, enable, hide = false, element = null }) {\n const [hidden, setHidden] = useState(false);\n let prev = window.scrollY;\n let lastUpdate = window.scrollY;\n const show = 50;\n\n useEffect(() => {\n const handleNavigation = (e) => {\n const window = e.currentTarget;\n const current = element ? element.scrollTop : window.scrollY;\n\n if (prev > current) {\n if (lastUpdate - current > show) {\n lastUpdate = current;\n setHidden(false);\n }\n } else if (prev < current) {\n if (current - lastUpdate > show) {\n lastUpdate = current;\n setHidden(true);\n }\n }\n prev = current;\n };\n if (enable) {\n const target = element ? element : window;\n target.addEventListener(\"scroll\", (e) => handleNavigation(e));\n }\n // eslint-disable-next-line\n }, [enable]);\n\n return {children};\n}\n\nexport default AutoHidden;\n","const Auth = {\n isAuthenticated: false,\n authenticate(cb: any) {\n Auth.SetUser(cb);\n Auth.isAuthenticated = true;\n },\n GetUser() {\n return JSON.parse(localStorage.getItem(\"user\") || \"null\");\n },\n SetUser(newUser: any) {\n localStorage.setItem(\"user\", JSON.stringify(newUser));\n },\n Check(): boolean {\n if (Auth.isAuthenticated) {\n return true;\n }\n if (localStorage.getItem(\"user\") !== null) {\n return !Auth.GetUser().anonymous;\n }\n return false;\n },\n signout() {\n Auth.isAuthenticated = false;\n const oldUser = Auth.GetUser();\n oldUser.id = 0;\n localStorage.setItem(\"user\", JSON.stringify(oldUser));\n },\n SetPreference(key: string, value: any) {\n let preference = JSON.parse(\n localStorage.getItem(\"user_preference\") || \"{}\"\n );\n preference = preference == null ? {} : preference;\n preference[key] = value;\n localStorage.setItem(\"user_preference\", JSON.stringify(preference));\n },\n GetPreference(key: string): any | null {\n const preference = JSON.parse(\n localStorage.getItem(\"user_preference\") || \"{}\"\n );\n if (preference && preference[key] !== undefined) {\n return preference[key];\n }\n return null;\n },\n GetPreferenceWithDefault(key: string, defaultVal: any): any {\n return Auth.GetPreference(key) !== null\n ? Auth.GetPreference(key)\n : defaultVal;\n },\n};\n\nexport default Auth;\n","import API from \"../middleware/Api\";\n\nexport async function list(\n path: string,\n share: any,\n keywords: string,\n searchPath: string\n): Promise {\n let apiURL = \"\";\n if (share) {\n if (keywords === \"\") {\n apiURL = \"/share/list/\" + share.key;\n } else {\n apiURL = `/share/search/${share.key}/`;\n }\n } else {\n if (keywords === \"\") {\n apiURL = \"/directory\";\n } else {\n apiURL = \"/file/search/\";\n }\n }\n\n path = keywords === \"\" ? path : keywords;\n apiURL = apiURL + encodeURIComponent(path);\n if (searchPath) {\n apiURL = `${apiURL}?path=${encodeURIComponent(searchPath)}`;\n }\n return API.get(apiURL);\n}\n","import * as actions from \"./action\";\nimport * as reducers from \"./reducer\";\nimport { setPagination } from \"../viewUpdate/action\";\n\nexport default {\n actions,\n reducers,\n};\nexport { selectFile } from \"./action\";\nexport { openPreview } from \"./action\";\nexport { setShiftSelectedIds } from \"./action\";\nexport { setLastSelect } from \"./action\";\nexport { setSelectedTarget } from \"./action\";\nexport { addSelectedTargets } from \"./action\";\nexport { removeSelectedTargets } from \"./action\";\nexport const setNavigator = (path: any, navigatorLoading: any) => {\n return {\n type: \"SET_NAVIGATOR\",\n path,\n navigatorLoading,\n };\n};\nexport const navigateTo = (path: any) => {\n return (dispatch: any, getState: any) => {\n const state = getState();\n const navigatorLoading = path !== state.navigator.path;\n if (navigatorLoading) {\n dispatch(\n setPagination({\n ...state.viewUpdate.pagination,\n page: 1,\n })\n );\n }\n dispatch(setNavigator(path, navigatorLoading));\n };\n};\nexport const navigateUp = () => {\n return (dispatch, getState) => {\n const state = getState();\n const pathSplit = state.navigator.path.split(\"/\");\n pathSplit.pop();\n const newPath = pathSplit.length === 1 ? \"/\" : pathSplit.join(\"/\");\n const navigatorLoading = newPath !== state.navigator.path;\n if (navigatorLoading) {\n dispatch(\n setPagination({\n ...state.viewUpdate.pagination,\n page: 1,\n })\n );\n }\n dispatch(setNavigator(newPath, navigatorLoading));\n };\n};\nexport const drawerToggleAction = (open) => {\n return {\n type: \"DRAWER_TOGGLE\",\n open: open,\n };\n};\nexport const dragAndDrop = (source, target) => {\n return {\n type: \"DRAG_AND_DROP\",\n source: source,\n target: target,\n };\n};\nexport const changeViewMethod = (method) => {\n return {\n type: \"CHANGE_VIEW_METHOD\",\n method: method,\n };\n};\nexport const toggleDaylightMode = () => {\n return {\n type: \"TOGGLE_DAYLIGHT_MODE\",\n };\n};\n// Deprecated\nexport const changeContextMenu = (type, open) => {\n return {\n type: \"CHANGE_CONTEXT_MENU\",\n menuType: type,\n open: open,\n };\n};\nexport const setNavigatorLoadingStatus = (status) => {\n return {\n type: \"SET_NAVIGATOR_LOADING_STATUE\",\n status: status,\n };\n};\nexport const setNavigatorError = (status, msg) => {\n return {\n type: \"SET_NAVIGATOR_ERROR\",\n status: status,\n msg: msg,\n };\n};\nexport const openCreateFolderDialog = () => {\n return {\n type: \"OPEN_CREATE_FOLDER_DIALOG\",\n };\n};\nexport const openCreateFileDialog = () => {\n return {\n type: \"OPEN_CREATE_FILE_DIALOG\",\n };\n};\nexport const setUserPopover = (anchor) => {\n return {\n type: \"SET_USER_POPOVER\",\n anchor: anchor,\n };\n};\nexport const setShareUserPopover = (anchor) => {\n return {\n type: \"SET_SHARE_USER_POPOVER\",\n anchor: anchor,\n };\n};\nexport const openRenameDialog = () => {\n return {\n type: \"OPEN_RENAME_DIALOG\",\n };\n};\nexport const openResaveDialog = (key) => {\n return {\n type: \"OPEN_RESAVE_DIALOG\",\n key: key,\n };\n};\nexport const openMoveDialog = () => {\n return {\n type: \"OPEN_MOVE_DIALOG\",\n };\n};\nexport const openRemoveDialog = () => {\n return {\n type: \"OPEN_REMOVE_DIALOG\",\n };\n};\nexport const openShareDialog = () => {\n return {\n type: \"OPEN_SHARE_DIALOG\",\n };\n};\nexport const applyThemes = (theme) => {\n return {\n type: \"APPLY_THEME\",\n theme: theme,\n };\n};\nexport const setSessionStatus = (status) => {\n return {\n type: \"SET_SESSION_STATUS\",\n status: status,\n };\n};\nexport const openMusicDialog = () => {\n return {\n type: \"OPEN_MUSIC_DIALOG\",\n };\n};\nexport const openRemoteDownloadDialog = () => {\n return {\n type: \"OPEN_REMOTE_DOWNLOAD_DIALOG\",\n };\n};\nexport const openTorrentDownloadDialog = (selected) => {\n return {\n type: \"OPEN_TORRENT_DOWNLOAD_DIALOG\",\n selected:selected,\n };\n};\nexport const openDecompressDialog = () => {\n return {\n type: \"OPEN_DECOMPRESS_DIALOG\",\n };\n};\nexport const openCompressDialog = () => {\n return {\n type: \"OPEN_COMPRESS_DIALOG\",\n };\n};\nexport const openRelocateDialog = () => {\n return {\n type: \"OPEN_RELOCATE_DIALOG\",\n };\n};\nexport const openGetSourceDialog = (source) => {\n return {\n type: \"OPEN_GET_SOURCE_DIALOG\",\n source,\n };\n};\nexport const openCopyDialog = () => {\n return {\n type: \"OPEN_COPY_DIALOG\",\n };\n};\n// Deprecated\nexport const openLoadingDialog = (text) => {\n return {\n type: \"OPEN_LOADING_DIALOG\",\n text: text,\n };\n};\n// Deprecated\nexport const closeAllModals = () => {\n return {\n type: \"CLOSE_ALL_MODALS\",\n };\n};\nexport const toggleSnackbar = (vertical, horizontal, msg, color) => {\n return {\n type: \"TOGGLE_SNACKBAR\",\n vertical: vertical,\n horizontal: horizontal,\n msg: msg,\n color: color,\n };\n};\nexport const setModalsLoading = (status) => {\n return {\n type: \"SET_MODALS_LOADING\",\n status: status,\n };\n};\nexport const refreshFileList = () => {\n return {\n type: \"REFRESH_FILE_LIST\",\n };\n};\nexport const searchMyFile = (keywords, path) => {\n return {\n type: \"SEARCH_MY_FILE\",\n keywords: keywords,\n path: path,\n };\n};\nexport const showImgPreivew = (first) => {\n return {\n type: \"SHOW_IMG_PREIVEW\",\n first: first,\n };\n};\nexport const showAudioPreview = (first) => {\n return {\n type: \"SHOW_AUDIO_PREVIEW\",\n first: first,\n };\n};\nexport const audioPreviewSetIsOpen = (isOpen) => {\n return {\n type: \"AUDIO_PREVIEW_SET_IS_OPEN\",\n isOpen,\n };\n};\nexport const audioPreviewSetPlaying = (playingName, paused) => {\n return {\n type: \"AUDIO_PREVIEW_SET_PLAYING\",\n playingName, //the playing content name\n paused,\n };\n};\nexport const refreshStorage = () => {\n return {\n type: \"REFRESH_STORAGE\",\n };\n};\nexport const saveFile = () => {\n return {\n type: \"SAVE_FILE\",\n };\n};\n\nexport const setSiteConfig = (config) => {\n return {\n type: \"SET_SITE_CONFIG\",\n config: config,\n };\n};\n\nexport const openDirectoryDownloadDialog = (downloading, log, done) => {\n return {\n type: \"OPEN_DIRECTORY_DOWNLOAD_DIALOG\",\n downloading,\n log,\n done,\n };\n};\n\nexport const confirmPurchase = (purchase) => {\n return {\n type: \"CONFIRM_PURCHASE\",\n purchase: purchase,\n };\n};\n","const statusHelper = {\n isHomePage(path: string) {\n return path === \"/home\";\n },\n isSharePage(path: string) {\n return path && path.startsWith(\"/s/\");\n },\n isAdminPage(path: string) {\n return path && path.startsWith(\"/admin\");\n },\n isLoginPage(path: string) {\n return path && path.startsWith(\"/login\");\n },\n isMobile() {\n return window.innerWidth < 600;\n },\n};\nexport default statusHelper;\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport Backend from \"i18next-http-backend\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n// @ts-ignore\nimport ChainedBackend, { ChainedBackendOptions } from \"i18next-chained-backend\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport LocalStorageBackend from \"i18next-localstorage-backend\";\n\ndeclare let ASSETS_VERSION: string;\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n// @ts-ignore\ni18n.use(ChainedBackend)\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: \"en-US\",\n debug: true,\n ns: [\"common\", \"application\"],\n load: \"currentOnly\",\n defaultNS: \"application\",\n interpolation: {\n escapeValue: false,\n },\n backend: {\n backends:\n process.env.NODE_ENV === \"development\"\n ? [Backend]\n : [LocalStorageBackend, Backend],\n backendOptions: [\n {\n expirationTime: 7 * 24 * 60 * 60 * 1000, // 7 days\n },\n {\n queryStringParams: { v: ASSETS_VERSION },\n loadPath: \"/locales/{{lng}}/{{ns}}.json\",\n },\n ],\n },\n });\n\ni18n.on(\"languageChanged\", (lng) => {\n document.documentElement.setAttribute(\"lang\", lng);\n});\n\nexport const languages = [\n {\n code: \"en-US\",\n displayName: \"English\",\n },\n {\n code: \"zh-CN\",\n displayName: \"简体中文\",\n },\n {\n code: \"zh-TW\",\n displayName: \"繁體中文\",\n },\n];\n\nexport default i18n;\n","import Base from \"../uploader/base\";\nimport { ProcessingTaskDuplicatedError } from \"../errors\";\n\nexport interface QueueContent {\n uploader: Base;\n resolve: () => void;\n reject: (err?: any) => void;\n}\n\nexport class Pool {\n queue: Array = [];\n processing: Array = [];\n\n constructor(public limit: number) {}\n\n enqueue(uploader: Base) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n uploader,\n resolve,\n reject,\n });\n this.check();\n });\n }\n\n release(item: QueueContent) {\n this.processing = this.processing.filter((v) => v !== item);\n this.check();\n }\n\n run(item: QueueContent) {\n this.queue = this.queue.filter((v) => v !== item);\n if (\n this.processing.findIndex(\n (v) =>\n v.uploader.task.dst == item.uploader.task.dst &&\n v.uploader.task.file.name == item.uploader.task.name\n ) > -1\n ) {\n // 找到重名任务\n item.reject(new ProcessingTaskDuplicatedError());\n this.release(item);\n return;\n }\n\n this.processing.push(item);\n item.uploader.run().then(\n () => {\n item.resolve();\n this.release(item);\n },\n (err) => {\n item.reject(err);\n this.release(item);\n }\n );\n }\n\n check() {\n const processingNum = this.processing.length;\n const availableNum = Math.max(0, this.limit - processingNum);\n this.queue.slice(0, availableNum).forEach((item) => {\n this.run(item);\n });\n }\n}\n","import { Policy } from \"../types\";\nimport { FileValidateError } from \"../errors\";\n\ninterface Validator {\n (file: File, policy: Policy): void;\n}\n\n// validators\nconst checkers: Array = [\n function checkExt(file: File, policy: Policy) {\n if (\n policy.allowedSuffix != undefined &&\n policy.allowedSuffix.length > 0\n ) {\n const ext = file?.name.split(\".\").pop();\n if (ext === null || !ext || !policy.allowedSuffix.includes(ext))\n throw new FileValidateError(\n \"File suffix not allowed in policy.\",\n \"suffix\",\n policy\n );\n }\n },\n\n function checkSize(file: File, policy: Policy) {\n if (policy.maxSize > 0) {\n if (file.size > policy.maxSize) {\n throw new FileValidateError(\n \"File size exceeds maximum limit.\",\n \"size\",\n policy\n );\n }\n }\n },\n];\n\n/* 将每个 Validator 执行\n 失败返回 Error\n */\nexport function validate(file: File, policy: Policy) {\n checkers.forEach((c) => c(file, policy));\n}\n","import axios, { AxiosRequestConfig } from \"axios\";\nimport { Response } from \"../types\";\nimport {\n HTTPError,\n RequestCanceledError,\n TransformResponseError,\n} from \"../errors\";\n\nexport const { CancelToken } = axios;\nexport { CancelTokenSource } from \"axios\";\n\nconst baseConfig = {\n transformResponse: [\n (response: any) =>\n window.baseConfig\n ? window.baseConfig(\n (response, e) => new TransformResponseError(response, e)\n )(response)\n : null,\n ],\n};\n\nconst cdBackendConfig = {\n ...baseConfig,\n baseURL: \"/api/v3\",\n withCredentials: true,\n};\n\nexport function request(url: string, config?: AxiosRequestConfig) {\n return axios.request({ ...baseConfig, ...config, url }).catch((err) => {\n if (axios.isCancel(err)) {\n throw new RequestCanceledError();\n }\n\n if (err instanceof TransformResponseError) {\n throw err;\n }\n\n throw new HTTPError(err, url);\n });\n}\n\nexport function requestAPI(url: string, config?: AxiosRequestConfig) {\n return request>(url, { ...cdBackendConfig, ...config });\n}\n","import API from \"../middleware/Api\";\n\nexport async function getDownloadURL(file: any): Promise {\n let reqURL = \"\";\n if (file.key) {\n const downloadPath =\n file.path === \"/\"\n ? file.path + file.name\n : file.path + \"/\" + file.name;\n reqURL =\n \"/share/download/\" +\n file.key +\n \"?path=\" +\n encodeURIComponent(downloadPath);\n } else {\n reqURL = \"/file/download/\" + file.id;\n }\n\n return API.put(reqURL);\n}\n","import React, { useCallback } from \"react\";\nimport { IconButton, makeStyles } from \"@material-ui/core\";\nimport DayIcon from \"@material-ui/icons/Brightness7\";\nimport NightIcon from \"@material-ui/icons/Brightness4\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Auth from \"../../middleware/Auth\";\nimport classNames from \"classnames\";\nimport { toggleDaylightMode } from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles(() => ({\n icon: {\n color: \"rgb(255, 255, 255)\",\n opacity: \"0.54\",\n },\n}));\n\nconst DarkModeSwitcher = ({ position }) => {\n const { t } = useTranslation();\n const ThemeType = useSelector(\n (state) => state.siteConfig.theme.palette.type\n );\n const dispatch = useDispatch();\n const ToggleThemeMode = useCallback(() => dispatch(toggleDaylightMode()), [\n dispatch,\n ]);\n const isDayLight = (ThemeType && ThemeType === \"light\") || !ThemeType;\n const isDark = ThemeType && ThemeType === \"dark\";\n const toggleMode = () => {\n Auth.SetPreference(\"theme_mode\", isDayLight ? \"dark\" : \"light\");\n ToggleThemeMode();\n };\n const classes = useStyles();\n return (\n \n \n {isDayLight && }\n {isDark && }\n \n \n );\n};\n\nexport default DarkModeSwitcher;\n","import React, { useCallback } from \"react\";\nimport {\n Avatar,\n CircularProgress,\n IconButton,\n ListItem,\n ListItemAvatar,\n ListItemText,\n makeStyles,\n} from \"@material-ui/core\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { Nas } from \"mdi-material-ui\";\nimport Popover from \"@material-ui/core/Popover\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Backup, Check } from \"@material-ui/icons\";\nimport { blue, green } from \"@material-ui/core/colors\";\nimport List from \"@material-ui/core/List\";\nimport { refreshFileList, toggleSnackbar } from \"../../redux/explorer\";\nimport Divider from \"@material-ui/core/Divider\";\nimport Box from \"@material-ui/core/Box\";\nimport Link from \"@material-ui/core/Link\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n uploadFromFile: {\n backgroundColor: blue[100],\n color: blue[600],\n },\n policySelected: {\n backgroundColor: green[100],\n color: green[800],\n },\n header: {\n padding: \"8px 16px\",\n fontSize: 14,\n },\n list: {\n minWidth: 300,\n maxHeight: 600,\n overflow: \"auto\",\n },\n}));\n\nconst PolicySwitcher = () => {\n const { t } = useTranslation();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [policies, setPolicies] = React.useState([]);\n const [loading, setLoading] = React.useState(null);\n const policy = useSelector((state) => state.explorer.currentPolicy);\n const path = useSelector((state) => state.navigator.path);\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const RefreshFileList = useCallback(() => dispatch(refreshFileList()), [\n dispatch,\n ]);\n const search = useSelector((state) => state.explorer.search);\n\n const handleClick = (event) => {\n if (policies.length === 0) {\n API.get(\"/user/setting/policies\", {})\n .then((response) => {\n setPolicies(response.data);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n }\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const switchTo = (id) => {\n if (id === policy.id) {\n handleClose();\n return;\n }\n setLoading(id);\n API.post(\"/webdav/mount\", {\n path: path,\n policy: id,\n })\n .then(() => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"vas.folderPolicySwitched\"),\n \"success\"\n );\n RefreshFileList();\n setLoading(null);\n handleClose();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n setLoading(null);\n handleClose();\n });\n };\n\n const open = Boolean(anchorEl);\n const id = open ? \"simple-popover\" : undefined;\n\n const classes = useStyles();\n return (\n <>\n {pathHelper.isHomePage(location.pathname) && !search && (\n \n \n \n \n \n )}\n \n
\n \n {t(\"vas.setPolicyForFolder\")}\n \n
\n\n \n \n {policies.map((value, index) => (\n switchTo(value.id)}\n >\n \n {value.id === loading && (\n \n )}\n {value.id !== loading && (\n <>\n {value.id === policy.id && (\n \n \n \n )}\n {value.id !== policy.id && (\n \n \n \n )}\n \n )}\n \n \n \n ))}\n \n \n
\n handleClose()}\n component={RouterLink}\n to={\"/connect?tab=1\"}\n color={\"secondary\"}\n >\n {t(\"vas.manageMount\")}\n \n
\n \n \n );\n};\n\nexport default PolicySwitcher;\n","import React, { useCallback, useState } from \"react\";\nimport { IconButton, makeStyles, Menu, MenuItem } from \"@material-ui/core\";\nimport ViewListIcon from \"@material-ui/icons/ViewList\";\nimport ViewSmallIcon from \"@material-ui/icons/ViewComfy\";\nimport ViewModuleIcon from \"@material-ui/icons/ViewModule\";\nimport TextTotateVerticalIcon from \"@material-ui/icons/TextRotateVertical\";\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport { Report as ReportIcon } from \"@material-ui/icons\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Auth from \"../../../middleware/Auth\";\nimport { changeSortMethod } from \"../../../redux/explorer/action\";\nimport {\n changeViewMethod,\n openResaveDialog,\n setShareUserPopover,\n} from \"../../../redux/explorer\";\nimport { FormatPageBreak } from \"mdi-material-ui\";\nimport pathHelper from \"../../../utils/page\";\nimport { changePageSize } from \"../../../redux/viewUpdate/action\";\nimport Report from \"../../Modals/Report\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n sideButton: {\n padding: \"8px\",\n marginRight: \"5px\",\n },\n}));\n\nconst sortOptions = [\n \"A-Z\",\n \"Z-A\",\n \"oldestUploaded\",\n \"newestUploaded\",\n \"oldestModified\",\n \"newestModified\",\n \"smallest\",\n \"largest\",\n];\n\nconst paginationOption = [\"50\", \"100\", \"200\", \"500\", \"1000\"];\n\nexport default function SubActions({ isSmall, inherit }) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"fileManager\" });\n const { t: vasT } = useTranslation(\"application\", { keyPrefix: \"vas\" });\n const dispatch = useDispatch();\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const share = useSelector((state) => state.viewUpdate.shareInfo);\n const pageSize = useSelector((state) => state.viewUpdate.pagination.size);\n const OpenLoadingDialog = useCallback(\n (method) => dispatch(changeViewMethod(method)),\n [dispatch]\n );\n const ChangeSortMethod = useCallback(\n (method) => dispatch(changeSortMethod(method)),\n [dispatch]\n );\n const OpenResaveDialog = useCallback(\n (key) => dispatch(openResaveDialog(key)),\n [dispatch]\n );\n const SetShareUserPopover = useCallback(\n (e) => dispatch(setShareUserPopover(e)),\n [dispatch]\n );\n const ChangePageSize = useCallback((e) => dispatch(changePageSize(e)), [\n dispatch,\n ]);\n const [anchorSort, setAnchorSort] = useState(null);\n const [anchorPagination, setAnchorPagination] = useState(null);\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [openReport, setOpenReport] = useState(false);\n const showSortOptions = (e) => {\n setAnchorSort(e.currentTarget);\n };\n const showPaginationOptions = (e) => {\n setAnchorPagination(e.currentTarget);\n };\n const handleMenuItemClick = (e, index) => {\n setSelectedIndex(index);\n const optionsTable = {\n 0: \"namePos\",\n 1: \"nameRev\",\n 2: \"timePos\",\n 3: \"timeRev\",\n 4: \"modifyTimePos\",\n 5: \"modifyTimeRev\",\n 6: \"sizePos\",\n 7: \"sizeRes\",\n };\n ChangeSortMethod(optionsTable[index]);\n setAnchorSort(null);\n };\n const handlePaginationChange = (s) => {\n ChangePageSize(s);\n setAnchorPagination(null);\n };\n\n const toggleViewMethod = () => {\n const newMethod =\n viewMethod === \"icon\"\n ? \"list\"\n : viewMethod === \"list\"\n ? \"smallIcon\"\n : \"icon\";\n Auth.SetPreference(\"view_method\", newMethod);\n OpenLoadingDialog(newMethod);\n };\n const isMobile = pathHelper.isMobile();\n\n const classes = useStyles();\n return (\n <>\n {viewMethod === \"icon\" && (\n \n \n \n )}\n {viewMethod === \"list\" && (\n \n \n \n )}\n\n {viewMethod === \"smallIcon\" && (\n \n \n \n )}\n\n {!isMobile && (\n \n \n \n )}\n setAnchorPagination(null)}\n >\n {paginationOption.map((option, index) => (\n handlePaginationChange(parseInt(option))}\n >\n {t(\"paginationOption\", { option })}\n \n ))}\n handlePaginationChange(-1)}\n >\n {t(\"noPagination\")}\n \n \n\n \n \n \n setAnchorSort(null)}\n >\n {sortOptions.map((option, index) => (\n handleMenuItemClick(event, index)}\n >\n {t(\"sortMethods.\" + option)}\n \n ))}\n \n {share && (\n <>\n OpenResaveDialog(share.key)}\n color={inherit ? \"inherit\" : \"default\"}\n >\n \n \n {!inherit && (\n <>\n setOpenReport(true)}\n >\n \n \n setOpenReport(false)}\n />\n \n )}\n \n )}\n {share && (\n SetShareUserPopover(e.currentTarget)}\n style={{ padding: 5 }}\n >\n \n \n )}\n \n );\n}\n","import React, { useCallback, useState } from \"react\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControl,\n makeStyles,\n TextField,\n} from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport { reportReasons } from \"../../config\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n widthAnimation: {},\n shareUrl: {\n minWidth: \"400px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n },\n flexCenter: {\n alignItems: \"center\",\n },\n noFlex: {\n display: \"block\",\n },\n scoreCalc: {\n marginTop: 10,\n },\n}));\n\nexport default function Report(props) {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const classes = useStyles();\n const [reason, setReason] = useState(\"0\");\n const [des, setDes] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const onClose = () => {\n props.onClose();\n setTimeout(() => {\n setDes(\"\");\n setReason(\"0\");\n }, 500);\n };\n\n const submitReport = () => {\n setLoading(true);\n API.post(\"/share/report/\" + props.share.key, {\n des: des,\n reason: parseInt(reason),\n })\n .then(() => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"vas.reportSuccessful\"),\n \"success\"\n );\n setLoading(false);\n onClose();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n setLoading(false);\n });\n };\n\n return (\n \n {t(\"vas.report\")}\n \n \n setReason(e.target.value)}\n >\n {reportReasons.map((v, k) => (\n }\n label={t(v)}\n />\n ))}\n \n \n setDes(e.target.value)}\n variant=\"filled\"\n rows={4}\n />\n \n\n \n \n \n {t(\"ok\", { ns: \"common\" })}\n \n \n \n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport {\n Button,\n Checkbox,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControl,\n makeStyles,\n TextField,\n} from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport List from \"@material-ui/core/List\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport TimerIcon from \"@material-ui/icons/Timer\";\nimport CasinoIcon from \"@material-ui/icons/Casino\";\nimport AccountBalanceWalletIcon from \"@material-ui/icons/AccountBalanceWallet\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\nimport Divider from \"@material-ui/core/Divider\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport Typography from \"@material-ui/core/Typography\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport { Visibility, VisibilityOff } from \"@material-ui/icons\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport ToggleIcon from \"material-ui-toggle-icon\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n widthAnimation: {},\n shareUrl: {\n minWidth: \"400px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n },\n flexCenter: {\n alignItems: \"center\",\n },\n noFlex: {\n display: \"block\",\n },\n scoreCalc: {\n marginTop: 10,\n },\n}));\n\nconst ExpansionPanel = withStyles({\n root: {\n border: \"0px solid rgba(0, 0, 0, .125)\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {\n margin: \"auto\",\n },\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n padding: 0,\n \"&$expanded\": {},\n },\n content: {\n margin: 0,\n display: \"initial\",\n \"&$expanded\": {\n margin: \"0 0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n padding: 24,\n backgroundColor: theme.palette.background.default,\n },\n}))(MuiExpansionPanelDetails);\n\nexport default function CreatShare(props) {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const classes = useStyles();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const scoreEnabled = useSelector((state) => state.siteConfig.score_enabled);\n const scoreRate = useSelector((state) => state.siteConfig.share_score_rate);\n const lastSubmit = useRef(null);\n\n const [expanded, setExpanded] = React.useState(false);\n const [shareURL, setShareURL] = React.useState(\"\");\n const [values, setValues] = React.useState({\n password: \"\",\n downloads: 1,\n expires: 24 * 3600,\n showPassword: false,\n score: 0,\n });\n const [shareOption, setShareOption] = React.useState({\n password: false,\n expire: false,\n score: false,\n preview: true,\n });\n\n const handleChange = (prop) => (event) => {\n // 输入密码\n if (prop === \"password\") {\n if (event.target.value === \"\") {\n setShareOption({ ...shareOption, password: false });\n } else {\n setShareOption({ ...shareOption, password: true });\n }\n }\n\n // 输入积分\n if (prop === \"score\") {\n if (event.target.value == \"0\") {\n setShareOption({ ...shareOption, score: false });\n } else {\n setShareOption({ ...shareOption, score: true });\n }\n }\n\n setValues({ ...values, [prop]: event.target.value });\n };\n\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n\n const randomPassword = () => {\n setShareOption({ ...shareOption, password: true });\n setValues({\n ...values,\n password: Math.random().toString(36).substr(2).slice(2, 8),\n showPassword: true,\n });\n };\n\n const handleExpand = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const handleCheck = (prop) => () => {\n if (!shareOption[prop]) {\n handleExpand(prop)(null, true);\n }\n if (prop === \"password\" && shareOption[prop]) {\n setValues({\n ...values,\n password: \"\",\n });\n }\n if (prop === \"score\" && shareOption[prop]) {\n setValues({\n ...values,\n score: 0,\n });\n }\n setShareOption({ ...shareOption, [prop]: !shareOption[prop] });\n };\n\n const onClose = () => {\n props.onClose();\n setTimeout(() => {\n setShareURL(\"\");\n }, 500);\n };\n\n const senLink = () => {\n if (navigator.share) {\n let text = t(\"modals.shareLinkShareContent\", {\n name: props.selected[0].name,\n link: shareURL,\n });\n if (lastSubmit.current && lastSubmit.current.password) {\n text += t(\"modals.shareLinkPasswordInfo\", {\n password: lastSubmit.current.password,\n });\n }\n navigator.share({ text });\n } else if (navigator.clipboard) {\n navigator.clipboard.writeText(shareURL);\n ToggleSnackbar(\"top\", \"right\", t(\"modals.linkCopied\"), \"info\");\n }\n };\n\n const submitShare = (e) => {\n e.preventDefault();\n props.setModalsLoading(true);\n const submitFormBody = {\n id: props.selected[0].id,\n is_dir: props.selected[0].type === \"dir\",\n password: values.password,\n downloads: shareOption.expire ? values.downloads : -1,\n expire: values.expires,\n score: parseInt(values.score),\n preview: shareOption.preview,\n };\n lastSubmit.current = submitFormBody;\n\n API.post(\"/share\", submitFormBody)\n .then((response) => {\n setShareURL(response.data);\n setValues({\n password: \"\",\n downloads: 1,\n expires: 24 * 3600,\n showPassword: false,\n score: 0,\n });\n setShareOption({\n password: false,\n expire: false,\n score: false,\n });\n props.setModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n props.setModalsLoading(false);\n });\n };\n\n const handleFocus = (event) => event.target.select();\n\n return (\n \n \n {t(\"modals.createShareLink\")}\n \n\n {shareURL === \"\" && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {t(\"modals.sharePassword\")}\n \n \n \n \n \n \n \n \n }\n offIcon={\n \n }\n />\n \n \n }\n labelWidth={70}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {[1, 2, 3, 4, 5, 20, 50, 100].map(\n (v) => (\n \n {t(\n \"modals.downloadLimitOptions\",\n { num: v }\n )}\n \n )\n )}\n \n \n {t(\"modals.or\")}\n \n \n \n {t(\"modals.5minutes\")}\n \n \n {t(\"modals.1hour\")}\n \n \n {t(\"modals.1day\")}\n \n \n {t(\"modals.7days\")}\n \n \n {t(\"modals.30days\")}\n \n \n \n \n {t(\"modals.downloadSuffix\")}\n \n \n \n {scoreEnabled && (\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n {t(\"vas.creditToBePaid\")}\n \n \n \n {values.score !== 0 && scoreRate !== \"100\" && (\n \n {t(\"vas.creditGainPredict\", {\n num: Math.ceil(\n (values.score * scoreRate) /\n 100\n ),\n })}\n \n )}\n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {t(\"modals.allowPreviewDescription\")}\n \n \n \n \n \n \n )}\n {shareURL !== \"\" && (\n \n \n \n )}\n\n \n {shareURL !== \"\" && (\n
\n \n
\n )}\n \n\n {shareURL === \"\" && (\n
\n \n {t(\"modals.createShareLink\")}\n {props.modalsLoading && (\n \n )}\n \n
\n )}\n
\n \n );\n}\n","import React from \"react\";\nimport { Dialog } from \"@material-ui/core\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Button from \"@material-ui/core/Button\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\nimport { useSelector } from \"react-redux\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function PurchaseShareDialog() {\n const { t } = useTranslation();\n const purchase = useSelector((state) => state.explorer.purchase);\n return (\n <>\n {purchase && (\n \n \n {t(\"vas.sharePurchaseTitle\", { score: purchase.score })}\n \n \n \n {t(\"vas.sharePurchaseDescription\")}\n \n \n \n \n purchase.callback()}\n color=\"primary\"\n autoFocus\n >\n {t(\"ok\", { ns: \"common\" })}\n \n \n \n )}\n \n );\n}\n","import React from \"react\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n List,\n ListItem,\n ListItemText,\n makeStyles,\n} from \"@material-ui/core\";\nimport { useSelector } from \"react-redux\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n minWidth: 250,\n },\n}));\n\nexport default function OptionSelector() {\n const { t } = useTranslation(\"common\");\n const classes = useStyles();\n const option = useSelector((state) => state.viewUpdate.modals.option);\n\n return (\n \n \n {option && option.title}\n \n \n \n {option &&\n option.options.map((o) => (\n option && option.callback(o)}\n button\n >\n \n \n ))}\n \n \n \n \n \n \n );\n}\n","export const sizeToString = (bytes) => {\n if (bytes === 0 || bytes === \"0\") return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return (bytes / Math.pow(k, i)).toFixed(1) + \" \" + sizes[i];\n};\n\nexport const fixUrlHash = (path) => {\n return path;\n};\n\nexport const setCookie = (name, value, days) => {\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n document.cookie = name + \"=\" + (value || \"\") + \"; path=/\";\n};\n\nexport const setGetParameter = (paramName, paramValue) => {\n let url = window.location.href;\n\n if (url.indexOf(paramName + \"=\") >= 0) {\n const prefix = url.substring(0, url.indexOf(paramName));\n let suffix = url.substring(url.indexOf(paramName));\n suffix = suffix.substring(suffix.indexOf(\"=\") + 1);\n suffix =\n suffix.indexOf(\"&\") >= 0\n ? suffix.substring(suffix.indexOf(\"&\"))\n : \"\";\n url = prefix + paramName + \"=\" + paramValue + suffix;\n } else {\n if (url.indexOf(\"?\") < 0) url += \"?\" + paramName + \"=\" + paramValue;\n else url += \"&\" + paramName + \"=\" + paramValue;\n }\n if (url === window.location.href) {\n return;\n }\n window.history.pushState(null, null, url);\n};\n\nexport const checkGetParameters = (field) => {\n const url = window.location.href;\n if (url.indexOf(\"?\" + field + \"=\") !== -1) return true;\n else if (url.indexOf(\"&\" + field + \"=\") !== -1) return true;\n return false;\n};\n\nexport const changeThemeColor = (color) => {\n const metaThemeColor = window.document.querySelector(\n \"meta[name=theme-color]\"\n );\n metaThemeColor.setAttribute(\"content\", color);\n};\n\nexport function bufferDecode(value) {\n return Uint8Array.from(atob(value), (c) => c.charCodeAt(0));\n}\n\n// ArrayBuffer to URLBase64\nexport function bufferEncode(value) {\n return btoa(String.fromCharCode.apply(null, new Uint8Array(value)))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=/g, \"\");\n}\n\nexport function pathBack(path) {\n const folders =\n path !== null\n ? path.substr(1).split(\"/\")\n : this.props.path.substr(1).split(\"/\");\n return \"/\" + folders.slice(0, folders.length - 1).join(\"/\");\n}\n\nexport function filePath(file) {\n return file.path === \"/\"\n ? file.path + file.name\n : file.path + \"/\" + file.name;\n}\n\nexport function hex2bin(hex) {\n return parseInt(hex, 16).toString(2).padStart(8, \"0\");\n}\n\nexport function pathJoin(parts, sep) {\n const separator = sep || \"/\";\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(\"^\" + separator), \"\");\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(separator + \"$\"), \"\");\n }\n return part;\n });\n return parts.join(separator);\n}\n\nexport function basename(path) {\n if (!path) {\n return \"\";\n }\n const pathList = path.split(\"/\");\n pathList.pop();\n return pathList.join(\"/\") === \"\" ? \"/\" : pathList.join(\"/\");\n}\n\nexport function filename(path) {\n const pathList = path.split(\"/\");\n return pathList.pop();\n}\n\nexport function fileNameNoExt(filename) {\n return filename.substring(0, filename.lastIndexOf(\".\")) || filename;\n}\n\nexport function randomStr(length) {\n let result = \"\";\n const characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(\n Math.floor(Math.random() * charactersLength)\n );\n }\n return result;\n}\n\nexport function getNumber(base, conditions) {\n conditions.forEach((v) => {\n if (v) {\n base++;\n }\n });\n return base;\n}\n\nexport const isMac = () => {\n return navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0;\n};\n\nexport const isMobileSafari = () => {\n const ua = window.navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n const webkit = !!ua.match(/WebKit/i);\n return iOS && webkit && !ua.match(/CriOS/i);\n};\n\nexport function vhCheck() {\n const vh = window.innerHeight;\n document.documentElement.style.setProperty(\"--vh\", `${vh}px`);\n}\n\nexport const getSelectItemStyles = (name, personName, theme) => {\n return {\n fontWeight:\n personName.indexOf(name) === -1\n ? theme.typography.fontWeightRegular\n : theme.typography.fontWeightMedium,\n };\n};\n\nexport const removeI18nCache = () => {\n Object.keys(localStorage).forEach(function (key) {\n if (key && key.startsWith(\"i18next_res_\")) {\n localStorage.removeItem(key);\n }\n });\n};\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport AutoHidden from \"./AutoHidden\";\nimport statusHelper from \"../../utils/page\";\nimport Fab from \"@material-ui/core/Fab\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport clsx from \"clsx\";\n\nconst useStyles = makeStyles((theme) => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n badge: {\n position: \"absolute\",\n bottom: 26,\n top: \"auto\",\n zIndex: 9999,\n right: 7,\n },\n fabProgress: {\n color: green[500],\n position: \"absolute\",\n top: -6,\n left: -6,\n zIndex: 1,\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonSuccess: {\n backgroundColor: green[500],\n \"&:hover\": {\n backgroundColor: green[700],\n },\n },\n}));\n\nexport default function SaveButton(props) {\n const classes = useStyles();\n const buttonClassname = clsx({\n [classes.buttonSuccess]: props.status === \"success\",\n });\n\n return (\n \n
\n
\n \n \n {props.status === \"success\" ? (\n \n ) : (\n \n )}\n \n \n {props.status === \"loading\" && (\n \n )}\n
\n
\n
\n );\n}\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\nimport { blue } from \"@material-ui/core/colors\";\nimport { useSelector } from \"react-redux\";\n\nconst useStyles = makeStyles({\n avatar: {\n backgroundColor: blue[100],\n color: blue[600],\n },\n loadingContainer: {\n display: \"flex\",\n },\n loading: {\n marginTop: 10,\n marginLeft: 20,\n },\n});\n\nexport default function LoadingDialog() {\n const classes = useStyles();\n const open = useSelector((state) => state.viewUpdate.modals.loading);\n const text = useSelector((state) => state.viewUpdate.modals.loadingText);\n\n return (\n \n \n \n \n
{text}
\n
\n
\n
\n );\n}\n","import React, { useCallback, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n makeStyles,\n} from \"@material-ui/core\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport {\n refreshFileList,\n setModalsLoading,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function CopyDialog(props) {\n const { t } = useTranslation();\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n const RefreshFileList = useCallback(() => {\n dispatch(refreshFileList());\n }, [dispatch]);\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n\n if (props.selected[0].type === \"dir\") {\n dirs.push(props.selected[0].id);\n } else {\n items.push(props.selected[0].id);\n }\n\n API.post(\"/object/copy\", {\n src_dir: props.selected[0].path,\n src: {\n dirs: dirs,\n items: items,\n },\n dst: selectedPath === \"//\" ? \"/\" : selectedPath,\n })\n .then(() => {\n props.onClose();\n RefreshFileList();\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n \n {t(\"fileManager.copyTo\")}\n \n \n\n {selectedPath !== \"\" && (\n \n \n ]}\n />\n \n \n )}\n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n makeStyles,\n FormControlLabel,\n Checkbox,\n} from \"@material-ui/core\";\nimport TextField from \"@material-ui/core/TextField\";\nimport { useTranslation } from \"react-i18next\";\nimport { useInterval, usePrevious, useGetState } from \"ahooks\";\nimport { cancelDirectoryDownload } from \"../../redux/explorer/action\";\nimport Auth from \"../../middleware/Auth\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n backgroundColor: theme.palette.background.default,\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function DirectoryDownloadDialog(props) {\n const { t } = useTranslation();\n\n const classes = useStyles();\n\n const logRef = useRef();\n const [autoScroll, setAutoScroll] = useState(\n Auth.GetPreferenceWithDefault(\"autoScroll\", true)\n );\n const previousLog = usePrevious(props.log, (prev, next) => true);\n const [timer, setTimer] = useState(-1);\n\n useInterval(() => {\n if (autoScroll && logRef.current && previousLog !== props.log) {\n logRef.current.scrollIntoView({ behavior: \"smooth\", block: \"end\" });\n }\n }, timer);\n\n useEffect(() => {\n if (props.done) {\n setTimer(-1);\n } else if (props.open) {\n setTimer(1000);\n }\n }, [props.done, props.open]);\n\n return (\n \n \n {t(\"modals.directoryDownloadTitle\")}\n \n\n \n \n \n \n }\n checked={autoScroll}\n onChange={() =>\n setAutoScroll((previous) => {\n Auth.SetPreference(\"autoScroll\", !previous);\n return !previous;\n })\n }\n label={t(\"modals.directoryDownloadAutoscroll\")}\n />\n \n {t(\"cancel\", { ns: \"common\" })}\n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {!props.done && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n makeStyles,\n} from \"@material-ui/core\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\nimport { submitDecompressTask } from \"../../redux/explorer/action\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function DecompressDialog(props) {\n const { t } = useTranslation();\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n const SubmitDecompressTask = useCallback(\n (path) => dispatch(submitDecompressTask(path)),\n [dispatch]\n );\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n SubmitDecompressTask(selectedPath)\n .then(() => {\n props.onClose();\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"modals.taskCreated\"),\n \"success\"\n );\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n \n {t(\"modals.decompressTo\")}\n \n \n\n {selectedPath !== \"\" && (\n \n \n ]}\n />\n \n \n )}\n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n makeStyles,\n} from \"@material-ui/core\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport TextField from \"@material-ui/core/TextField\";\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\nimport { submitCompressTask } from \"../../redux/explorer/action\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n backgroundColor: theme.palette.background.default,\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function CompressDialog(props) {\n const { t } = useTranslation();\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [fileName, setFileName] = useState(\"\");\n // eslint-disable-next-line\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n\n const SubmitCompressTask = useCallback(\n (name, path) => dispatch(submitCompressTask(name, path)),\n [dispatch]\n );\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n\n SubmitCompressTask(fileName, selectedPath)\n .then(() => {\n props.onClose();\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"modals.taskCreated\"),\n \"success\"\n );\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n \n {t(\"modals.saveToTitle\")}\n \n \n\n {selectedPath !== \"\" && (\n \n \n setFileName(e.target.value)}\n value={fileName}\n fullWidth\n autoFocus\n id=\"standard-basic\"\n label={t(\"modals.zipFileName\")}\n />\n \n \n )}\n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n makeStyles,\n} from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n input: {\n width: 250,\n },\n}));\n\nexport default function RelocateDialog(props) {\n const { t } = useTranslation();\n const [selectedPolicy, setSelectedPolicy] = useState(\"\");\n const [policies, setPolicies] = useState([]);\n const dispatch = useDispatch();\n const policy = useSelector((state) => state.explorer.currentPolicy);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n\n const submitRelocate = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n\n API.post(\"/file/relocate\", {\n src: {\n dirs: dirs,\n items: items,\n },\n dst_policy_id: selectedPolicy,\n })\n .then(() => {\n props.onClose();\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"modals.taskCreated\"),\n \"success\"\n );\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n useEffect(() => {\n if (props.open) {\n API.get(\"/user/setting/policies\")\n .then((response) => {\n setPolicies(response.data);\n setSelectedPolicy(policy.id);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n }\n\n // eslint-disable-next-line\n }, [props.open]);\n\n const classes = useStyles();\n\n return (\n \n \n {t(\"vas.migrateStoragePolicy\")}\n \n\n \n setSelectedPolicy(e.target.value)}\n >\n {policies.map((v, k) => (\n \n {v.name}\n \n ))}\n \n \n\n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n makeStyles,\n MenuItem,\n TextField,\n} from \"@material-ui/core\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API, { AppError } from \"../../middleware/Api\";\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { DnsOutlined, FolderOpenOutlined } from \"@material-ui/icons\";\nimport { pathBack } from \"../../utils\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport LinkIcon from \"@material-ui/icons/Link\";\nimport Auth from \"../../middleware/Auth\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Select from \"@material-ui/core/Select\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n formGroup: {\n display: \"flex\",\n marginBottom: theme.spacing(3),\n },\n forumInput: {\n flexGrow: 1,\n },\n}));\n\nexport default function RemoteDownload(props) {\n const { t } = useTranslation();\n const [selectPathOpen, setSelectPathOpen] = useState(false);\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n const [downloadTo, setDownloadTo] = useState(\"\");\n const [url, setUrl] = useState(\"\");\n const [nodes, setNodes] = useState([]);\n const [nodesLoading, setNodesLoading] = useState(false);\n const [preferredNode, setPreferredNode] = useState(0);\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const user = Auth.GetUser();\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n if (props.open) {\n setDownloadTo(props.presentPath);\n\n if (user.group.selectNode && nodes.length === 0) {\n setNodesLoading(true);\n API.get(\"/user/setting/nodes\")\n .then((response) => {\n setNodes(response.data);\n setNodesLoading(false);\n })\n .catch(() => {\n setNodes([]);\n setNodesLoading(false);\n });\n }\n }\n }, [props.open]);\n\n const setDownloadToPath = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const selectPath = () => {\n setDownloadTo(selectedPath === \"//\" ? \"/\" : selectedPath);\n setSelectPathOpen(false);\n };\n\n const submitTorrentDownload = (e) => {\n e.preventDefault();\n props.setModalsLoading(true);\n API.post(\"/aria2/torrent/\" + props.torrent.id, {\n dst: downloadTo === \"//\" ? \"/\" : downloadTo,\n preferred_node: preferredNode,\n })\n .then(() => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"modals.taskCreated\"),\n \"success\"\n );\n props.onClose();\n props.setModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n props.setModalsLoading(false);\n });\n };\n\n const submitDownload = (e) => {\n e.preventDefault();\n props.setModalsLoading(true);\n API.post(\"/aria2/url\", {\n url: url.split(\"\\n\"),\n dst: downloadTo === \"//\" ? \"/\" : downloadTo,\n preferred_node: preferredNode,\n })\n .then((response) => {\n const failed = response.data\n .filter((r) => r.code !== 0)\n .map((r) => new AppError(r.msg, r.code, r.error).message);\n if (failed.length > 0) {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"modals.taskCreateFailed\", {\n failed: failed.length,\n details: failed.join(\",\"),\n }),\n \"warning\"\n );\n } else {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"modals.taskCreated\"),\n \"success\"\n );\n }\n\n props.onClose();\n props.setModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n props.setModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n <>\n \n \n {t(\"modals.newRemoteDownloadTitle\")}\n \n \n \n
\n
\n setUrl(e.target.value)}\n placeholder={t(\n \"modals.remoteDownloadURLDescription\"\n )}\n InputProps={{\n startAdornment: !isMobile && (\n \n \n \n ),\n }}\n />\n
\n
\n
\n
\n \n setDownloadTo(e.target.value)\n }\n className={classes.input}\n label={t(\"modals.remoteDownloadDst\")}\n InputProps={{\n startAdornment: !isMobile && (\n \n \n \n ),\n endAdornment: (\n \n \n setSelectPathOpen(true)\n }\n >\n {t(\n \"navbar.addTagDialog.selectFolder\"\n )}\n \n \n ),\n }}\n />\n
\n
\n
\n {user.group.selectNode && (\n
\n
\n \n \n {t(\"modals.remoteDownloadNode\")}\n \n \n {nodesLoading ? (\n \n ) : (\n \n )}\n \n )\n }\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n label={t(\n \"modals.remoteDownloadNode\"\n )}\n value={preferredNode}\n onChange={(e) =>\n setPreferredNode(e.target.value)\n }\n >\n \n \n {t(\n \"modals.remoteDownloadNodeAuto\"\n )}\n \n \n {nodes.map((node) => (\n \n {node.name}\n \n ))}\n \n \n
\n
\n
\n )}\n
\n
\n \n \n
\n \n {t(\"modals.createTask\")}\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n setSelectPathOpen(false)}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {t(\"modals.remoteDownloadDst\")}\n \n \n\n {selectedPathName !== \"\" && (\n \n \n ]}\n />\n \n \n )}\n \n \n \n {t(\"ok\", { ns: \"common\" })}\n \n \n \n \n );\n}\n","import React, { useCallback, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n FormControl,\n makeStyles,\n Tooltip,\n} from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport Auth from \"../../middleware/Auth\";\nimport API from \"../../middleware/Api\";\nimport FormLabel from \"@material-ui/core/FormLabel\";\nimport FormGroup from \"@material-ui/core/FormGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\n\nconst useStyles = makeStyles((theme) => ({\n form: {\n marginTop: theme.spacing(2),\n },\n}));\n\nexport default function Delete(props) {\n const { t } = useTranslation();\n const theme = useTheme();\n const user = Auth.GetUser();\n const [force, setForce] = useState(false);\n const [unlink, setUnlink] = useState(false);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const submitRemove = (e) => {\n e.preventDefault();\n props.setModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n API.delete(\"/object\", {\n data: {\n items: items,\n dirs: dirs,\n force,\n unlink,\n },\n })\n .then((response) => {\n if (response.rawData.code === 0) {\n props.onClose();\n setTimeout(props.refreshFileList, 500);\n } else {\n ToggleSnackbar(\n \"top\",\n \"right\",\n response.rawData.msg,\n \"warning\"\n );\n }\n props.setModalsLoading(false);\n props.refreshStorage();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n props.setModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n \n {t(\"modals.deleteTitle\")}\n \n\n \n \n {props.selected.length === 1 && (\n ]}\n />\n )}\n {props.selected.length > 1 &&\n t(\"modals.deleteMultipleDescription\", {\n num: props.selected.length,\n })}\n \n {user.group.advanceDelete && (\n \n \n {t(\"modals.advanceOptions\")}\n \n \n \n \n setForce(e.target.checked)\n }\n />\n }\n label={t(\"modals.forceDelete\")}\n />\n \n \n \n setUnlink(e.target.checked)\n }\n />\n }\n label={t(\"modals.unlinkOnly\")}\n />\n \n \n \n )}\n \n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport PathSelector from \"./PathSelector\";\nimport API from \"../../middleware/Api\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n TextField,\n withStyles,\n} from \"@material-ui/core\";\nimport Loading from \"../Modals/Loading\";\nimport CopyDialog from \"../Modals/Copy\";\nimport DirectoryDownloadDialog from \"../Modals/DirectoryDownload\";\nimport CreatShare from \"../Modals/CreateShare\";\nimport { withRouter } from \"react-router-dom\";\nimport PurchaseShareDialog from \"../Modals/PurchaseShare\";\nimport DecompressDialog from \"../Modals/Decompress\";\nimport CompressDialog from \"../Modals/Compress\";\nimport RelocateDialog from \"../Modals/Relocate\";\nimport {\n closeAllModals,\n openLoadingDialog,\n refreshFileList,\n refreshStorage,\n setModalsLoading,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport OptionSelector from \"../Modals/OptionSelector\";\nimport { Trans, withTranslation } from \"react-i18next\";\nimport RemoteDownload from \"../Modals/RemoteDownload\";\nimport Delete from \"../Modals/Delete\";\n\nconst styles = (theme) => ({\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n selected: state.explorer.selected,\n modalsStatus: state.viewUpdate.modals,\n modalsLoading: state.viewUpdate.modalsLoading,\n dirList: state.explorer.dirList,\n fileList: state.explorer.fileList,\n dndSignale: state.explorer.dndSignal,\n dndTarget: state.explorer.dndTarget,\n dndSource: state.explorer.dndSource,\n loading: state.viewUpdate.modals.loading,\n loadingText: state.viewUpdate.modals.loadingText,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n closeAllModals: () => {\n dispatch(closeAllModals());\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n setModalsLoading: (status) => {\n dispatch(setModalsLoading(status));\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n refreshStorage: () => {\n dispatch(refreshStorage());\n },\n openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n };\n};\n\nclass ModalsCompoment extends Component {\n state = {\n newFolderName: \"\",\n newFileName: \"\",\n newName: \"\",\n selectedPath: \"\",\n selectedPathName: \"\",\n secretShare: false,\n sharePwd: \"\",\n shareUrl: \"\",\n purchaseCallback: null,\n };\n\n handleInputChange = (e) => {\n this.setState({\n [e.target.id]: e.target.value,\n });\n };\n\n newNameSuffix = \"\";\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (this.props.dndSignale !== nextProps.dndSignale) {\n this.dragMove(nextProps.dndSource, nextProps.dndTarget);\n return;\n }\n\n if (this.props.modalsStatus.rename !== nextProps.modalsStatus.rename) {\n const name = nextProps.selected[0].name;\n this.setState({\n newName: name,\n });\n return;\n }\n };\n\n submitResave = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n API.post(\"/share/save/\" + window.shareKey, {\n path:\n this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.onClose();\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"vas.fileSaved\"),\n \"success\"\n );\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n this.props.setModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n this.props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n API.patch(\"/object\", {\n action: \"move\",\n src_dir: this.props.selected[0].path,\n src: {\n dirs: dirs,\n items: items,\n },\n dst: this.DragSelectedPath\n ? this.DragSelectedPath\n : this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n this.DragSelectedPath = \"\";\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n this.DragSelectedPath = \"\";\n })\n .then(() => {\n this.props.closeAllModals();\n });\n };\n\n dragMove = (source, target) => {\n if (this.props.selected.length === 0) {\n this.props.selected[0] = source;\n }\n let doMove = true;\n\n // eslint-disable-next-line\n this.props.selected.map((value) => {\n // 根据ID过滤\n if (value.id === target.id && value.type === target.type) {\n doMove = false;\n // eslint-disable-next-line\n return;\n }\n // 根据路径过滤\n if (\n value.path ===\n target.path + (target.path === \"/\" ? \"\" : \"/\") + target.name\n ) {\n doMove = false;\n }\n });\n if (doMove) {\n this.DragSelectedPath =\n target.path === \"/\"\n ? target.path + target.name\n : target.path + \"/\" + target.name;\n this.props.openLoadingDialog(this.props.t(\"modals.processing\"));\n this.submitMove();\n }\n };\n\n submitRename = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n const newName = this.state.newName;\n\n const src = {\n dirs: [],\n items: [],\n };\n\n if (this.props.selected[0].type === \"dir\") {\n src.dirs[0] = this.props.selected[0].id;\n } else {\n src.items[0] = this.props.selected[0].id;\n }\n\n // 检查重名\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === newName;\n }) !== -1 ||\n this.props.fileList.findIndex((value) => {\n return value.name === newName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"modals.duplicatedObjectName\"),\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.post(\"/object/rename\", {\n action: \"rename\",\n src: src,\n new_name: newName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n }\n };\n\n submitCreateNewFolder = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === this.state.newFolderName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"modals.duplicatedFolderName\"),\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.put(\"/directory\", {\n path:\n (this.props.path === \"/\" ? \"\" : this.props.path) +\n \"/\" +\n this.state.newFolderName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.setModalsLoading(false);\n\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n //this.props.toggleSnackbar();\n };\n\n submitCreateNewFile = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === this.state.newFileName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"modals.duplicatedFolderName\"),\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.post(\"/file/create\", {\n path:\n (this.props.path === \"/\" ? \"\" : this.props.path) +\n \"/\" +\n this.state.newFileName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.setModalsLoading(false);\n\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n //this.props.toggleSnackbar();\n };\n\n setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n this.setState({\n selectedPath: path,\n selectedPathName: folder.name,\n });\n };\n\n onClose = () => {\n this.setState({\n newFolderName: \"\",\n newFileName: \"\",\n newName: \"\",\n selectedPath: \"\",\n selectedPathName: \"\",\n secretShare: false,\n sharePwd: \"\",\n shareUrl: \"\",\n });\n this.newNameSuffix = \"\";\n this.props.closeAllModals();\n };\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.checked });\n };\n\n copySource = () => {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(this.props.modalsStatus.getSource);\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"modals.linkCopied\"),\n \"info\"\n );\n }\n };\n\n render() {\n const { classes, t } = this.props;\n\n return (\n
\n \n \n \n \n \n {t(\"modals.getSourceLinkTitle\")}\n \n\n \n \n \n \n \n \n \n \n \n \n {t(\"fileManager.newFolder\")}\n \n\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n {t(\"modals.create\")}\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n \n {t(\"fileManager.newFile\")}\n \n\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n {t(\"modals.create\")}\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n \n {t(\"fileManager.rename\")}\n \n \n \n ]}\n />\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n\n \n \n {t(\"modals.moveToTitle\")}\n \n \n\n {this.state.selectedPath !== \"\" && (\n \n \n ]}\n />\n \n \n )}\n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n \n {t(\"modals.saveToTitle\")}\n \n \n\n {this.state.selectedPath !== \"\" && (\n \n \n ]}\n />\n \n \n )}\n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n \n \n \n \n \n \n
\n );\n }\n}\n\nModalsCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst Modals = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(ModalsCompoment))));\n\nexport default Modals;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Paper } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport Editor from \"for-editor\";\nimport SaveButton from \"../Dial/Save\";\nimport pathHelper from \"../../utils/page\";\nimport TextLoading from \"../Placeholder/TextLoading\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n marginLeft: theme.spacing(12),\n marginRight: theme.spacing(12),\n },\n marginBottom: 50,\n },\n player: {\n borderRadius: theme.shape.borderRadius,\n },\n root: {\n backgroundColor: \"white\",\n borderRadius: theme.shape.borderRadius,\n },\n \"@global\": {\n \".for-toolbar\": {\n overflowX: \"auto!important\",\n },\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function TextViewer() {\n const { t } = useTranslation();\n const [content, setContent] = useState(\"\");\n const [status, setStatus] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const math = useRouteMatch();\n const $vm = React.createRef();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n UseFileSubTitle(query, math, location);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n let requestURL = \"/file/content/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/content/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n\n setLoading(true);\n API.get(requestURL, { responseType: \"arraybuffer\" })\n .then((response) => {\n const buffer = new Buffer(response.rawData, \"binary\");\n const textdata = buffer.toString(); // for string\n setContent(textdata);\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"fileManager.errorReadFileContent\", {\n msg: error.message,\n }),\n \"error\"\n );\n })\n .then(() => {\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [math.params[0]]);\n\n const toBase64 = (file) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n\n const save = () => {\n setStatus(\"loading\");\n API.put(\"/file/update/\" + query.get(\"id\"), content)\n .then(() => {\n setStatus(\"success\");\n setTimeout(() => setStatus(\"\"), 2000);\n })\n .catch((error) => {\n setStatus(\"\");\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const addImg = async ($file) => {\n $vm.current.$img2Url($file.name, await toBase64($file));\n console.log($file);\n };\n\n const classes = useStyles();\n return (\n
\n \n {loading && }\n {!loading && (\n save()}\n addImg={($file) => addImg($file)}\n onChange={(value) => setContent(value)}\n toolbar={{\n h1: true, // h1\n h2: true, // h2\n h3: true, // h3\n h4: true, // h4\n img: true, // 图片\n link: true, // 链接\n code: true, // 代码块\n preview: true, // 预览\n expand: true, // 全屏\n /* v0.0.9 */\n undo: true, // 撤销\n redo: true, // 重做\n save: false, // 保存\n /* v0.2.3 */\n subfield: true, // 单双栏模式\n }}\n />\n )}\n \n {!pathHelper.isSharePage(location.pathname) && (\n \n )}\n
\n );\n}\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\nimport { Paper, useTheme } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport pathHelper from \"../../utils/page\";\nimport SaveButton from \"../Dial/Save\";\nimport { codePreviewSuffix } from \"../../config\";\nimport TextLoading from \"../Placeholder/TextLoading\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Select from \"@material-ui/core/Select\";\nimport Switch from \"@material-ui/core/Switch\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\nimport { useTranslation } from \"react-i18next\";\n\nconst MonacoEditor = React.lazy(() =>\n import(/* webpackChunkName: \"codeEditor\" */ \"react-monaco-editor\")\n);\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 40,\n },\n editor: {\n borderRadius: theme.shape.borderRadius,\n },\n \"@global\": {\n \".overflow-guard\": {\n borderRadius: \"0 0 12px 12px!important\",\n },\n },\n formControl: {\n margin: \"8px 16px 8px 16px\",\n },\n toobar: {\n textAlign: \"right\",\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function CodeViewer() {\n const { t } = useTranslation();\n const [content, setContent] = useState(\"\");\n const [status, setStatus] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [suffix, setSuffix] = useState(\"javascript\");\n const [wordWrap, setWordWrap] = useState(\"off\");\n\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n const theme = useTheme();\n const { title } = UseFileSubTitle(query, math, location);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n const extension = title.split(\".\");\n setSuffix(codePreviewSuffix[extension.pop()]);\n // eslint-disable-next-line\n }, [title]);\n\n useEffect(() => {\n let requestURL = \"/file/content/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/content/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n\n setLoading(true);\n API.get(requestURL, { responseType: \"arraybuffer\" })\n .then((response) => {\n const buffer = new Buffer(response.rawData, \"binary\");\n const textdata = buffer.toString(); // for string\n setContent(textdata);\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"fileManager.errorReadFileContent\", {\n msg: error.message,\n }),\n \"error\"\n );\n })\n .then(() => {\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [math.params[0]]);\n\n const save = () => {\n setStatus(\"loading\");\n API.put(\"/file/update/\" + query.get(\"id\"), content)\n .then(() => {\n setStatus(\"success\");\n setTimeout(() => setStatus(\"\"), 2000);\n })\n .catch((error) => {\n setStatus(\"\");\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const classes = useStyles();\n const isSharePage = pathHelper.isSharePage(location.pathname);\n return (\n
\n \n
\n \n \n setWordWrap(\n e.target.checked ? \"on\" : \"off\"\n )\n }\n />\n }\n label={t(\"fileManager.wordWrap\")}\n />\n \n \n setSuffix(e.target.value)}\n >\n {Array.from(\n new Set(\n Object.keys(codePreviewSuffix).map((k) => {\n return codePreviewSuffix[k];\n })\n )\n ).map((extension) => (\n // eslint-disable-next-line react/jsx-key\n \n {extension}\n \n ))}\n \n \n
\n \n {loading && }\n {!loading && (\n }>\n setContent(value)}\n />\n \n )}\n
\n {!isSharePage && }\n
\n );\n}\n","import {\n OneDriveError,\n Policy,\n QiniuError,\n Response,\n UpyunError,\n} from \"../types\";\nimport { sizeToString } from \"../utils\";\nimport i18next from \"../../../../i18n\";\nimport { AppError } from \"../../../../middleware/Api\";\n\nexport enum UploaderErrorName {\n InvalidFile = \"InvalidFile\",\n NoPolicySelected = \"NoPolicySelected\",\n UnknownPolicyType = \"UnknownPolicyType\",\n FailedCreateUploadSession = \"FailedCreateUploadSession\",\n FailedDeleteUploadSession = \"FailedDeleteUploadSession\",\n HTTPRequestFailed = \"HTTPRequestFailed\",\n LocalChunkUploadFailed = \"LocalChunkUploadFailed\",\n SlaveChunkUploadFailed = \"SlaveChunkUploadFailed\",\n WriteCtxFailed = \"WriteCtxFailed\",\n RemoveCtxFailed = \"RemoveCtxFailed\",\n ReadCtxFailed = \"ReadCtxFailed\",\n InvalidCtxData = \"InvalidCtxData\",\n CtxExpired = \"CtxExpired\",\n RequestCanceled = \"RequestCanceled\",\n ProcessingTaskDuplicated = \"ProcessingTaskDuplicated\",\n OneDriveChunkUploadFailed = \"OneDriveChunkUploadFailed\",\n OneDriveEmptyFile = \"OneDriveEmptyFile\",\n FailedFinishOneDriveUpload = \"FailedFinishOneDriveUpload\",\n S3LikeChunkUploadFailed = \"S3LikeChunkUploadFailed\",\n S3LikeUploadCallbackFailed = \"S3LikeUploadCallbackFailed\",\n COSUploadCallbackFailed = \"COSUploadCallbackFailed\",\n COSPostUploadFailed = \"COSPostUploadFailed\",\n UpyunPostUploadFailed = \"UpyunPostUploadFailed\",\n QiniuChunkUploadFailed = \"QiniuChunkUploadFailed\",\n FailedFinishOSSUpload = \"FailedFinishOSSUpload\",\n FailedFinishQiniuUpload = \"FailedFinishQiniuUpload\",\n FailedTransformResponse = \"FailedTransformResponse\",\n}\n\nconst RETRY_ERROR_LIST = [\n UploaderErrorName.FailedCreateUploadSession,\n UploaderErrorName.HTTPRequestFailed,\n UploaderErrorName.LocalChunkUploadFailed,\n UploaderErrorName.SlaveChunkUploadFailed,\n UploaderErrorName.RequestCanceled,\n UploaderErrorName.ProcessingTaskDuplicated,\n UploaderErrorName.FailedTransformResponse,\n];\n\nconst RETRY_CODE_LIST = [-1];\n\nexport class UploaderError implements Error {\n public stack: string | undefined;\n constructor(public name: UploaderErrorName, public message: string) {\n this.stack = new Error().stack;\n }\n\n public Message(): string {\n return this.message;\n }\n\n public Retryable(): boolean {\n return RETRY_ERROR_LIST.includes(this.name);\n }\n}\n\n// 文件未通过存储策略验证\nexport class FileValidateError extends UploaderError {\n // 未通过验证的文件属性\n public field: \"size\" | \"suffix\";\n\n // 对应的存储策略\n public policy: Policy;\n\n constructor(message: string, field: \"size\" | \"suffix\", policy: Policy) {\n super(UploaderErrorName.InvalidFile, message);\n this.field = field;\n this.policy = policy;\n }\n\n public Message(): string {\n if (this.field == \"size\") {\n return i18next.t(`uploader.sizeExceedLimitError`, {\n max: sizeToString(this.policy.maxSize),\n });\n }\n\n return i18next.t(`uploader.suffixNotAllowedError`, {\n supported: this.policy.allowedSuffix\n ? this.policy.allowedSuffix.join(\",\")\n : \"*\",\n });\n }\n}\n\n// 未知存储策略\nexport class UnknownPolicyError extends UploaderError {\n // 对应的存储策略\n public policy: Policy;\n\n constructor(message: string, policy: Policy) {\n super(UploaderErrorName.UnknownPolicyType, message);\n this.policy = policy;\n }\n}\n\n// 后端 API 出错\nexport class APIError extends UploaderError {\n private appError: AppError;\n constructor(\n name: UploaderErrorName,\n message: string,\n protected response: Response\n ) {\n super(name, message);\n this.appError = new AppError(response.msg, response.code, response.msg);\n }\n\n public Message(): string {\n return `${this.message}: ${this.appError.message}`;\n }\n\n public Retryable(): boolean {\n return (\n super.Retryable() && RETRY_CODE_LIST.includes(this.response.code)\n );\n }\n}\n\n// 无法创建上传会话\nexport class CreateUploadSessionError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.FailedCreateUploadSession, \"\", response);\n }\n\n public Message(): string {\n this.message = i18next.t(`uploader.createUploadSessionError`);\n return super.Message();\n }\n}\n\n// 无法删除上传会话\nexport class DeleteUploadSessionError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.FailedDeleteUploadSession, \"\", response);\n }\n\n public Message(): string {\n this.message = i18next.t(`uploader.deleteUploadSessionError`);\n return super.Message();\n }\n}\n\n// HTTP 请求出错\nexport class HTTPError extends UploaderError {\n public response?: any;\n constructor(public axiosErr: any, protected url: string) {\n super(UploaderErrorName.HTTPRequestFailed, axiosErr.message);\n this.response = axiosErr.response;\n }\n\n public Message(): string {\n return i18next.t(`uploader.requestError`, {\n msg: this.axiosErr,\n url: this.url,\n });\n }\n}\n\n// 本地分块上传失败\nexport class LocalChunkUploadError extends APIError {\n constructor(response: Response, protected chunkIndex: number) {\n super(UploaderErrorName.LocalChunkUploadFailed, \"\", response);\n }\n\n public Message(): string {\n this.message = i18next.t(`uploader.chunkUploadError`, {\n index: this.chunkIndex,\n });\n return super.Message();\n }\n}\n\n// 无法创建上传会话\nexport class RequestCanceledError extends UploaderError {\n constructor() {\n super(UploaderErrorName.RequestCanceled, \"Request canceled\");\n }\n}\n\n// 从机分块上传失败\nexport class SlaveChunkUploadError extends APIError {\n constructor(response: Response, protected chunkIndex: number) {\n super(UploaderErrorName.SlaveChunkUploadFailed, \"\", response);\n }\n\n public Message(): string {\n this.message = i18next.t(`uploader.chunkUploadError`, {\n index: this.chunkIndex,\n });\n return super.Message();\n }\n}\n\n// 上传任务冲突\nexport class ProcessingTaskDuplicatedError extends UploaderError {\n constructor() {\n super(\n UploaderErrorName.ProcessingTaskDuplicated,\n \"Processing task duplicated\"\n );\n }\n\n public Message(): string {\n return i18next.t(`uploader.conflictError`);\n }\n}\n\n// OneDrive 分块上传失败\nexport class OneDriveChunkError extends UploaderError {\n constructor(public response: OneDriveError) {\n super(\n UploaderErrorName.OneDriveChunkUploadFailed,\n response.error.message\n );\n }\n\n public Message(): string {\n let msg = i18next.t(`uploader.chunkUploadErrorWithMsg`, {\n msg: this.message,\n });\n\n if (this.response.error.retryAfterSeconds != undefined){\n msg += \" \"+i18next.t(`uploader.chunkUploadErrorWithRetryAfter`, {\n retryAfter: this.response.error.retryAfterSeconds,\n })\n }\n\n return msg;\n }\n\n public Retryable(): boolean {\n return (\n super.Retryable() || this.response.error.retryAfterSeconds != undefined\n );\n }\n}\n\n// OneDrive 选择了空文件上传\nexport class OneDriveEmptyFileSelected extends UploaderError {\n constructor() {\n super(UploaderErrorName.OneDriveEmptyFile, \"empty file not supported\");\n }\n\n public Message(): string {\n return i18next.t(\"uploader.emptyFileError\");\n }\n}\n\n// OneDrive 无法完成文件上传\nexport class OneDriveFinishUploadError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.FailedFinishOneDriveUpload, \"\", response);\n }\n\n public Message(): string {\n this.message = i18next.t(\"uploader.finishUploadError\");\n return super.Message();\n }\n}\n\n// S3 类策略分块上传失败\nexport class S3LikeChunkError extends UploaderError {\n constructor(public response: Document) {\n super(\n UploaderErrorName.S3LikeChunkUploadFailed,\n response.getElementsByTagName(\"Message\")[0].innerHTML\n );\n }\n\n public Message(): string {\n return i18next.t(`uploader.chunkUploadErrorWithMsg`, {\n msg: this.message,\n });\n }\n}\n\n// OSS 完成传失败\nexport class S3LikeFinishUploadError extends UploaderError {\n constructor(public response: Document) {\n super(\n UploaderErrorName.S3LikeChunkUploadFailed,\n response.getElementsByTagName(\"Message\")[0].innerHTML\n );\n }\n\n public Message(): string {\n return i18next.t(`uploader.ossFinishUploadError`, {\n msg: this.message,\n code: this.response.getElementsByTagName(\"Code\")[0].innerHTML,\n });\n }\n}\n\n// qiniu 分块上传失败\nexport class QiniuChunkError extends UploaderError {\n constructor(public response: QiniuError) {\n super(UploaderErrorName.QiniuChunkUploadFailed, response.error);\n }\n\n public Message(): string {\n return i18next.t(`uploader.chunkUploadErrorWithMsg`, {\n msg: this.message,\n });\n }\n}\n\n// qiniu 完成传失败\nexport class QiniuFinishUploadError extends UploaderError {\n constructor(public response: QiniuError) {\n super(UploaderErrorName.FailedFinishQiniuUpload, response.error);\n }\n\n public Message(): string {\n return i18next.t(`uploader.finishUploadErrorWithMsg`, {\n msg: this.message,\n });\n }\n}\n\n// COS 上传失败\nexport class COSUploadError extends UploaderError {\n constructor(public response: Document) {\n super(\n UploaderErrorName.COSPostUploadFailed,\n response.getElementsByTagName(\"Message\")[0].innerHTML\n );\n }\n\n public Message(): string {\n return i18next.t(`uploader.cosUploadFailed`, {\n msg: this.message,\n code: this.response.getElementsByTagName(\"Code\")[0].innerHTML,\n });\n }\n}\n\n// COS 无法完成上传回调\nexport class COSUploadCallbackError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.COSUploadCallbackFailed, \"\", response);\n }\n\n public Message(): string {\n this.message = i18next.t(\"uploader.finishUploadError\");\n return super.Message();\n }\n}\n\n// Upyun 上传失败\nexport class UpyunUploadError extends UploaderError {\n constructor(public response: UpyunError) {\n super(UploaderErrorName.UpyunPostUploadFailed, response.message);\n }\n\n public Message(): string {\n return i18next.t(\"uploader.upyunUploadFailed\", {\n msg: this.message,\n });\n }\n}\n\n// S3 无法完成上传回调\nexport class S3LikeUploadCallbackError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.S3LikeUploadCallbackFailed, \"\", response);\n }\n\n public Message(): string {\n this.message = i18next.t(\"uploader.finishUploadError\");\n return super.Message();\n }\n}\n\n// 无法解析响应\nexport class TransformResponseError extends UploaderError {\n constructor(private response: string, parseError: Error) {\n super(UploaderErrorName.FailedTransformResponse, parseError.message);\n }\n\n public Message(): string {\n return i18next.t(\"uploader.parseResponseError\", {\n msg: this.message,\n content: this.response,\n });\n }\n}\n","import { Task } from \"../types\";\nimport Logger from \"../logger\";\nimport { UploaderError, UploaderErrorName } from \"../errors\";\nimport { ChunkProgress } from \"../uploader/chunk\";\n\nexport const sizeToString = (bytes: number): string => {\n if (bytes === 0) return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return (bytes / Math.pow(k, i)).toFixed(1) + \" \" + sizes[i];\n};\n\n// 文件分块\nexport function getChunks(\n file: File,\n chunkByteSize: number | undefined\n): Blob[] {\n // 如果 chunkByteSize 比文件大或为0,则直接取文件的大小\n if (!chunkByteSize || chunkByteSize > file.size || chunkByteSize == 0) {\n chunkByteSize = file.size;\n }\n\n const chunks: Blob[] = [];\n const count = Math.ceil(file.size / chunkByteSize);\n for (let i = 0; i < count; i++) {\n const chunk = file.slice(\n chunkByteSize * i,\n i === count - 1 ? file.size : chunkByteSize * (i + 1)\n );\n chunks.push(chunk);\n }\n\n if (chunks.length == 0) {\n chunks.push(file.slice(0));\n }\n return chunks;\n}\n\nexport function sumChunk(list: ChunkProgress[]) {\n return list.reduce((data, loaded) => data + loaded.loaded, 0);\n}\n\nconst resumeKeyPrefix = \"cd_upload_ctx_\";\n\nfunction isTask(toBeDetermined: Task | string): toBeDetermined is Task {\n return !!(toBeDetermined as Task).name;\n}\n\nexport function getResumeCtxKey(task: Task | string): string {\n if (isTask(task)) {\n return `${resumeKeyPrefix}name_${task.name}_dst_${task.dst}_size_${task.size}_policy_${task.policy.id}`;\n }\n\n return task;\n}\n\nexport function setResumeCtx(task: Task, logger: Logger) {\n const ctxKey = getResumeCtxKey(task);\n try {\n localStorage.setItem(ctxKey, JSON.stringify(task));\n } catch (err) {\n logger.warn(\n new UploaderError(\n UploaderErrorName.WriteCtxFailed,\n `setResumeCtx failed: ${ctxKey}`\n )\n );\n }\n}\n\nexport function removeResumeCtx(task: Task | string, logger: Logger) {\n const ctxKey = getResumeCtxKey(task);\n try {\n localStorage.removeItem(ctxKey);\n } catch (err) {\n logger.warn(\n new UploaderError(\n UploaderErrorName.RemoveCtxFailed,\n `removeResumeCtx failed. key: ${ctxKey}`\n )\n );\n }\n}\n\nexport function cleanupResumeCtx(logger: Logger) {\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith(resumeKeyPrefix)) {\n try {\n localStorage.removeItem(key);\n } catch (err) {\n logger.warn(\n new UploaderError(\n UploaderErrorName.RemoveCtxFailed,\n `removeResumeCtx failed. key: ${key}`\n )\n );\n }\n }\n }\n}\n\nexport function getResumeCtx(task: Task | string, logger: Logger): Task | null {\n const ctxKey = getResumeCtxKey(task);\n let localInfoString: string | null = null;\n try {\n localInfoString = localStorage.getItem(ctxKey);\n } catch {\n logger.warn(\n new UploaderError(\n UploaderErrorName.ReadCtxFailed,\n `getResumeCtx failed. key: ${ctxKey}`\n )\n );\n }\n\n if (localInfoString == null) {\n return null;\n }\n\n let localInfo: Task | null = null;\n try {\n localInfo = JSON.parse(localInfoString);\n } catch {\n // 本地信息已被破坏,直接删除\n removeResumeCtx(task, logger);\n logger.warn(\n new UploaderError(\n UploaderErrorName.InvalidCtxData,\n `getResumeCtx failed to parse. key: ${ctxKey}`\n )\n );\n }\n\n if (\n localInfo &&\n localInfo.session &&\n localInfo.session.expires < Math.floor(Date.now() / 1000)\n ) {\n removeResumeCtx(task, logger);\n logger.warn(\n new UploaderError(\n UploaderErrorName.CtxExpired,\n `upload session already expired at ${localInfo.session.expires}. key: ${ctxKey}`\n )\n );\n return null;\n }\n\n return localInfo;\n}\n\nexport function listResumeCtx(logger: Logger): Task[] {\n const res: Task[] = [];\n for (let i = 0, len = localStorage.length; i < len; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith(resumeKeyPrefix)) {\n const value = getResumeCtx(key, logger);\n if (value) {\n res.push(value);\n }\n }\n }\n\n return res;\n}\n\nexport function OBJtoXML(obj: any): string {\n let xml = \"\";\n for (const prop in obj) {\n xml += \"<\" + prop + \">\";\n if (Array.isArray(obj[prop])) {\n for (const array of obj[prop]) {\n // A real botch fix here\n xml += \"\";\n xml += \"<\" + prop + \">\";\n\n xml += OBJtoXML(new Object(array));\n }\n } else if (typeof obj[prop] == \"object\") {\n xml += OBJtoXML(new Object(obj[prop]));\n } else {\n xml += obj[prop];\n }\n xml += \"\";\n }\n return xml.replace(/<\\/?[0-9]{1,}>/g, \"\");\n}\n\nexport function getFileInput(id: number, isFolder: boolean): HTMLInputElement {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.id = `upload-file-input-${id}`;\n if (isFolder) {\n input.id = `upload-folder-input-${id}`;\n input.setAttribute(\"webkitdirectory\", \"true\");\n input.setAttribute(\"mozdirectory\", \"true\");\n } else {\n input.id = `upload-file-input-${id}`;\n input.multiple = true;\n }\n input.hidden = true;\n document.body.appendChild(input);\n return input;\n}\n\nexport function pathJoin(parts: string[], sep = \"/\"): string {\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(\"^\" + sep), \"\");\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(sep + \"$\"), \"\");\n }\n return part;\n });\n return parts.join(sep);\n}\n\nfunction basename(path: string): string {\n const pathList = path.split(\"/\");\n pathList.pop();\n return pathList.join(\"/\") === \"\" ? \"/\" : pathList.join(\"/\");\n}\n\nexport function trimPrefix(src: string, prefix: string): string {\n if (src.startsWith(prefix)) {\n return src.slice(prefix.length);\n }\n return src;\n}\n\nexport function getDirectoryUploadDst(dst: string, file: any): string {\n let relPath = file.webkitRelativePath;\n if (!relPath || relPath == \"\") {\n relPath = file.fsPath;\n if (!relPath || relPath == \"\") {\n return dst;\n }\n }\n\n relPath = trimPrefix(relPath, \"/\");\n\n return basename(pathJoin([dst, relPath]));\n}\n\n// Wrap readEntries in a promise to make working with readEntries easier\nasync function readEntriesPromise(directoryReader: any): Promise {\n try {\n return await new Promise((resolve, reject) => {\n directoryReader.readEntries(resolve, reject);\n });\n } catch (err) {\n console.log(err);\n }\n}\n\nasync function readFilePromise(fileReader: any, path: string): Promise {\n try {\n return await new Promise((resolve, reject) => {\n fileReader.file((file: any) => {\n file.fsPath = path;\n resolve(file);\n });\n });\n } catch (err) {\n console.log(err);\n }\n}\n\n// Get all the entries (files or sub-directories) in a directory by calling readEntries until it returns empty array\nasync function readAllDirectoryEntries(directoryReader: any): Promise {\n const entries: any[] = [];\n let readEntries = await readEntriesPromise(directoryReader);\n while (readEntries.length > 0) {\n entries.push(...readEntries);\n readEntries = await readEntriesPromise(directoryReader);\n }\n return entries;\n}\n\n// Drop handler function to get all files\nexport async function getAllFileEntries(\n dataTransferItemList: DataTransferItemList\n): Promise {\n const fileEntries: any[] = [];\n // Use BFS to traverse entire directory/file structure\n const queue: any[] = [];\n // Unfortunately dataTransferItemList is not iterable i.e. no forEach\n for (let i = 0; i < dataTransferItemList.length; i++) {\n const fileEntry = dataTransferItemList[i].webkitGetAsEntry();\n if (!fileEntry) {\n const file = dataTransferItemList[i].getAsFile();\n if (file) {\n fileEntries.push(file);\n }\n }\n\n queue.push(dataTransferItemList[i].webkitGetAsEntry());\n }\n while (queue.length > 0) {\n const entry = queue.shift();\n if (!entry) {\n continue;\n }\n if (entry.isFile) {\n fileEntries.push(await readFilePromise(entry, entry.fullPath));\n } else if (entry.isDirectory) {\n const reader = entry.createReader();\n const entries: any = await readAllDirectoryEntries(reader);\n queue.push(...entries);\n }\n }\n return fileEntries;\n}\n\nexport function isFileDrop(e: DragEvent): boolean {\n return !!e.dataTransfer && e.dataTransfer.types.includes(\"Files\");\n}\n","export * from \"./pool\";\nexport * from \"./helper\";\nexport * from \"./validator\";\nexport * from \"./request\";\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport InfoIcon from \"@material-ui/icons/Info\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport WarningIcon from \"@material-ui/icons/Warning\";\n\nimport {\n IconButton,\n Snackbar,\n SnackbarContent,\n withStyles,\n} from \"@material-ui/core\";\n\nconst mapStateToProps = (state) => {\n return {\n snackbar: state.viewUpdate.snackbar,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles1 = (theme) => ({\n success: {\n backgroundColor: theme.palette.success.main,\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n info: {\n backgroundColor: theme.palette.info.main,\n },\n warning: {\n backgroundColor: theme.palette.warning.main,\n },\n icon: {\n fontSize: 20,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1),\n },\n message: {\n display: \"flex\",\n alignItems: \"center\",\n },\n});\n\nfunction MySnackbarContent(props) {\n const { classes, className, message, onClose, variant, ...other } = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n );\n}\nMySnackbarContent.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf([\"alert\", \"success\", \"warning\", \"error\", \"info\"])\n .isRequired,\n};\n\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\nconst styles = (theme) => ({\n margin: {\n margin: theme.spacing(1),\n },\n});\nclass SnackbarCompoment extends Component {\n state = {\n open: false,\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (nextProps.snackbar.toggle !== this.props.snackbar.toggle) {\n this.setState({ open: true });\n }\n };\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nconst AlertBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(SnackbarCompoment));\n\nexport default AlertBar;\n","/* eslint-disable */\nclass Crc32 {\n constructor() {\n this.crc = -1;\n }\n\n append(data) {\n let crc = this.crc | 0;\n const table = this.table;\n for (let offset = 0, len = data.length | 0; offset < len; offset++) {\n crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xff];\n }\n this.crc = crc;\n }\n\n get() {\n return ~this.crc;\n }\n}\nCrc32.prototype.table = (() => {\n let i;\n let j;\n let t;\n const table = [];\n for (i = 0; i < 256; i++) {\n t = i;\n for (j = 0; j < 8; j++) {\n t = t & 1 ? (t >>> 1) ^ 0xedb88320 : t >>> 1;\n }\n table[i] = t;\n }\n return table;\n})();\n\nconst getDataHelper = (byteLength) => {\n const uint8 = new Uint8Array(byteLength);\n return {\n array: uint8,\n view: new DataView(uint8.buffer),\n };\n};\n\nconst pump = (zipObj) =>\n zipObj.reader.read().then((chunk) => {\n if (chunk.done) return zipObj.writeFooter();\n const outputData = chunk.value;\n zipObj.crc.append(outputData);\n zipObj.uncompressedLength += outputData.length;\n zipObj.compressedLength += outputData.length;\n zipObj.ctrl.enqueue(outputData);\n });\n\n/**\n * [createWriter description]\n * @param {Object} underlyingSource [description]\n * @return {Boolean} [description]\n */\nfunction createWriter(underlyingSource) {\n const files = Object.create(null);\n const filenames = [];\n const encoder = new TextEncoder();\n let offset = 0;\n let activeZipIndex = 0;\n let ctrl;\n let activeZipObject, closed;\n\n function next() {\n activeZipIndex++;\n activeZipObject = files[filenames[activeZipIndex]];\n if (activeZipObject) processNextChunk();\n else if (closed) closeZip();\n }\n\n const zipWriter = {\n enqueue(fileLike) {\n if (closed)\n throw new TypeError(\n \"Cannot enqueue a chunk into a readable stream that is closed or has been requested to be closed\"\n );\n\n let name = fileLike.name.trim();\n const date = new Date(\n typeof fileLike.lastModified === \"undefined\"\n ? Date.now()\n : fileLike.lastModified\n );\n\n if (fileLike.directory && !name.endsWith(\"/\")) name += \"/\";\n if (files[name]) throw new Error(\"File already exists.\");\n\n const nameBuf = encoder.encode(name);\n filenames.push(name);\n\n const zipObject = (files[name] = {\n level: 0,\n ctrl,\n directory: !!fileLike.directory,\n nameBuf,\n comment: encoder.encode(fileLike.comment || \"\"),\n compressedLength: 0,\n uncompressedLength: 0,\n writeHeader() {\n const header = getDataHelper(26);\n const data = getDataHelper(30 + nameBuf.length);\n\n zipObject.offset = offset;\n zipObject.header = header;\n if (zipObject.level !== 0 && !zipObject.directory) {\n header.view.setUint16(4, 0x0800);\n }\n header.view.setUint32(0, 0x14000808);\n header.view.setUint16(\n 6,\n (((date.getHours() << 6) | date.getMinutes()) << 5) |\n (date.getSeconds() / 2),\n true\n );\n header.view.setUint16(\n 8,\n ((((date.getFullYear() - 1980) << 4) |\n (date.getMonth() + 1)) <<\n 5) |\n date.getDate(),\n true\n );\n header.view.setUint16(22, nameBuf.length, true);\n data.view.setUint32(0, 0x504b0304);\n data.array.set(header.array, 4);\n data.array.set(nameBuf, 30);\n offset += data.array.length;\n ctrl.enqueue(data.array);\n },\n writeFooter() {\n const footer = getDataHelper(16);\n footer.view.setUint32(0, 0x504b0708);\n\n if (zipObject.crc) {\n zipObject.header.view.setUint32(\n 10,\n zipObject.crc.get(),\n true\n );\n zipObject.header.view.setUint32(\n 14,\n zipObject.compressedLength,\n true\n );\n zipObject.header.view.setUint32(\n 18,\n zipObject.uncompressedLength,\n true\n );\n footer.view.setUint32(4, zipObject.crc.get(), true);\n footer.view.setUint32(\n 8,\n zipObject.compressedLength,\n true\n );\n footer.view.setUint32(\n 12,\n zipObject.uncompressedLength,\n true\n );\n }\n\n ctrl.enqueue(footer.array);\n offset += zipObject.compressedLength + 16;\n next();\n },\n fileLike,\n });\n\n if (!activeZipObject) {\n activeZipObject = zipObject;\n processNextChunk();\n }\n },\n close() {\n if (closed)\n throw new TypeError(\n \"Cannot close a readable stream that has already been requested to be closed\"\n );\n if (!activeZipObject) closeZip();\n closed = true;\n },\n };\n\n function closeZip() {\n let length = 0;\n let index = 0;\n let indexFilename, file;\n for (\n indexFilename = 0;\n indexFilename < filenames.length;\n indexFilename++\n ) {\n file = files[filenames[indexFilename]];\n length += 46 + file.nameBuf.length + file.comment.length;\n }\n const data = getDataHelper(length + 22);\n for (\n indexFilename = 0;\n indexFilename < filenames.length;\n indexFilename++\n ) {\n file = files[filenames[indexFilename]];\n data.view.setUint32(index, 0x504b0102);\n data.view.setUint16(index + 4, 0x1400);\n data.array.set(file.header.array, index + 6);\n data.view.setUint16(index + 32, file.comment.length, true);\n if (file.directory) {\n data.view.setUint8(index + 38, 0x10);\n }\n data.view.setUint32(index + 42, file.offset, true);\n data.array.set(file.nameBuf, index + 46);\n data.array.set(file.comment, index + 46 + file.nameBuf.length);\n index += 46 + file.nameBuf.length + file.comment.length;\n }\n data.view.setUint32(index, 0x504b0506);\n data.view.setUint16(index + 8, filenames.length, true);\n data.view.setUint16(index + 10, filenames.length, true);\n data.view.setUint32(index + 12, length, true);\n data.view.setUint32(index + 16, offset, true);\n ctrl.enqueue(data.array);\n ctrl.close();\n }\n\n function processNextChunk() {\n if (!activeZipObject) return;\n if (activeZipObject.directory)\n return activeZipObject.writeFooter(activeZipObject.writeHeader());\n if (activeZipObject.reader) return pump(activeZipObject);\n if (activeZipObject.fileLike.stream) {\n activeZipObject.crc = new Crc32();\n activeZipObject.reader = activeZipObject.fileLike\n .stream()\n .getReader();\n activeZipObject.writeHeader();\n } else next();\n }\n return new ReadableStream({\n start: (c) => {\n ctrl = c;\n underlyingSource.start &&\n Promise.resolve(underlyingSource.start(zipWriter));\n },\n pull() {\n return (\n processNextChunk() ||\n (underlyingSource.pull &&\n Promise.resolve(underlyingSource.pull(zipWriter)))\n );\n },\n });\n}\n\nwindow.ZIP = createWriter;\n","import { CloudreveFile } from \"../types\";\nimport { list } from \"../services/navigate\";\nimport { pathJoin } from \"../component/Uploader/core/utils\";\n\nexport function getPreviewPath(selected: any): string {\n return encodeURIComponent(\n selected.path === \"/\"\n ? selected.path + selected.name\n : selected.path + \"/\" + selected.name\n );\n}\n\nexport async function walk(\n file: CloudreveFile[],\n share: any\n): Promise {\n let res: CloudreveFile[] = [];\n for (const f of file) {\n if (f.type === \"file\") {\n res.push(f);\n continue;\n }\n\n if (f.type === \"dir\") {\n const response = await list(\n pathJoin([f.path, f.name]),\n share,\n \"\",\n \"\"\n );\n const subs = await walk(response.data.objects, share);\n res = [...res, ...subs];\n }\n }\n\n return res;\n}\n","// get the paths of files (no directories) in the directory\n// parent: \"\" or \"/\"\nexport const getFileSystemDirectoryPaths = async (\n handle: FileSystemDirectoryHandle,\n parent = \"\"\n): Promise => {\n const paths: Array = [];\n\n for await (const [path, fileSystemHandle] of handle.entries()) {\n if (fileSystemHandle instanceof window.FileSystemFileHandle) {\n paths.push(`${parent}${path}`);\n } else {\n paths.push(\n ...(await getFileSystemDirectoryPaths(\n fileSystemHandle,\n `${parent}${path}/`\n ))\n );\n }\n }\n\n return paths;\n};\n\n// create the dst directory if it doesn't exist\n// return the dst directory handle\n// paths: \"/dir1/dir2\" => [\"dir1\",\"dir2\"]\nexport const createFileSystemDirectory = async (\n handle: FileSystemDirectoryHandle,\n paths: string[]\n) => {\n let cur = handle;\n while (paths.length > 0) {\n const path = paths.shift();\n if (!path) {\n break;\n }\n cur = await cur.getDirectoryHandle(path, { create: true });\n }\n return cur;\n};\n\n// save file into the dst directory\n// create the dst file if it doesn't exist by default\n// path: a/b/c.jpg\nexport const saveFileToFileSystemDirectory = async (\n handle: FileSystemDirectoryHandle,\n stream: FileSystemWriteChunkType,\n path: string,\n create = true\n) => {\n const paths = path.split(\"/\");\n const fileName = paths.pop();\n if (!fileName) return;\n\n const dir = await createFileSystemDirectory(handle, paths);\n const file = await dir.getFileHandle(fileName, { create });\n const writable = await file.createWritable();\n await writable.write(stream);\n await writable.close();\n};\n\n// verify or request the permission of the readwrite permission\nexport async function verifyFileSystemRWPermission(\n fileHandle: FileSystemDirectoryHandle\n) {\n const opts = { mode: \"readwrite\" as FileSystemPermissionMode };\n\n // Check if we already have permission, if so, return true.\n if ((await fileHandle.queryPermission(opts)) === \"granted\") {\n return true;\n }\n\n // Request permission to the file, if the user grants permission, return true.\n if ((await fileHandle.requestPermission(opts)) === \"granted\") {\n return true;\n }\n\n // The user did not grant permission, return false.\n return false;\n}\n","import { AnyAction } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { CloudreveFile, SortMethod } from \"./../../types/index\";\nimport { closeContextMenu, setPagination } from \"../viewUpdate/action\";\nimport { Policy } from \"../../component/Uploader/core/types\";\nimport streamSaver from \"streamsaver\";\nimport \"../../utils/zip\";\nimport pathHelper from \"../../utils/page\";\nimport { filePath, isMac } from \"../../utils\";\nimport API, { getBaseURL } from \"../../middleware/Api\";\nimport { pathJoin, trimPrefix } from \"../../component/Uploader/core/utils\";\nimport { getPreviewPath, walk } from \"../../utils/api\";\nimport { askForOption, trySharePurchase } from \"./async\";\nimport Auth from \"../../middleware/Auth\";\nimport { encodingRequired, isPreviewable } from \"../../config\";\nimport { push } from \"connected-react-router\";\nimport {\n changeContextMenu,\n closeAllModals,\n navigateTo,\n openDirectoryDownloadDialog,\n openGetSourceDialog,\n openLoadingDialog,\n openTorrentDownloadDialog,\n showAudioPreview,\n showImgPreivew,\n toggleSnackbar,\n} from \"./index\";\nimport { getDownloadURL } from \"../../services/file\";\nimport i18next from \"../../i18n\";\nimport {\n getFileSystemDirectoryPaths,\n saveFileToFileSystemDirectory,\n verifyFileSystemRWPermission,\n} from \"../../utils/filesystem\";\n\nexport interface ActionSetFileList extends AnyAction {\n type: \"SET_FILE_LIST\";\n list: CloudreveFile[];\n}\nexport const setFileList = (list: CloudreveFile[]): ActionSetFileList => {\n return {\n type: \"SET_FILE_LIST\",\n list,\n };\n};\n\nexport interface ActionSetDirList extends AnyAction {\n type: \"SET_DIR_LIST\";\n list: CloudreveFile[];\n}\nexport const setDirList = (list: CloudreveFile[]): ActionSetDirList => {\n return {\n type: \"SET_DIR_LIST\",\n list,\n };\n};\n\nexport interface ActionSetSortMethod extends AnyAction {\n type: \"SET_SORT_METHOD\";\n method: SortMethod;\n}\nexport const setSortMethod = (method: SortMethod): ActionSetSortMethod => {\n return {\n type: \"SET_SORT_METHOD\",\n method,\n };\n};\n\nexport const setSideBar = (open: boolean) => {\n return {\n type: \"SET_SIDE_BAR\",\n open,\n };\n};\n\nexport const setCurrentPolicy = (policy: Policy) => {\n return {\n type: \"SET_CURRENT_POLICY\",\n policy,\n };\n};\n\nexport const removeSelectedTargets = (fileIds: any) => {\n return {\n type: \"RMOVE_SELECTED_TARGETS\",\n fileIds,\n };\n};\nexport const addSelectedTargets = (targets: any) => {\n return {\n type: \"ADD_SELECTED_TARGETS\",\n targets,\n };\n};\nexport const setSelectedTarget = (targets: any) => {\n return {\n type: \"SET_SELECTED_TARGET\",\n targets,\n };\n};\nexport const setLastSelect = (file: any, index: any) => {\n return {\n type: \"SET_LAST_SELECT\",\n file,\n index,\n };\n};\nexport const setShiftSelectedIds = (shiftSelectedIds: any) => {\n return {\n type: \"SET_SHIFT_SELECTED_IDS\",\n shiftSelectedIds,\n };\n};\n\ntype SortFunc = (a: CloudreveFile, b: CloudreveFile) => number;\nexport const sortMethodFuncs: Record = {\n sizePos: (a: CloudreveFile, b: CloudreveFile) => {\n return a.size - b.size;\n },\n sizeRes: (a: CloudreveFile, b: CloudreveFile) => {\n return b.size - a.size;\n },\n namePos: (a: CloudreveFile, b: CloudreveFile) => {\n return a.name.localeCompare(\n b.name,\n navigator.languages[0] || navigator.language,\n { numeric: true, ignorePunctuation: true }\n );\n },\n nameRev: (a: CloudreveFile, b: CloudreveFile) => {\n return b.name.localeCompare(\n a.name,\n navigator.languages[0] || navigator.language,\n { numeric: true, ignorePunctuation: true }\n );\n },\n timePos: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(a.create_date) - Date.parse(b.create_date);\n },\n timeRev: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(b.create_date) - Date.parse(a.create_date);\n },\n modifyTimePos: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(a.date) - Date.parse(b.date);\n },\n modifyTimeRev: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(b.date) - Date.parse(a.date);\n },\n};\n\nexport const selectAll = (): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n const { selected, fileList, dirList } = state.explorer;\n if (selected.length >= dirList.length + fileList.length) {\n dispatch(setSelectedTarget([]));\n } else {\n dispatch(setSelectedTarget([...dirList, ...fileList]));\n }\n };\n};\n\nexport const updateFileList = (\n list: CloudreveFile[]\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n // TODO: define state type\n const { sortMethod, pagination } = state.viewUpdate;\n const dirList = list.filter((x) => {\n return x.type === \"dir\";\n });\n const fileList = list.filter((x) => {\n return x.type === \"file\";\n });\n const sortFunc = sortMethodFuncs[sortMethod as SortMethod];\n dispatch(setDirList(dirList.sort(sortFunc)));\n dispatch(setFileList(fileList.sort(sortFunc)));\n const total = dirList.length + fileList.length;\n if (pagination.page * pagination.size > total) {\n dispatch(\n setPagination({\n ...pagination,\n page: Math.max(Math.ceil(total / pagination.size), 1),\n })\n );\n }\n };\n};\n\nexport const changeSortMethod = (\n method: SortMethod\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n const { fileList, dirList } = state.explorer;\n const sortFunc = sortMethodFuncs[method];\n Auth.SetPreference(\"sort\", method);\n dispatch(setSortMethod(method));\n dispatch(setDirList(dirList.slice().sort(sortFunc)));\n dispatch(setFileList(fileList.slice().sort(sortFunc)));\n };\n};\n\nexport const toggleObjectInfoSidebar = (\n open: boolean\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n if (open) {\n dispatch(closeContextMenu());\n }\n dispatch(setSideBar(true));\n };\n};\n\nexport const serverSideBatchDownload = (\n share: any\n): ThunkAction => {\n return (dispatch, getState): void => {\n dispatch(\n openLoadingDialog(i18next.t(\"fileManager.preparingBathDownload\"))\n );\n const {\n explorer: { selected },\n router: {\n location: { pathname },\n },\n } = getState();\n const dirs: any[] = [],\n items: any[] = [];\n selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n return null;\n });\n\n let reqURL = \"/file/archive\";\n const postBody = {\n items: items,\n dirs: dirs,\n };\n if (pathHelper.isSharePage(pathname)) {\n reqURL = \"/share/archive/\" + share.key;\n postBody[\"path\"] = selected[0].path;\n }\n\n API.post(reqURL, postBody)\n .then((response: any) => {\n if (response.rawData.code === 0) {\n dispatch(closeAllModals());\n window.location.assign(response.data);\n } else {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n response.rawData.msg,\n \"warning\"\n )\n );\n }\n dispatch(closeAllModals());\n })\n .catch((error) => {\n dispatch(\n toggleSnackbar(\"top\", \"right\", error.message, \"error\")\n );\n dispatch(closeAllModals());\n });\n };\n};\n\nexport const startDownload = (\n share: any,\n file: CloudreveFile\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n const {\n router: {\n location: { pathname },\n },\n } = getState();\n const user = Auth.GetUser();\n if (\n pathHelper.isSharePage(pathname) &&\n !Auth.Check() &&\n user &&\n !user.group.shareDownload\n ) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"share.pleaseLogin\"),\n \"warning\"\n )\n );\n return;\n }\n\n dispatch(changeContextMenu(\"file\", false));\n\n try {\n await dispatch(trySharePurchase(share));\n } catch (e) {\n return;\n }\n\n dispatch(openLoadingDialog(i18next.t(\"fileManager.preparingDownload\")));\n try {\n const res = await getDownloadURL(file ? file : share);\n window.location.assign(res.data);\n dispatch(closeAllModals());\n } catch (e) {\n dispatch(toggleSnackbar(\"top\", \"right\", e.message, \"warning\"));\n dispatch(closeAllModals());\n }\n };\n};\n\nexport const startBatchDownload = (\n share: any\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n dispatch(changeContextMenu(\"file\", false));\n try {\n await dispatch(trySharePurchase(share));\n } catch (e) {\n return;\n }\n\n const user = Auth.GetUser();\n if (user.group.allowArchiveDownload) {\n let option: any;\n try {\n option = await dispatch(\n askForOption(\n [\n {\n key: \"client\",\n name: i18next.t(\n \"fileManager.browserBatchDownload\"\n ),\n description: i18next.t(\n \"fileManager.browserBatchDownloadDescription\"\n ),\n },\n {\n key: \"server\",\n name: i18next.t(\n \"fileManager.serverBatchDownload\"\n ),\n description: i18next.t(\n \"fileManager.serverBatchDownloadDescription\"\n ),\n },\n ],\n i18next.t(\"fileManager.selectArchiveMethod\")\n )\n );\n } catch (e) {\n return;\n }\n\n if (option.key === \"server\") {\n dispatch(serverSideBatchDownload(share));\n return;\n }\n }\n\n const {\n explorer: { selected },\n } = getState();\n\n dispatch(openLoadingDialog(i18next.t(\"modals.listingFiles\")));\n\n let queue: CloudreveFile[] = [];\n try {\n queue = await walk(selected, share);\n } catch (e) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"modals.listingFileError\", {\n message: e.message,\n }),\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n dispatch(closeAllModals());\n dispatch(\n toggleSnackbar(\n \"top\",\n \"center\",\n i18next.t(\"fileManager.batchDownloadStarted\"),\n \"info\"\n )\n );\n const fileStream = streamSaver.createWriteStream(\"archive.zip\");\n let failed = 0;\n const readableZipStream = new (window as any).ZIP({\n start(ctrl: any) {\n // ctrl.close()\n },\n async pull(ctrl: any) {\n while (queue.length > 0) {\n const next = queue.pop();\n if (next && next.type === \"file\") {\n const previewPath = getPreviewPath(next);\n const url =\n getBaseURL() +\n (pathHelper.isSharePage(location.pathname)\n ? \"/share/preview/\" +\n share.key +\n (previewPath !== \"\"\n ? \"?path=\" + previewPath\n : \"\")\n : \"/file/preview/\" + next.id);\n try {\n const res = await fetch(url, { cache: \"no-cache\" });\n const stream = () => res.body;\n const name = trimPrefix(\n pathJoin([next.path, next.name]),\n \"/\"\n );\n ctrl.enqueue({ name, stream });\n return;\n } catch (e) {\n failed++;\n }\n }\n }\n ctrl.close();\n },\n });\n\n // more optimized\n if (window.WritableStream && readableZipStream.pipeTo) {\n return readableZipStream\n .pipeTo(fileStream)\n .then(() => dispatch(closeAllModals()))\n .catch((e) => {\n console.log(e);\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"modals.batchDownloadError\", {\n message: e && e.message,\n }),\n \"warning\"\n );\n dispatch(closeAllModals());\n });\n }\n };\n};\n\nlet directoryDownloadAbortController: AbortController;\nexport const cancelDirectoryDownload = () =>\n directoryDownloadAbortController.abort();\n\nexport const startDirectoryDownload = (\n share: any\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n dispatch(changeContextMenu(\"file\", false));\n\n directoryDownloadAbortController = new AbortController();\n if (!window.showDirectoryPicker || !window.isSecureContext) {\n return;\n }\n let handle: FileSystemDirectoryHandle;\n // we should show directory picker at first\n // https://web.dev/file-system-access/#:~:text=handle%3B%0A%7D-,Gotchas,-Sometimes%20processing%20the\n try {\n // can't use suggestedName for showDirectoryPicker (only available showSaveFilePicker)\n handle = await window.showDirectoryPicker({\n startIn: \"downloads\",\n mode: \"readwrite\",\n });\n // we should obtain the readwrite permission for the directory at first\n if (!(await verifyFileSystemRWPermission(handle))) {\n throw new Error(\n i18next.t(\"fileManager.directoryDownloadPermissionError\")\n );\n }\n dispatch(closeAllModals());\n } catch (e) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"modals.directoryDownloadError\", {\n msg: e && e.message,\n }),\n \"error\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n const {\n explorer: { selected },\n navigator: { path },\n } = getState();\n\n // list files to download\n dispatch(openLoadingDialog(i18next.t(\"modals.listingFiles\")));\n\n let queue: CloudreveFile[] = [];\n try {\n queue = await walk(selected, share);\n } catch (e) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"modals.listingFileError\", {\n message: e.message,\n }),\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n dispatch(closeAllModals());\n\n let failed = 0;\n let option: any;\n // preparation for downloading\n // get the files in the directory to compare with queue files\n // parent: \"\"\n const fsPaths = await getFileSystemDirectoryPaths(handle, \"\");\n\n // path: / or /abc (no sep suffix)\n // file.path: /abc/d (no sep suffix)\n // fsPaths: [\"abc/d/e.bin\",]\n const duplicates = queue\n .map((file) =>\n trimPrefix(\n `${file.path}/${file.name}`,\n path === \"/\" ? \"/\" : path + \"/\"\n )\n )\n .filter((path) => fsPaths.includes(path));\n\n // we should ask users for the duplication handle method\n if (duplicates.length > 0) {\n try {\n option = await dispatch(\n askForOption(\n [\n {\n key: \"replace\",\n name: i18next.t(\n \"fileManager.directoryDownloadReplace\"\n ),\n description: i18next.t(\n \"fileManager.directoryDownloadReplaceDescription\",\n {\n // display the first three duplications\n duplicates: duplicates\n .slice(\n 0,\n duplicates.length >= 3\n ? 3\n : duplicates.length\n )\n .join(\", \"),\n num: duplicates.length,\n }\n ),\n },\n {\n key: \"skip\",\n name: i18next.t(\n \"fileManager.directoryDownloadSkip\"\n ),\n description: i18next.t(\n \"fileManager.directoryDownloadSkipDescription\",\n {\n duplicates: duplicates\n .slice(\n 0,\n duplicates.length >= 3\n ? 3\n : duplicates.length\n )\n .join(\", \"),\n num: duplicates.length,\n }\n ),\n },\n ],\n i18next.t(\n \"fileManager.selectDirectoryDuplicationMethod\"\n )\n )\n );\n } catch (e) {\n return;\n }\n }\n dispatch(closeAllModals());\n\n // start the download\n dispatch(\n toggleSnackbar(\n \"top\",\n \"center\",\n i18next.t(\"fileManager.directoryDownloadStarted\"),\n \"info\"\n )\n );\n\n const updateLog = (log, done) => {\n dispatch(openDirectoryDownloadDialog(true, log, done));\n };\n let log = \"\";\n\n while (queue.length > 0) {\n const next = queue.pop();\n if (next && next.type === \"file\") {\n // donload url\n const previewPath = getPreviewPath(next);\n const url =\n getBaseURL() +\n (pathHelper.isSharePage(location.pathname)\n ? \"/share/preview/\" +\n share.key +\n (previewPath !== \"\" ? \"?path=\" + previewPath : \"\")\n : \"/file/preview/\" + next.id);\n\n // path to save this file\n // path: / or /abc (no sep suffix)\n // next.path: /abc/d (no sep suffix)\n // name: d/e.bin\n const name = trimPrefix(\n pathJoin([next.path, next.name]),\n path === \"/\" ? \"/\" : path + \"/\"\n );\n // TODO: improve the display of log\n // can we turn the upload queue component to the transition queue?\n // then we can easily cancel or retry the download\n // and the batch download queue can show as well.\n log =\n (log === \"\" ? \"\" : log + \"\\n\\n\") +\n i18next.t(\"modals.directoryDownloadStarted\", { name });\n updateLog(log, false);\n try {\n if (duplicates.includes(name)) {\n if (option.key === \"skip\") {\n log +=\n \"\\n\" +\n i18next.t(\n \"modals.directoryDownloadSkipNotifiction\",\n {\n name,\n }\n );\n updateLog(log, false);\n continue;\n } else {\n log +=\n \"\\n\" +\n i18next.t(\n \"modals.directoryDownloadReplaceNotifiction\",\n {\n name,\n }\n );\n updateLog(log, false);\n }\n }\n\n // TODO: need concurrent task queue?\n const res = await fetch(url, {\n cache: \"no-cache\",\n signal: directoryDownloadAbortController.signal,\n });\n await saveFileToFileSystemDirectory(\n handle,\n await res.blob(),\n name\n );\n log += \"\\n\" + i18next.t(\"modals.directoryDownloadFinished\");\n updateLog(log, false);\n } catch (e) {\n if (e.name === \"AbortError\") {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"modals.directoryDownloadCancelled\"),\n \"warning\"\n )\n );\n log +=\n \"\\n\\n\" +\n i18next.t(\"modals.directoryDownloadCancelled\");\n updateLog(log, true);\n return;\n }\n\n failed++;\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\n \"modals.directoryDownloadErrorNotification\",\n {\n name,\n msg: e && e.message,\n }\n ),\n \"warning\"\n )\n );\n log +=\n \"\\n\" +\n i18next.t(\"modals.directoryDownloadError\", {\n msg: e.message,\n });\n updateLog(log, false);\n }\n }\n }\n log +=\n \"\\n\" +\n (failed === 0\n ? i18next.t(\"fileManager.directoryDownloadFinished\")\n : i18next.t(\"fileManager.directoryDownloadFinishedWithError\", {\n failed,\n }));\n updateLog(log, true);\n\n dispatch(\n toggleSnackbar(\n \"top\",\n \"center\",\n failed === 0\n ? i18next.t(\"fileManager.directoryDownloadFinished\")\n : i18next.t(\n \"fileManager.directoryDownloadFinishedWithError\",\n {\n failed,\n }\n ),\n \"success\"\n )\n );\n };\n};\n\nexport const getViewerURL = (\n viewer: string,\n file: any,\n isShare: boolean | \"\"\n): string => {\n const previewPath = getPreviewPath(file);\n if (isShare) {\n return (\n \"/s/\" +\n file.key +\n `/${viewer}?name=` +\n encodeURIComponent(file.name) +\n \"&share_path=\" +\n previewPath\n );\n }\n\n return `/${viewer}?p=` + previewPath + \"&id=\" + file.id;\n};\n\nexport const openViewer = (\n viewer: string,\n file: any,\n isShare: boolean | \"\"\n) => {\n return (dispatch: any, getState: any) => {\n dispatch(push(getViewerURL(viewer, file, isShare)));\n };\n};\n\nexport const openPreview = (share: any) => {\n return (dispatch: any, getState: any) => {\n const {\n explorer: { selected },\n router: {\n location: { pathname },\n },\n } = getState();\n const isShare = pathHelper.isSharePage(pathname);\n if (isShare) {\n const user = Auth.GetUser();\n if (!Auth.Check() && user && !user.group.shareDownload) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"share.pleaseLogin\"),\n \"warning\"\n )\n );\n dispatch(changeContextMenu(\"file\", false));\n return;\n }\n }\n\n dispatch(changeContextMenu(\"file\", false));\n switch (isPreviewable(selected[0].name)) {\n case \"img\":\n dispatch(showImgPreivew(selected[0]));\n return;\n case \"msDoc\":\n dispatch(openViewer(\"doc\", selected[0], isShare));\n return;\n case \"audio\":\n dispatch(showAudioPreview(selected[0]));\n return;\n case \"video\":\n dispatch(openViewer(\"video\", selected[0], isShare));\n return;\n case \"pdf\":\n dispatch(openViewer(\"pdf\", selected[0], isShare));\n return;\n case \"edit\":\n dispatch(openViewer(\"text\", selected[0], isShare));\n return;\n case \"code\":\n dispatch(openViewer(\"code\", selected[0], isShare));\n return;\n case \"epub\":\n dispatch(openViewer(\"epub\", selected[0], isShare));\n return;\n default:\n dispatch(startDownload(share, selected[0]));\n return;\n }\n };\n};\nexport const selectFile = (file: any, event: any, fileIndex: any) => {\n const { ctrlKey, metaKey, shiftKey } = event;\n return (dispatch: any, getState: any) => {\n // 多种组合操作忽略\n if (\n [ctrlKey, shiftKey].filter(Boolean).length > 1 ||\n [metaKey, shiftKey].filter(Boolean).length > 1\n ) {\n return;\n }\n const isMacbook = isMac();\n const { explorer } = getState();\n const { selected, lastSelect, dirList, fileList, shiftSelectedIds } =\n explorer;\n if (shiftKey && !ctrlKey && !metaKey && selected.length !== 0) {\n // shift 多选\n // 取消原有选择\n dispatch(removeSelectedTargets(selected.map((v: any) => v.id)));\n const all = [...dirList, ...fileList];\n // 添加新选择\n const begin = Math.min(lastSelect.index, fileIndex);\n const end = Math.max(lastSelect.index, fileIndex);\n const list = file.type === \"dir\" ? dirList : fileList;\n const newShiftSelected = all.slice(begin, end + 1);\n return dispatch(addSelectedTargets(newShiftSelected));\n }\n dispatch(setLastSelect(file, fileIndex));\n dispatch(setShiftSelectedIds([]));\n if ((ctrlKey && !isMacbook) || (metaKey && isMacbook)) {\n // Ctrl/Command 单击添加/删除\n const presentIndex = selected.findIndex((value: any) => {\n return value.id === file.id;\n });\n if (presentIndex !== -1) {\n return dispatch(removeSelectedTargets([file.id]));\n }\n return dispatch(addSelectedTargets([file]));\n }\n // 单选\n return dispatch(setSelectedTarget([file]));\n };\n};\n\nexport const submitCompressTask = (fileName: string, path: string) => {\n return async (dispatch: any, getState: any) => {\n const {\n explorer: { selected },\n } = getState();\n const dirs: string[] = [],\n items: string[] = [];\n // eslint-disable-next-line\n selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n\n return await API.post(\"/file/compress\", {\n src: {\n dirs: dirs,\n items: items,\n },\n name: fileName,\n dst: path === \"//\" ? \"/\" : path,\n });\n };\n};\n\nconst encodings = [\n \"ibm866\",\n \"iso8859_2\",\n \"iso8859_3\",\n \"iso8859_4\",\n \"iso8859_5\",\n \"iso8859_6\",\n \"iso8859_7\",\n \"iso8859_8\",\n \"iso8859_8I\",\n \"iso8859_10\",\n \"iso8859_13\",\n \"iso8859_14\",\n \"iso8859_15\",\n \"iso8859_16\",\n \"koi8r\",\n \"koi8u\",\n \"macintosh\",\n \"windows874\",\n \"windows1250\",\n \"windows1251\",\n \"windows1252\",\n \"windows1253\",\n \"windows1254\",\n \"windows1255\",\n \"windows1256\",\n \"windows1257\",\n \"windows1258\",\n \"macintoshcyrillic\",\n \"gbk\",\n \"big5\",\n \"eucjp\",\n \"iso2022jp\",\n \"shiftjis\",\n \"euckr\",\n \"utf16be\",\n \"utf16le\",\n];\n\nexport const submitDecompressTask = (path: string) => {\n return async (dispatch: any, getState: any) => {\n const {\n explorer: { selected },\n } = getState();\n\n let encoding = \"\";\n if (selected.length > 0 && encodingRequired(selected[0].name)) {\n let option: any;\n try {\n const allOptions = encodings.map((e) => {\n return {\n key: e,\n name: e.toUpperCase(),\n };\n });\n option = await dispatch(\n askForOption(\n [\n {\n key: \"\",\n name: i18next.t(\"modals.defaultEncoding\"),\n },\n {\n key: \"gb18030\",\n name: \"GB18030\",\n description: i18next.t(\n \"modals.chineseMajorEncoding\"\n ),\n },\n ...allOptions,\n ],\n i18next.t(\"modals.selectEncoding\")\n )\n );\n } catch (e) {\n throw new Error(i18next.t(\"modals.noEncodingSelected\"));\n }\n\n encoding = option.key;\n }\n\n return await API.post(\"/file/decompress\", {\n src: filePath(selected[0]),\n dst: path === \"//\" ? \"/\" : path,\n encoding: encoding,\n });\n };\n};\n\nexport const batchGetSource = (): ThunkAction => {\n return async (dispatch, getState): Promise => {\n const {\n explorer: { selected },\n router: {\n location: { pathname },\n },\n } = getState();\n\n if (selected.findIndex((f) => f.type === \"dir\") >= 0) {\n dispatch(openLoadingDialog(i18next.t(\"modals.listingFiles\")));\n }\n\n let queue: CloudreveFile[] = [];\n try {\n queue = await walk(selected, null);\n } catch (e) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"modals.listingFileError\", {\n message: e.message,\n }),\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n dispatch(openLoadingDialog(i18next.t(\"modals.generatingSourceLinks\")));\n\n const items = queue\n .filter((value) => value.source_enabled && value.type === \"file\")\n .map((v) => v.id);\n\n if (items.length === 0) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"modals.noFileCanGenerateSourceLink\"),\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n const user = Auth.GetUser();\n if (items.length > user.group.sourceBatch) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n i18next.t(\"modals.sourceBatchSizeExceeded\", {\n limit: user.group.sourceBatch,\n }),\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n API.post(\"/file/source\", { items: items })\n .then((response) => {\n dispatch(closeAllModals());\n if (response.data.length == 1 && response.data[0].error) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n response.data[0].error,\n \"warning\"\n )\n );\n return;\n }\n\n dispatch(\n openGetSourceDialog(\n response.data.length == 1\n ? response.data[0].url\n : response.data\n .map(\n (res) =>\n `${res.name}: ${res.url}${\n res.error ? res.error : \"\"\n }`\n )\n .join(\"\\n\")\n )\n );\n })\n .catch((error) => {\n dispatch(\n toggleSnackbar(\"top\", \"right\", error.message, \"warning\")\n );\n dispatch(closeAllModals());\n });\n };\n};\n\nexport const openTorrentDownload = (): ThunkAction => {\n return (dispatch, getState): void => {\n const {\n explorer: { selected },\n } = getState();\n dispatch(openTorrentDownloadDialog(selected[0]));\n };\n};\n\nexport const openParentFolder = (): ThunkAction => {\n return async (dispatch, getState): Promise => {\n const {\n explorer: { selected },\n } = getState();\n\n dispatch(openLoadingDialog(i18next.t(\"modals.processing\")));\n API.get(\n \"/object/property/\" +\n selected[0].id +\n \"?trace_root=true&is_folder=\" +\n (selected[0].type === \"dir\").toString()\n )\n .then((response) => {\n const path =\n response.data.path === \"\"\n ? selected[0].path\n : response.data.path;\n dispatch(navigateTo(path));\n dispatch(closeAllModals());\n })\n .catch((error) => {\n dispatch(\n toggleSnackbar(\"top\", \"right\", error.message, \"warning\")\n );\n dispatch(closeAllModals());\n });\n };\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport {\n AccountArrowRight,\n AccountPlus,\n DesktopMacDashboard,\n HomeAccount,\n LogoutVariant,\n} from \"mdi-material-ui\";\nimport { withRouter } from \"react-router-dom\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n Avatar,\n Chip,\n Divider,\n ListItemIcon,\n MenuItem,\n Popover,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport pathHelper from \"../../utils/page\";\nimport {\n setSessionStatus,\n setUserPopover,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { withTranslation } from \"react-i18next\";\n\nconst mapStateToProps = (state) => {\n return {\n anchorEl: state.viewUpdate.userPopoverAnchorEl,\n registerEnabled: state.siteConfig.registerEnabled,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n setSessionStatus: (status) => {\n dispatch(setSessionStatus(status));\n },\n };\n};\nconst styles = () => ({\n avatar: {\n width: \"30px\",\n height: \"30px\",\n },\n header: {\n display: \"flex\",\n padding: \"20px 20px 20px 20px\",\n },\n largeAvatar: {\n height: \"90px\",\n width: \"90px\",\n },\n info: {\n marginLeft: \"10px\",\n width: \"139px\",\n },\n badge: {\n marginTop: \"10px\",\n },\n visitorMenu: {\n width: 200,\n },\n});\n\nclass UserAvatarPopoverCompoment extends Component {\n handleClose = () => {\n this.props.setUserPopover(null);\n };\n\n openURL = (url) => {\n window.location.href = url;\n };\n\n sigOut = () => {\n API.delete(\"/user/session/\")\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"login.loggedOut\"),\n \"success\"\n );\n Auth.signout();\n window.location.reload();\n this.props.setSessionStatus(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"warning\"\n );\n })\n .then(() => {\n this.handleClose();\n });\n };\n\n render() {\n const { classes, t } = this.props;\n const user = Auth.GetUser();\n const isAdminPage = pathHelper.isAdminPage(\n this.props.location.pathname\n );\n\n return (\n \n {!Auth.Check() && (\n
\n \n this.props.history.push(\"/login\")}\n >\n \n \n \n {t(\"login.signIn\")}\n \n {this.props.registerEnabled && (\n \n this.props.history.push(\"/signup\")\n }\n >\n \n \n \n {t(\"login.signUp\")}\n \n )}\n
\n )}\n {Auth.Check() && (\n
\n
\n
\n \n
\n
\n {user.nickname}\n \n {user.user_name}\n \n \n
\n
\n
\n \n {!isAdminPage && (\n {\n this.handleClose();\n this.props.history.push(\n \"/profile/\" + user.id\n );\n }}\n >\n \n \n \n {t(\"navbar.myProfile\")}\n \n )}\n {user.group.id === 1 && (\n {\n this.handleClose();\n this.props.history.push(\"/admin/home\");\n }}\n >\n \n \n \n {t(\"navbar.dashboard\")}\n \n )}\n\n \n \n \n \n {t(\"login.logout\")}\n \n
\n
\n )}\n \n );\n }\n}\n\nUserAvatarPopoverCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserAvatarPopover = connect(\n mapStateToProps,\n mapDispatchToProps\n)(\n withStyles(styles)(\n withRouter(withTranslation()(UserAvatarPopoverCompoment))\n )\n);\n\nexport default UserAvatarPopover;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport SettingIcon from \"@material-ui/icons/Settings\";\nimport UserAvatarPopover from \"./UserAvatarPopover\";\nimport { AccountCircle } from \"mdi-material-ui\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n Avatar,\n Grow,\n IconButton,\n Tooltip,\n withStyles,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\nimport PolicySwitcher from \"./PolicySwitcher\";\nimport { Home } from \"@material-ui/icons\";\nimport { setUserPopover } from \"../../redux/explorer\";\nimport { withTranslation } from \"react-i18next\";\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n };\n};\n\nconst styles = (theme) => ({\n mobileHidden: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n whiteSpace: \"nowrap\",\n },\n avatar: {\n width: \"30px\",\n height: \"30px\",\n },\n header: {\n display: \"flex\",\n padding: \"20px 20px 20px 20px\",\n },\n largeAvatar: {\n height: \"90px\",\n width: \"90px\",\n },\n info: {\n marginLeft: \"10px\",\n width: \"139px\",\n },\n badge: {\n marginTop: \"10px\",\n },\n visitorMenu: {\n width: 200,\n },\n});\n\nclass UserAvatarCompoment extends Component {\n state = {\n anchorEl: null,\n };\n\n showUserInfo = (e) => {\n this.props.setUserPopover(e.currentTarget);\n };\n\n handleClose = () => {\n this.setState({\n anchorEl: null,\n });\n };\n\n openURL = (url) => {\n window.location.href = url;\n };\n\n returnHome = () => {\n window.location.href = \"/home\";\n };\n\n render() {\n const { classes, t } = this.props;\n const loginCheck = Auth.Check(this.props.isLogin);\n const user = Auth.GetUser(this.props.isLogin);\n const isAdminPage = pathHelper.isAdminPage(\n this.props.location.pathname\n );\n\n return (\n
\n \n
\n {!isAdminPage && (\n <>\n \n {loginCheck && (\n <>\n \n \n \n this.props.history.push(\n \"/setting?\"\n )\n }\n color=\"inherit\"\n >\n \n \n \n \n )}\n \n )}\n {isAdminPage && (\n \n \n \n \n \n )}\n \n {!loginCheck && }\n {loginCheck && (\n \n )}\n {\" \"}\n
\n \n \n
\n );\n }\n}\n\nUserAvatarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserAvatar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(UserAvatarCompoment))));\n\nexport default UserAvatar;\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\nimport { connect } from \"react-redux\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport MusicNote from \"@material-ui/icons/MusicNote\";\r\nimport BackIcon from \"@material-ui/icons/ArrowBack\";\r\nimport SdStorage from \"@material-ui/icons/SdStorage\";\r\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\r\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\r\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\r\nimport MoveIcon from \"@material-ui/icons/Input\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport { isPreviewable } from \"../../config\";\r\nimport { changeThemeColor, sizeToString, vhCheck } from \"../../utils\";\r\nimport Uploader from \"../Uploader/Uploader.js\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport SezrchBar from \"./SearchBar\";\r\nimport StorageBar from \"./StorageBar\";\r\nimport UserAvatar from \"./UserAvatar\";\r\nimport UserInfo from \"./UserInfo\";\r\nimport {\r\n FolderDownload,\r\n AccountArrowRight,\r\n AccountPlus,\r\n LogoutVariant,\r\n} from \"mdi-material-ui\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport {\r\n AppBar,\r\n Drawer,\r\n Grow,\r\n Hidden,\r\n IconButton,\r\n List,\r\n ListItemIcon,\r\n ListItemText,\r\n SwipeableDrawer,\r\n Toolbar,\r\n Tooltip,\r\n Typography,\r\n withStyles,\r\n withTheme\r\n} from \"@material-ui/core\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport API from \"../../middleware/Api\";\r\nimport FileTag from \"./FileTags\";\r\nimport { Assignment, Devices, MoreHoriz, Settings, Image, Group } from \"@material-ui/icons\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport SubActions from \"../FileManager/Navigator/SubActions\";\r\nimport {\r\n audioPreviewSetIsOpen,\r\n changeContextMenu,\r\n drawerToggleAction,\r\n navigateTo,\r\n openCreateFolderDialog,\r\n openLoadingDialog,\r\n openMoveDialog,\r\n openMusicDialog,\r\n openPreview,\r\n openRemoveDialog,\r\n openRenameDialog,\r\n openShareDialog,\r\n saveFile,\r\n setSelectedTarget,\r\n setSessionStatus,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport {\r\n startBatchDownload,\r\n startDirectoryDownload,\r\n startDownload,\r\n} from \"../../redux/explorer/action\";\r\nimport PolicySwitcher from \"./PolicySwitcher\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport MuiListItem from \"@material-ui/core/ListItem\";\r\nimport SupervisedUserCircle from \"@material-ui/icons/SupervisedUserCircle\";\r\n\r\nvhCheck();\r\nconst drawerWidth = 240;\r\nconst drawerWidthMobile = 270;\r\n\r\nconst ListItem = withStyles((theme) => ({\r\n root: {\r\n borderRadius:theme.shape.borderRadius,\r\n },\r\n}))(MuiListItem);\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n desktopOpen: state.viewUpdate.open,\r\n selected: state.explorer.selected,\r\n isMultiple: state.explorer.selectProps.isMultiple,\r\n withFolder: state.explorer.selectProps.withFolder,\r\n withFile: state.explorer.selectProps.withFile,\r\n path: state.navigator.path,\r\n title: state.siteConfig.title,\r\n subTitle: state.viewUpdate.subTitle,\r\n loadUploader: state.viewUpdate.loadUploader,\r\n isLogin: state.viewUpdate.isLogin,\r\n shareInfo: state.viewUpdate.shareInfo,\r\n registerEnabled: state.siteConfig.registerEnabled,\r\n audioPreviewPlayingName: state.explorer.audioPreview.playingName,\r\n audioPreviewIsOpen: state.explorer.audioPreview.isOpen,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n handleDesktopToggle: (open) => {\r\n dispatch(drawerToggleAction(open));\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n navigateTo: (path) => {\r\n dispatch(navigateTo(path));\r\n },\r\n openCreateFolderDialog: () => {\r\n dispatch(openCreateFolderDialog());\r\n },\r\n changeContextMenu: (type, open) => {\r\n dispatch(changeContextMenu(type, open));\r\n },\r\n saveFile: () => {\r\n dispatch(saveFile());\r\n },\r\n openMusicDialog: () => {\r\n dispatch(openMusicDialog());\r\n },\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n openRenameDialog: () => {\r\n dispatch(openRenameDialog());\r\n },\r\n openMoveDialog: () => {\r\n dispatch(openMoveDialog());\r\n },\r\n openRemoveDialog: () => {\r\n dispatch(openRemoveDialog());\r\n },\r\n openShareDialog: () => {\r\n dispatch(openShareDialog());\r\n },\r\n openLoadingDialog: (text) => {\r\n dispatch(openLoadingDialog(text));\r\n },\r\n setSessionStatus: () => {\r\n dispatch(setSessionStatus());\r\n },\r\n openPreview: (share) => {\r\n dispatch(openPreview(share));\r\n },\r\n audioPreviewOpen: () => {\r\n dispatch(audioPreviewSetIsOpen(true));\r\n },\r\n startBatchDownload: (share) => {\r\n dispatch(startBatchDownload(share));\r\n },\r\n startDirectoryDownload: (share) => {\r\n dispatch(startDirectoryDownload(share));\r\n },\r\n startDownload: (share, file) => {\r\n dispatch(startDownload(share, file));\r\n },\r\n };\r\n};\r\n\r\nconst styles = (theme) => ({\r\n appBar: {\r\n marginLeft: drawerWidth,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginLeft: drawerWidthMobile,\r\n },\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: \" background-color 250ms\",\r\n },\r\n\r\n drawer: {\r\n width: 0,\r\n flexShrink: 0,\r\n },\r\n drawerDesktop: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n icon: {\r\n marginRight: theme.spacing(2),\r\n },\r\n menuButton: {\r\n marginRight: 20,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n menuButtonDesktop: {\r\n marginRight: 20,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n menuIcon: {\r\n marginRight: 20,\r\n },\r\n toolbar: theme.mixins.toolbar,\r\n drawerPaper: {\r\n width: drawerWidthMobile,\r\n },\r\n drawerPaperDesktop: {\r\n width: drawerWidth,\r\n },\r\n upDrawer: {\r\n overflowX: \"hidden\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: \"100%\",\r\n justifyContent: \"space-between\",\r\n },\r\n },\r\n drawerOpen: {\r\n width: drawerWidth,\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n drawerClose: {\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: \"hidden\",\r\n width: 0,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n badge: {\r\n top: 1,\r\n right: -15,\r\n },\r\n nested: {\r\n paddingLeft: theme.spacing(4),\r\n },\r\n sectionForFile: {\r\n display: \"flex\",\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n addButton: {\r\n marginLeft: \"40px\",\r\n marginTop: \"25px\",\r\n marginBottom: \"15px\",\r\n },\r\n fabButton: {\r\n borderRadius: \"100px\",\r\n },\r\n badgeFix: {\r\n right: \"10px\",\r\n },\r\n iconFix: {\r\n marginLeft: \"16px\",\r\n },\r\n dividerFix: {\r\n marginTop: \"8px\",\r\n },\r\n folderShareIcon: {\r\n verticalAlign: \"sub\",\r\n marginRight: \"5px\",\r\n },\r\n shareInfoContainer: {\r\n display: \"flex\",\r\n marginTop: \"15px\",\r\n marginBottom: \"20px\",\r\n marginLeft: \"28px\",\r\n textDecoration: \"none\",\r\n },\r\n shareAvatar: {\r\n width: \"40px\",\r\n height: \"40px\",\r\n },\r\n stickFooter: {\r\n bottom: \"0px\",\r\n position: \"absolute\",\r\n backgroundColor: theme.palette.background.paper,\r\n width: \"100%\",\r\n },\r\n ownerInfo: {\r\n marginLeft: \"10px\",\r\n width: \"150px\",\r\n },\r\n minStickDrawer: {\r\n overflowY: \"auto\",\r\n },\r\n paddingList:{\r\n padding:theme.spacing(1),\r\n }\r\n});\r\nclass NavbarCompoment extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n mobileOpen: false,\r\n };\r\n this.UploaderRef = React.createRef();\r\n }\r\n\r\n UNSAFE_componentWillMount() {\r\n this.unlisten = this.props.history.listen(() => {\r\n this.setState(() => ({ mobileOpen: false }));\r\n });\r\n }\r\n componentWillUnmount() {\r\n this.unlisten();\r\n }\r\n\r\n componentDidMount = () => {\r\n changeThemeColor(\r\n this.props.selected.length <= 1 &&\r\n !(!this.props.isMultiple && this.props.withFile)\r\n ? this.props.theme.palette.primary.main\r\n : this.props.theme.palette.background.default\r\n );\r\n };\r\n\r\n UNSAFE_componentWillReceiveProps = (nextProps) => {\r\n if (\r\n (this.props.selected.length === 0) !==\r\n (nextProps.selected.length === 0)\r\n ) {\r\n changeThemeColor(\r\n !(this.props.selected.length === 0)\r\n ? this.props.theme.palette.type === \"dark\"\r\n ? this.props.theme.palette.background.default\r\n : this.props.theme.palette.primary.main\r\n : this.props.theme.palette.background.default\r\n );\r\n }\r\n };\r\n\r\n handleDrawerToggle = () => {\r\n this.setState((state) => ({ mobileOpen: !state.mobileOpen }));\r\n };\r\n\r\n openDownload = () => {\r\n this.props.startDownload(this.props.shareInfo, this.props.selected[0]);\r\n };\r\n\r\n openDirectoryDownload = (e) => {\r\n this.props.startDirectoryDownload(this.props.shareInfo);\r\n };\r\n\r\n archiveDownload = (e) => {\r\n this.props.startBatchDownload(this.props.shareInfo);\r\n };\r\n\r\n signOut = () => {\r\n API.delete(\"/user/session/\")\r\n .then(() => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"login.loggedOut\"),\r\n \"success\"\r\n );\r\n Auth.signout();\r\n window.location.reload();\r\n this.props.setSessionStatus(false);\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"warning\"\r\n );\r\n })\r\n .finally(() => {\r\n this.handleClose();\r\n });\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const user = Auth.GetUser(this.props.isLogin);\r\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\r\n const isSharePage = pathHelper.isSharePage(\r\n this.props.location.pathname\r\n );\r\n\r\n const drawer = (\r\n
\r\n {pathHelper.isMobile() && }\r\n\r\n {Auth.Check(this.props.isLogin) && (\r\n <>\r\n
\r\n \r\n \r\n \r\n this.props.history.push(\"/shares?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {user.group.allowRemoteDownload && (\r\n \r\n this.props.history.push(\"/aria2?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n this.props.history.push(\"/quota?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.props.history.push(\"/connect?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.props.history.push(\"/tasks?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.props.history.push(\"/buy?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n window.open(\"https://www.06dn.com/img/\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n window.open(\"https://www.06dn.com/qqgroup/\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n {pathHelper.isMobile() && (\r\n <>\r\n \r\n \r\n this.props.history.push(\r\n \"/setting?\"\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n\r\n {!Auth.Check(this.props.isLogin) && (\r\n
\r\n this.props.history.push(\"/login\")}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {this.props.registerEnabled && (\r\n \r\n this.props.history.push(\"/signup\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n const iOS =\r\n process.browser && /iPad|iPhone|iPod/.test(navigator.userAgent);\r\n return (\r\n
\r\n \r\n \r\n {this.props.selected.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n {this.props.selected.length === 0 && (\r\n \r\n this.props.handleDesktopToggle(\r\n !this.props.desktopOpen\r\n )\r\n }\r\n className={classes.menuButtonDesktop}\r\n >\r\n \r\n \r\n )}\r\n {this.props.selected.length > 0 &&\r\n (isHomePage ||\r\n pathHelper.isSharePage(\r\n this.props.location.pathname\r\n )) && (\r\n 0}>\r\n \r\n this.props.setSelectedTarget([])\r\n }\r\n >\r\n \r\n \r\n \r\n )}\r\n {this.props.selected.length === 0 && (\r\n {\r\n this.props.history.push(\"/\");\r\n }}\r\n >\r\n {this.props.subTitle\r\n ? this.props.subTitle\r\n : this.props.title}\r\n \r\n )}\r\n\r\n {!this.props.isMultiple &&\r\n (this.props.withFile || this.props.withFolder) &&\r\n !pathHelper.isMobile() && (\r\n \r\n {this.props.selected[0].name}{\" \"}\r\n {this.props.withFile &&\r\n (isHomePage ||\r\n pathHelper.isSharePage(\r\n this.props.location.pathname\r\n )) &&\r\n \"(\" +\r\n sizeToString(\r\n this.props.selected[0].size\r\n ) +\r\n \")\"}\r\n \r\n )}\r\n\r\n {this.props.selected.length > 1 &&\r\n !pathHelper.isMobile() && (\r\n \r\n {t(\"navbar.objectsSelected\", {\r\n num: this.props.selected.length,\r\n })}\r\n \r\n )}\r\n {this.props.selected.length === 0 && }\r\n
\r\n {this.props.selected.length > 0 &&\r\n (isHomePage || isSharePage) && (\r\n
\r\n {!this.props.isMultiple &&\r\n this.props.withFile &&\r\n isPreviewable(\r\n this.props.selected[0].name\r\n ) && (\r\n \r\n \r\n \r\n this.props.openPreview(\r\n this.props\r\n .shareInfo\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple &&\r\n this.props.withFile && (\r\n \r\n \r\n \r\n this.openDownload()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {(this.props.isMultiple ||\r\n this.props.withFolder) &&\r\n window.showDirectoryPicker &&\r\n window.isSecureContext && (\r\n \r\n \r\n \r\n this.openDirectoryDownload()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {(this.props.isMultiple ||\r\n this.props.withFolder) && (\r\n \r\n \r\n \r\n this.archiveDownload()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple &&\r\n !pathHelper.isMobile() &&\r\n !isSharePage && (\r\n \r\n \r\n \r\n this.props.openShareDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple && !isSharePage && (\r\n \r\n \r\n \r\n this.props.openRenameDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!isSharePage && (\r\n
\r\n {!pathHelper.isMobile() && (\r\n \r\n \r\n \r\n this.props.openMoveDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n this.props.openRemoveDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n\r\n {pathHelper.isMobile() && (\r\n \r\n \r\n \r\n this.props.changeContextMenu(\r\n \"file\",\r\n true\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n )}\r\n {this.props.selected.length <= 1 &&\r\n !(!this.props.isMultiple && this.props.withFile) &&\r\n this.props.audioPreviewPlayingName != null && (\r\n \r\n \r\n \r\n )}\r\n\r\n {this.props.selected.length === 0 && }\r\n {this.props.selected.length === 0 &&\r\n pathHelper.isMobile() && (\r\n <>\r\n {isHomePage && }\r\n {(isHomePage || this.props.shareInfo) && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n \r\n this.setState(() => ({ mobileOpen: true }))\r\n }\r\n disableDiscovery={iOS}\r\n ModalProps={{\r\n keepMounted: true, // Better open performance on mobile.\r\n }}\r\n >\r\n {drawer}\r\n \r\n \r\n \r\n \r\n
\r\n {drawer}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nNavbarCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n theme: PropTypes.object.isRequired,\r\n};\r\n\r\nconst Navbar = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(\r\n withTheme(\r\n withStyles(styles)(withRouter(withTranslation()(NavbarCompoment)))\r\n )\r\n);\r\n\r\nexport default Navbar;\r\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport { fade } from \"@material-ui/core/styles/colorManipulator\";\nimport FileIcon from \"@material-ui/icons/InsertDriveFile\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport { connect } from \"react-redux\";\n\nimport {\n Fade,\n InputBase,\n ListItemIcon,\n ListItemText,\n MenuItem,\n Paper,\n Popper,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport { configure, HotKeys } from \"react-hotkeys\";\nimport { searchMyFile } from \"../../redux/explorer\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport { Trans, withTranslation } from \"react-i18next\";\n\nconfigure({\n ignoreTags: [],\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n search: state.explorer.search,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n searchMyFile: (keywords, path) => {\n dispatch(searchMyFile(keywords, path));\n },\n };\n};\n\nconst styles = (theme) => ({\n search: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n position: \"relative\",\n borderRadius: theme.shape.borderRadius,\n backgroundColor: fade(theme.palette.common.white, 0.15),\n \"&:hover\": {\n backgroundColor: fade(theme.palette.common.white, 0.25),\n },\n marginRight: theme.spacing(2),\n marginLeft: 0,\n width: \"100%\",\n [theme.breakpoints.up(\"sm\")]: {\n marginLeft: theme.spacing(7.2),\n width: \"auto\",\n },\n },\n searchIcon: {\n width: theme.spacing(9),\n height: \"100%\",\n position: \"absolute\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n inputRoot: {\n color: \"inherit\",\n width: \"100%\",\n },\n inputInput: {\n paddingTop: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n paddingLeft: theme.spacing(7),\n transition: theme.transitions.create(\"width\"),\n width: \"100%\",\n [theme.breakpoints.up(\"md\")]: {\n width: 200,\n \"&:focus\": {\n width: 300,\n },\n },\n },\n suggestBox: {\n zIndex: \"9999\",\n width: 364,\n },\n});\n\nconst keyMap = {\n SEARCH: \"enter\",\n};\n\nclass SearchBarCompoment extends Component {\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n input: \"\",\n };\n }\n\n handlers = {\n SEARCH: (e) => {\n if (pathHelper.isHomePage(this.props.location.pathname)) {\n this.searchMyFile(\"\")();\n } else {\n this.searchShare();\n }\n e.target.blur();\n },\n };\n\n handleChange = (event) => {\n const { currentTarget } = event;\n this.input = event.target.value;\n this.setState({\n anchorEl: currentTarget,\n input: event.target.value,\n });\n };\n\n cancelSuggest = () => {\n this.setState({\n input: \"\",\n });\n };\n\n searchMyFile = (path) => () => {\n this.props.searchMyFile(\"keywords/\" + this.input, path);\n };\n\n searchShare = () => {\n this.props.history.push(\n \"/search?keywords=\" + encodeURIComponent(this.input)\n );\n };\n\n render() {\n const { classes, t } = this.props;\n const { anchorEl } = this.state;\n const id = this.state.input !== \"\" ? \"simple-popper\" : null;\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n\n return (\n
\n
\n \n
\n \n \n \n \n {({ TransitionProps }) => (\n \n \n {isHomePage && (\n \n \n \n \n \n ,\n ]}\n />\n \n }\n />\n \n )}\n\n {isHomePage &&\n this.props.path !== \"/\" &&\n !this.props.search && (\n \n \n \n \n \n ,\n ]}\n />\n \n }\n />\n \n )}\n\n \n \n \n \n \n ,\n ]}\n />\n \n }\n />\n \n \n \n )}\n \n
\n );\n }\n}\n\nSearchBarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst SearchBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(SearchBarCompoment))));\n\nexport default SearchBar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport StorageIcon from \"@material-ui/icons/Storage\";\nimport { connect } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport { sizeToString } from \"../../utils\";\n\nimport {\n Divider,\n LinearProgress,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport ButtonBase from \"@material-ui/core/ButtonBase\";\nimport Link from \"@material-ui/core/Link\";\nimport { withRouter } from \"react-router\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { withTranslation } from \"react-i18next\";\n\nconst mapStateToProps = (state) => {\n return {\n refresh: state.viewUpdate.storageRefresh,\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nconst styles = (theme) => ({\n iconFix: {\n marginLeft: \"32px\",\n marginRight: \"17px\",\n color: theme.palette.text.secondary,\n marginTop: \"2px\",\n },\n textFix: {\n padding: \" 0 0 0 16px\",\n },\n storageContainer: {\n display: \"flex\",\n marginTop: \"15px\",\n textAlign: \"left\",\n marginBottom: \"11px\",\n },\n detail: {\n width: \"100%\",\n marginRight: \"35px\",\n },\n info: {\n width: \"131px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"162px\",\n },\n marginTop: \"5px\",\n },\n bar: {\n marginTop: \"5px\",\n },\n stickFooter: {\n backgroundColor: theme.palette.background.paper,\n },\n});\n\n// TODO 使用 hooks 重构\nclass StorageBarCompoment extends Component {\n state = {\n percent: 0,\n used: null,\n total: null,\n showExpand: false,\n };\n\n firstLoad = true;\n\n componentDidMount = () => {\n if (this.firstLoad && this.props.isLogin) {\n this.firstLoad = !this.firstLoad;\n this.updateStatus();\n }\n };\n\n componentWillUnmount() {\n this.firstLoad = false;\n }\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (\n (this.props.isLogin && this.props.refresh !== nextProps.refresh) ||\n (this.props.isLogin !== nextProps.isLogin && nextProps.isLogin)\n ) {\n this.updateStatus();\n }\n };\n\n updateStatus = () => {\n let percent = 0;\n API.get(\"/user/storage\")\n .then((response) => {\n if (response.data.used / response.data.total >= 1) {\n percent = 100;\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"vas.exceedQuota\"),\n \"warning\"\n );\n } else {\n percent = (response.data.used / response.data.total) * 100;\n }\n this.setState({\n percent: percent,\n used: sizeToString(response.data.used),\n total: sizeToString(response.data.total),\n });\n })\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n .catch(() => {});\n };\n\n render() {\n const { classes, t } = this.props;\n return (\n this.setState({ showExpand: true })}\n onMouseLeave={() => this.setState({ showExpand: false })}\n className={classes.stickFooter}\n >\n \n this.props.history.push(\"/quota\")}>\n
\n \n
\n \n {t(\"navbar.storage\") + \" \"}\n {this.state.showExpand && (\n \n {t(\"vas.extendStorage\")}\n \n )}\n \n\n \n
\n \n \n {this.state.used === null\n ? \" -- \"\n : this.state.used}\n {\" / \"}\n {this.state.total === null\n ? \" -- \"\n : this.state.total}\n \n \n
\n
\n
\n
\n
\n );\n }\n}\n\nStorageBarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst StorageBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(StorageBarCompoment))));\n\nexport default StorageBar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { Typography, withStyles } from \"@material-ui/core\";\nimport Auth from \"../../middleware/Auth\";\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport { setUserPopover } from \"../../redux/explorer\";\nimport { withTranslation } from \"react-i18next\";\n\nconst mapStateToProps = (state) => {\n return {\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n };\n};\n\nconst styles = (theme) => ({\n userNav: {\n height: \"170px\",\n backgroundColor: theme.palette.primary.main,\n padding: \"20px 20px 2em\",\n backgroundImage:\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 900'%3E%3Cpolygon fill='\" +\n theme.palette.primary.light.replace(\"#\", \"%23\") +\n \"' points='957 450 539 900 1396 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\n \"' points='957 450 872.9 900 1396 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='-60 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='337 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\n \"' points='1203 546 1552 900 876 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='1203 546 1552 900 1162 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\n \"' points='641 695 886 900 367 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.main.replace(\"#\", \"%23\") +\n \"' points='587 900 641 695 886 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\n \"' points='1710 900 1401 632 1096 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='1710 900 1401 632 1365 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='1210 900 971 687 725 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='943 900 1210 900 971 687'/%3E%3C/svg%3E\\\")\",\n backgroundSize: \"cover\",\n },\n avatar: {\n display: \"block\",\n width: \"70px\",\n height: \"70px\",\n border: \" 2px solid #fff\",\n borderRadius: \"50%\",\n overflow: \"hidden\",\n boxShadow:\n \"0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12)\",\n },\n avatarImg: {\n width: \"66px\",\n height: \"66px\",\n },\n nickName: {\n color: \"#fff\",\n marginTop: \"15px\",\n fontSize: \"17px\",\n },\n flexAvatar: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n },\n groupName: {\n color: \"#ffffff\",\n opacity: \"0.54\",\n },\n storageCircle: {\n width: \"200px\",\n },\n});\n\nclass UserInfoCompoment extends Component {\n showUserInfo = (e) => {\n this.props.setUserPopover(e.currentTarget);\n };\n\n render() {\n const { classes, t } = this.props;\n const isLogin = Auth.Check(this.props.isLogin);\n const user = Auth.GetUser(this.props.isLogin);\n\n return (\n
\n
\n {/* eslint-disable-next-line */}\n \n {isLogin && (\n \n )}\n {!isLogin && (\n \n )}\n \n \n
\n
\n \n {isLogin ? user.nickname : t(\"navbar.notLoginIn\")}\n \n \n {isLogin ? user.group.name : t(\"navbar.visitor\")}\n \n
\n
\n );\n }\n}\n\nUserInfoCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserInfo = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withTranslation()(UserInfoCompoment)));\n\nexport default UserInfo;\n","import React, { Suspense, useCallback, useState } from \"react\";\nimport {\n Divider,\n List,\n ListItemIcon,\n ListItemText,\n makeStyles,\n withStyles,\n} from \"@material-ui/core\";\nimport { Clear, KeyboardArrowRight } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport FolderShared from \"@material-ui/icons/FolderShared\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport VideoIcon from \"@material-ui/icons/VideoLibraryOutlined\";\nimport ImageIcon from \"@material-ui/icons/CollectionsOutlined\";\nimport MusicIcon from \"@material-ui/icons/LibraryMusicOutlined\";\nimport DocIcon from \"@material-ui/icons/FileCopyOutlined\";\nimport { useHistory, useLocation } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport MuiListItem from \"@material-ui/core/ListItem\";\nimport { useDispatch } from \"react-redux\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n Circle,\n CircleOutline,\n FolderHeartOutline,\n Heart,\n HeartOutline,\n Hexagon,\n HexagonOutline,\n Hexagram,\n HexagramOutline,\n Rhombus,\n RhombusOutline,\n Square,\n SquareOutline,\n TagPlus,\n Triangle,\n TriangleOutline,\n} from \"mdi-material-ui\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport API from \"../../middleware/Api\";\nimport { navigateTo, searchMyFile, toggleSnackbar } from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ListItem = withStyles((theme) => ({\n root: {\n borderRadius:theme.shape.borderRadius,\n },\n}))(MuiListItem);\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": { margin: 0 },\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles((theme) =>({\n root: {\n minHeight: 0,\n padding: 0,\n \"&$expanded\": {\n minHeight: 0,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"block\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n}))(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n expand: {\n display: \"none\",\n transition: \".15s all ease-in-out\",\n },\n expanded: {\n display: \"block\",\n transform: \"rotate(90deg)\",\n },\n iconFix: {\n marginLeft: \"16px\",\n },\n hiddenButton: {\n display: \"none\",\n },\n subMenu: {\n marginLeft: theme.spacing(2),\n },\n overFlow: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n paddingList:{\n padding:theme.spacing(1),\n },\n paddingSummary:{\n paddingLeft:theme.spacing(1),\n paddingRight:theme.spacing(1),\n }\n}));\n\nconst icons = {\n Circle: Circle,\n CircleOutline: CircleOutline,\n Heart: Heart,\n HeartOutline: HeartOutline,\n Hexagon: Hexagon,\n HexagonOutline: HexagonOutline,\n Hexagram: Hexagram,\n HexagramOutline: HexagramOutline,\n Rhombus: Rhombus,\n RhombusOutline: RhombusOutline,\n Square: Square,\n SquareOutline: SquareOutline,\n Triangle: Triangle,\n TriangleOutline: TriangleOutline,\n FolderHeartOutline: FolderHeartOutline,\n};\n\nconst AddTag = React.lazy(() => import(\"../Modals/AddTag\"));\n\nexport default function FileTag() {\n const classes = useStyles();\n const { t } = useTranslation();\n\n const location = useLocation();\n const history = useHistory();\n\n const isHomePage = pathHelper.isHomePage(location.pathname);\n\n const [tagOpen, setTagOpen] = useState(true);\n const [addTagModal, setAddTagModal] = useState(false);\n const [tagHover, setTagHover] = useState(null);\n const [tags, setTags] = useState(\n Auth.GetUser().tags ? Auth.GetUser().tags : []\n );\n\n const dispatch = useDispatch();\n const SearchMyFile = useCallback((k, p) => dispatch(searchMyFile(k, p)), [\n dispatch,\n ]);\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const getIcon = (icon, color) => {\n if (icons[icon]) {\n const IconComponent = icons[icon];\n return (\n \n );\n }\n return ;\n };\n\n const submitSuccess = (tag) => {\n const newTags = [...tags, tag];\n setTags(newTags);\n const user = Auth.GetUser();\n user.tags = newTags;\n Auth.SetUser(user);\n };\n\n const submitDelete = (id) => {\n API.delete(\"/tag/\" + id)\n .then(() => {\n const newTags = tags.filter((v) => {\n return v.id !== id;\n });\n setTags(newTags);\n const user = Auth.GetUser();\n user.tags = newTags;\n Auth.SetUser(user);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n return (\n <>\n \n setAddTagModal(false)}\n />\n \n isHomePage && setTagOpen(!tagOpen)}\n >\n \n
\n \n !isHomePage && history.push(\"/home?path=%2F\")\n }\n >\n \n \n {!(tagOpen && isHomePage) && (\n \n )}\n \n \n \n
\n\n \n \n\n \n setTagHover(null)}>\n \n \n \n \n \n \n \n \n \n \n \n \n {[\n {\n key: t(\"navbar.videos\"),\n id: \"video\",\n icon: (\n \n ),\n },\n {\n key: t(\"navbar.photos\"),\n id: \"image\",\n icon: (\n \n ),\n },\n {\n key: t(\"navbar.music\"),\n id: \"audio\",\n icon: (\n \n ),\n },\n {\n key: t(\"navbar.documents\"),\n id: \"doc\",\n icon: (\n \n ),\n },\n ].map((v) => (\n \n SearchMyFile(v.id + \"/internal\", \"\")\n }\n >\n \n {v.icon}\n \n \n \n ))}\n {tags.map((v) => (\n setTagHover(v.id)}\n onClick={() => {\n if (v.type === 0) {\n SearchMyFile(\"tag/\" + v.id, \"\");\n } else {\n NavigateTo(v.expression);\n }\n }}\n >\n \n {getIcon(\n v.type === 0\n ? v.icon\n : \"FolderHeartOutline\",\n v.type === 0 ? v.color : null\n )}\n \n \n\n {tagHover === v.id && (\n submitDelete(v.id)}\n >\n \n \n \n \n )}\n \n ))}\n\n setAddTagModal(true)}>\n \n \n \n \n \n {\" \"}\n \n \n \n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { baseURL } from \"../../middleware/Api\";\nimport { imgPreviewSuffix } from \"../../config\";\nimport { withStyles } from \"@material-ui/core\";\nimport pathHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router\";\nimport { PhotoSlider } from \"react-photo-view\";\nimport \"react-photo-view/dist/index.css\";\nimport * as explorer from \"../../redux/explorer/reducer\";\nimport { showImgPreivew } from \"../../redux/explorer\";\n\nconst styles = () => ({});\n\nconst mapStateToProps = (state) => {\n return {\n first: state.explorer.imgPreview.first,\n other: state.explorer.imgPreview.other,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n };\n};\n\nclass ImagPreviewComponent extends Component {\n state = {\n items: [],\n photoIndex: 0,\n isOpen: false,\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n const items = [];\n let firstOne = 0;\n if (nextProps.first.id !== \"\") {\n if (\n pathHelper.isSharePage(this.props.location.pathname) &&\n !nextProps.first.path\n ) {\n const newImg = {\n intro: nextProps.first.name,\n src: baseURL + \"/share/preview/\" + nextProps.first.key,\n };\n firstOne = 0;\n items.push(newImg);\n this.setState({\n photoIndex: firstOne,\n items: items,\n isOpen: true,\n });\n return;\n }\n // eslint-disable-next-line\n nextProps.other.map((value) => {\n const fileType = value.name.split(\".\").pop().toLowerCase();\n if (imgPreviewSuffix.indexOf(fileType) !== -1) {\n let src = \"\";\n if (pathHelper.isSharePage(this.props.location.pathname)) {\n src = baseURL + \"/share/preview/\" + value.key;\n src =\n src +\n \"?path=\" +\n encodeURIComponent(\n value.path === \"/\"\n ? value.path + value.name\n : value.path + \"/\" + value.name\n );\n } else {\n src = baseURL + \"/file/preview/\" + value.id;\n }\n const newImg = {\n intro: value.name,\n src: src,\n };\n if (\n value.path === nextProps.first.path &&\n value.name === nextProps.first.name\n ) {\n firstOne = items.length;\n }\n items.push(newImg);\n }\n });\n this.setState({\n photoIndex: firstOne,\n items: items,\n isOpen: true,\n });\n }\n };\n\n handleClose = () => {\n this.props.showImgPreivew(explorer.initState.imgPreview.first);\n this.setState({\n isOpen: false,\n });\n };\n\n render() {\n const { photoIndex, isOpen, items } = this.state;\n\n return (\n
\n {isOpen && (\n this.handleClose()}\n index={photoIndex}\n onIndexChange={(n) =>\n this.setState({\n photoIndex: n,\n })\n }\n />\n )}\n
\n );\n }\n}\n\nImagPreviewComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst ImgPreivew = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ImagPreviewComponent)));\n\nexport default ImgPreivew;\n","import i18next from \"./i18n\";\n\nexport const imgPreviewSuffix = [\n \"bmp\",\n \"png\",\n \"gif\",\n \"jpg\",\n \"jpeg\",\n \"svg\",\n \"webp\",\n];\nexport let msDocPreviewSuffix = [\n \"ppt\",\n \"pptx\",\n \"pps\",\n \"doc\",\n \"docx\",\n \"xlsx\",\n \"xls\",\n];\nexport const subtitleSuffix = [\"ass\", \"srt\", \"vrr\"];\nexport const audioPreviewSuffix = [\"mp3\", \"ogg\", \"wav\", \"flac\", \"m4a\"];\nexport const videoPreviewSuffix = [\"mp4\", \"mkv\", \"webm\", \"avi\", \"m3u8\", \"mov\"];\nexport const pdfPreviewSuffix = [\"pdf\"];\nexport const editSuffix = [\"md\", \"txt\"];\nexport const epubSuffix = [\"epub\"];\nexport const codePreviewSuffix = {\n json: \"json\",\n php: \"php\",\n py: \"python\",\n bat: \"bat\",\n cpp: \"cpp\",\n c: \"cpp\",\n h: \"cpp\",\n cs: \"csharp\",\n css: \"css\",\n dockerfile: \"dockerfile\",\n go: \"go\",\n html: \"html\",\n ini: \"ini\",\n java: \"java\",\n js: \"javascript\",\n jsx: \"javascript\",\n less: \"less\",\n lua: \"lua\",\n sh: \"shell\",\n sql: \"sql\",\n xml: \"xml\",\n yaml: \"yaml\",\n};\nexport const mediaType = {\n audio: [\"mp3\", \"flac\", \"ape\", \"wav\", \"acc\", \"ogg\", \"m4a\"],\n video: [\"mp4\", \"flv\", \"avi\", \"wmv\", \"mkv\", \"rm\", \"rmvb\", \"mov\", \"ogv\"],\n image: [\"bmp\", \"iff\", \"png\", \"gif\", \"jpg\", \"jpeg\", \"psd\", \"svg\", \"webp\"],\n pdf: [\"pdf\"],\n word: [\"doc\", \"docx\"],\n ppt: [\"ppt\", \"pptx\"],\n excel: [\"xls\", \"xlsx\", \"csv\"],\n text: [\"txt\", \"md\", \"html\"],\n torrent: [\"torrent\"],\n zip: [\"zip\", \"gz\", \"xz\", \"tar\", \"rar\", \"7z\"],\n excute: [\"exe\"],\n android: [\"apk\"],\n php: [\"php\"],\n go: [\"go\"],\n python: [\"py\"],\n cpp: [\"cpp\"],\n c: [\"c\"],\n js: [\"js\", \"jsx\"],\n epub: epubSuffix,\n};\nexport const isPreviewable = (name: any) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n if (imgPreviewSuffix.indexOf(suffix) !== -1) {\n return \"img\";\n } else if (msDocPreviewSuffix.indexOf(suffix) !== -1) {\n return \"msDoc\";\n } else if (audioPreviewSuffix.indexOf(suffix) !== -1) {\n return \"audio\";\n } else if (videoPreviewSuffix.indexOf(suffix) !== -1) {\n return \"video\";\n } else if (editSuffix.indexOf(suffix) !== -1) {\n return \"edit\";\n } else if (pdfPreviewSuffix.indexOf(suffix) !== -1) {\n return \"pdf\";\n } else if (Object.keys(codePreviewSuffix).indexOf(suffix) !== -1) {\n return \"code\";\n } else if (epubSuffix.indexOf(suffix) !== -1) {\n return \"epub\";\n }\n return false;\n};\nexport const isTorrent = (name: any) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n if (mediaType.torrent.indexOf(suffix) !== -1) {\n return true;\n }\n return false;\n};\n\nexport const isCompressFile = (name: any) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n return suffix !== \"7z\" && mediaType[\"zip\"].indexOf(suffix) !== -1;\n};\n\nexport const encodingRequired = (name: any) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n return suffix === \"zip\";\n};\n\nconst taskStatus = [\n \"setting.queueing\",\n \"setting.processing\",\n \"setting.failed\",\n \"setting.canceled\",\n \"setting.finished\",\n];\nconst taskType = [\n \"fileManager.compress\",\n \"fileManager.decompress\",\n \"setting.fileTransfer\",\n \"setting.importFiles\",\n \"vas.migrateStoragePolicy\",\n \"setting.fileRecycle\",\n];\nconst taskProgress = [\n \"setting.waiting\",\n \"setting.compressing\",\n \"setting.decompressing\",\n \"setting.downloading\",\n \"setting.transferring\",\n \"setting.indexing\",\n \"setting.listing\",\n];\n\nexport const getTaskStatus = (status: any) => {\n return i18next.t(taskStatus[status]);\n};\n\nexport const getTaskType = (status: any) => {\n return i18next.t(taskType[status]);\n};\n\nexport const getTaskProgress = (type: any, status: any) => {\n if (type === 2) {\n return i18next.t(\"setting.transferProgress\", {\n num: status,\n });\n }\n return i18next.t(taskProgress[status]);\n};\n\nexport const reportReasons = [\n \"vas.nsfw\",\n \"vas.malware\",\n \"vas.copyright\",\n \"vas.inappropriateStatements\",\n \"vas.other\",\n];\n\nexport const setWopiExts = (exts: string[]) => {\n msDocPreviewSuffix = exts;\n};\n","import { ChunkProgress } from \"./uploader/chunk\";\n\nexport enum PolicyType {\n local = \"local\",\n remote = \"remote\",\n oss = \"oss\",\n qiniu = \"qiniu\",\n onedrive = \"onedrive\",\n cos = \"cos\",\n upyun = \"upyun\",\n s3 = \"s3\",\n}\n\nexport interface Policy {\n id: number;\n name: string;\n allowedSuffix: Nullable;\n maxSize: number;\n type: PolicyType;\n}\n\nexport enum TaskType {\n file,\n resumeHint,\n}\n\nexport interface Task {\n type: TaskType;\n name: string;\n size: number;\n policy: Policy;\n dst: string;\n file: File;\n child?: Task[];\n session?: UploadCredential;\n chunkProgress: ChunkProgress[];\n resumed: boolean;\n}\n\ntype Nullable = T | null;\n\nexport interface Response {\n code: number;\n data: T;\n msg: string;\n error: string;\n}\n\nexport interface UploadSessionRequest {\n path: string;\n size: number;\n name: string;\n policy_id: number;\n last_modified?: number;\n}\n\nexport interface UploadCredential {\n sessionID: string;\n expires: number;\n chunkSize: number;\n uploadURLs: string[];\n credential: string;\n uploadID: string;\n callback: string;\n policy: string;\n ak: string;\n keyTime: string;\n path: string;\n completeURL: string;\n}\n\nexport interface OneDriveError {\n error: {\n code: string;\n message: string;\n innererror?: {\n code: string;\n };\n retryAfterSeconds?: number;\n };\n}\n\nexport interface OneDriveChunkResponse {\n expirationDateTime: string;\n nextExpectedRanges: string[];\n}\n\nexport interface QiniuChunkResponse {\n etag: string;\n md5: string;\n}\n\nexport interface QiniuError {\n error: string;\n}\n\nexport interface QiniuPartsInfo {\n etag: string;\n partNumber: number;\n}\n\nexport interface QiniuFinishUploadRequest {\n parts: QiniuPartsInfo[];\n}\n\nexport interface UpyunError {\n message: string;\n code: number;\n}\n\nexport interface S3Part {\n ETag: string;\n PartNumber: number;\n}\n","// 所有 Uploader 的基类\nimport { PolicyType, Task } from \"../types\";\nimport UploadManager from \"../index\";\nimport Logger from \"../logger\";\nimport { validate } from \"../utils/validator\";\nimport { CancelToken } from \"../utils/request\";\nimport axios, { CancelTokenSource } from \"axios\";\nimport { createUploadSession, deleteUploadSession } from \"../api\";\nimport * as utils from \"../utils\";\nimport { RequestCanceledError, UploaderError } from \"../errors\";\n\nexport enum Status {\n added,\n resumable,\n initialized,\n queued,\n preparing,\n processing,\n finishing,\n finished,\n error,\n canceled,\n}\n\nexport interface UploadHandlers {\n onTransition: (newStatus: Status) => void;\n onError: (err: Error) => void;\n onProgress: (data: UploadProgress) => void;\n onMsg: (msg: string, color: string) => void;\n}\n\nexport interface UploadProgress {\n total: ProgressCompose;\n chunks?: ProgressCompose[];\n}\n\nexport interface ProgressCompose {\n size: number;\n loaded: number;\n percent: number;\n fromCache?: boolean;\n}\n\nexport interface Progress {\n total: number;\n loaded: number;\n}\n\nconst resumePolicy = [\n PolicyType.local,\n PolicyType.remote,\n PolicyType.qiniu,\n PolicyType.oss,\n PolicyType.onedrive,\n PolicyType.s3,\n];\nconst deleteUploadSessionDelay = 500;\n\nexport default abstract class Base {\n public child?: Base[];\n public status: Status = Status.added;\n public error?: Error;\n\n public id = ++Base.id;\n private static id = 0;\n\n protected logger: Logger;\n protected subscriber: UploadHandlers;\n // 用于取消请求\n protected cancelToken: CancelTokenSource = CancelToken.source();\n protected progress: UploadProgress;\n\n public lastTime = Date.now();\n public startTime = Date.now();\n\n constructor(public task: Task, protected manager: UploadManager) {\n this.logger = new Logger(\n this.manager.logger.level,\n \"UPLOADER\",\n this.id\n );\n this.logger.info(\"Initialize new uploader for task: \", task);\n this.subscriber = {\n /* eslint-disable @typescript-eslint/no-empty-function */\n onTransition: (newStatus: Status) => {},\n onError: (err: Error) => {},\n onProgress: (data: UploadProgress) => {},\n onMsg: (msg, color: string) => {},\n /* eslint-enable @typescript-eslint/no-empty-function */\n };\n }\n\n public subscribe = (handlers: UploadHandlers) => {\n this.subscriber = handlers;\n };\n\n public start = async () => {\n this.logger.info(\"Activate uploading task\");\n this.transit(Status.initialized);\n this.lastTime = this.startTime = Date.now();\n\n try {\n validate(this.task.file, this.task.policy);\n } catch (e) {\n this.logger.error(\"File validate failed with error:\", e);\n this.setError(e);\n return;\n }\n\n this.logger.info(\"Enqueued in manager pool\");\n this.transit(Status.queued);\n this.manager.pool.enqueue(this).catch((e) => {\n this.logger.info(\"Upload task failed with error:\", e);\n this.setError(e);\n });\n };\n\n public run = async () => {\n this.logger.info(\"Start upload task, create upload session...\");\n this.transit(Status.preparing);\n const cachedInfo = utils.getResumeCtx(this.task, this.logger);\n if (cachedInfo == null) {\n this.task.session = await createUploadSession(\n {\n path: this.task.dst,\n size: this.task.file.size,\n name: this.task.file.name,\n policy_id: this.task.policy.id,\n last_modified: this.task.file.lastModified,\n },\n this.cancelToken.token\n );\n this.logger.info(\"Upload session created:\", this.task.session);\n } else {\n this.task.session = cachedInfo.session;\n this.task.resumed = true;\n this.task.chunkProgress = cachedInfo.chunkProgress;\n this.logger.info(\"Resume upload from cached ctx:\", cachedInfo);\n }\n\n this.transit(Status.processing);\n await this.upload();\n await this.afterUpload();\n utils.removeResumeCtx(this.task, this.logger);\n this.transit(Status.finished);\n this.logger.info(\"Upload task completed\");\n };\n\n public abstract async upload(): Promise;\n protected async afterUpload(): Promise {\n return;\n }\n\n public cancel = async () => {\n if (this.status === Status.finished) {\n return;\n }\n\n this.cancelToken.cancel();\n await this.cancelUploadSession();\n this.transit(Status.canceled);\n };\n\n public reset = () => {\n this.cancelToken = axios.CancelToken.source();\n this.progress = {\n total: {\n size: 0,\n loaded: 0,\n percent: 0,\n },\n };\n };\n\n protected setError(e: Error) {\n if (\n !(e instanceof UploaderError && e.Retryable()) ||\n !resumePolicy.includes(this.task.policy.type)\n ) {\n this.logger.warn(\"Non-resume error occurs, clean resume ctx cache\");\n this.cancelUploadSession();\n }\n\n if (!(e instanceof RequestCanceledError)) {\n this.status = Status.error;\n this.error = e;\n this.subscriber.onError(e);\n }\n }\n\n protected cancelUploadSession = (): Promise => {\n return new Promise((resolve) => {\n utils.removeResumeCtx(this.task, this.logger);\n if (this.task.session) {\n setTimeout(() => {\n deleteUploadSession(this.task.session!?.sessionID)\n .catch((e) => {\n this.logger.warn(\n \"Failed to cancel upload session: \",\n e\n );\n })\n .finally(() => {\n resolve();\n });\n }, deleteUploadSessionDelay);\n } else {\n resolve();\n }\n });\n };\n\n protected transit(status: Status) {\n this.status = status;\n this.subscriber.onTransition(status);\n }\n\n public getProgressInfoItem(\n loaded: number,\n size: number,\n fromCache?: boolean\n ): ProgressCompose {\n return {\n size,\n loaded,\n percent: (loaded / size) * 100,\n ...(fromCache == null ? {} : { fromCache }),\n };\n }\n\n public key(): string {\n return utils.getResumeCtxKey(this.task);\n }\n}\n","export type LogLevel = \"INFO\" | \"WARN\" | \"ERROR\" | \"OFF\";\n\nexport default class Logger {\n constructor(\n public level: LogLevel = \"OFF\",\n private prefix = \"UPLOAD\",\n private id: number = 1\n ) {}\n\n private getPrintPrefix(level: LogLevel) {\n return `Cloudreve-Uploader [${level}][${this.prefix}#${this.id}]:`;\n }\n\n info(...args: unknown[]) {\n const allowLevel: LogLevel[] = [\"INFO\"];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.log(this.getPrintPrefix(\"INFO\"), ...args);\n }\n }\n\n warn(...args: unknown[]) {\n const allowLevel: LogLevel[] = [\"INFO\", \"WARN\"];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.warn(this.getPrintPrefix(\"WARN\"), ...args);\n }\n }\n\n error(...args: unknown[]) {\n const allowLevel: LogLevel[] = [\"INFO\", \"WARN\", \"ERROR\"];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.error(this.getPrintPrefix(\"ERROR\"), ...args);\n }\n }\n}\n","import {\n OneDriveChunkResponse,\n QiniuChunkResponse,\n QiniuFinishUploadRequest,\n QiniuPartsInfo,\n S3Part,\n UploadCredential,\n UploadSessionRequest,\n} from \"../types\";\nimport { OBJtoXML, request, requestAPI } from \"../utils\";\nimport {\n COSUploadCallbackError,\n COSUploadError,\n CreateUploadSessionError,\n DeleteUploadSessionError,\n HTTPError,\n LocalChunkUploadError,\n OneDriveChunkError,\n OneDriveFinishUploadError,\n QiniuChunkError,\n QiniuFinishUploadError,\n S3LikeChunkError,\n S3LikeFinishUploadError,\n S3LikeUploadCallbackError,\n SlaveChunkUploadError,\n UpyunUploadError,\n} from \"../errors\";\nimport { ChunkInfo, ChunkProgress } from \"../uploader/chunk\";\nimport { Progress } from \"../uploader/base\";\nimport { CancelToken } from \"axios\";\n\nexport async function createUploadSession(\n req: UploadSessionRequest,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(\"file/upload\", {\n method: \"put\",\n data: req,\n cancelToken: cancel,\n });\n\n if (res.data.code != 0) {\n throw new CreateUploadSessionError(res.data);\n }\n\n return res.data.data;\n}\n\nexport async function deleteUploadSession(id: string): Promise {\n const res = await requestAPI(`file/upload/${id}`, {\n method: \"delete\",\n });\n\n if (res.data.code != 0) {\n throw new DeleteUploadSessionError(res.data);\n }\n\n return res.data.data;\n}\n\nexport async function localUploadChunk(\n sessionID: string,\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(\n `file/upload/${sessionID}/${chunk.index}`,\n {\n method: \"post\",\n headers: { \"content-type\": \"application/octet-stream\" },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n }\n );\n\n if (res.data.code != 0) {\n throw new LocalChunkUploadError(res.data, chunk.index);\n }\n\n return res.data.data;\n}\n\nexport async function slaveUploadChunk(\n url: string,\n credential: string,\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await request(`${url}?chunk=${chunk.index}`, {\n method: \"post\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n Authorization: credential,\n },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n });\n\n if (res.data.code != 0) {\n throw new SlaveChunkUploadError(res.data, chunk.index);\n }\n\n return res.data.data;\n}\n\nexport async function oneDriveUploadChunk(\n url: string,\n range: string, // if range is empty, this will be an request to query the session status\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await request(url, {\n method: range === \"\" ? \"get\" : \"put\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n ...(range !== \"\" && { \"content-range\": range }),\n },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new OneDriveChunkError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function finishOneDriveUpload(\n sessionID: string,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(\n `callback/onedrive/finish/${sessionID}`,\n {\n method: \"post\",\n data: \"{}\",\n cancelToken: cancel,\n }\n );\n\n if (res.data.code != 0) {\n throw new OneDriveFinishUploadError(res.data);\n }\n\n return res.data.data;\n}\n\nexport async function s3LikeUploadChunk(\n url: string,\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await request(url, {\n method: \"put\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n responseType: \"document\",\n transformResponse: undefined,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new S3LikeChunkError(e.response.data);\n }\n\n throw e;\n });\n\n return res.headers.etag;\n}\n\nexport async function s3LikeFinishUpload(\n url: string,\n isOss: boolean,\n chunks: ChunkProgress[],\n cancel: CancelToken\n): Promise {\n let body = \"\";\n if (!isOss) {\n body += \"\";\n chunks.forEach((chunk) => {\n body += \"\";\n const part: S3Part = {\n PartNumber: chunk.index + 1,\n ETag: chunk.etag!,\n };\n body += OBJtoXML(part);\n body += \"\";\n });\n body += \"\";\n }\n\n const res = await request(url, {\n method: \"post\",\n cancelToken: cancel,\n responseType: \"document\",\n transformResponse: undefined,\n data: body,\n headers: isOss\n ? {\n \"content-type\": \"application/octet-stream\",\n \"x-oss-forbid-overwrite\": \"true\",\n \"x-oss-complete-all\": \"yes\",\n }\n : {\n \"content-type\": \"application/xhtml+xml\",\n },\n validateStatus: function (status) {\n return status == 200;\n },\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new S3LikeFinishUploadError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function qiniuDriveUploadChunk(\n url: string,\n upToken: string,\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await request(`${url}/${chunk.index + 1}`, {\n method: \"put\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n authorization: \"UpToken \" + upToken,\n },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new QiniuChunkError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function qiniuFinishUpload(\n url: string,\n upToken: string,\n chunks: ChunkProgress[],\n cancel: CancelToken\n): Promise {\n const content: QiniuFinishUploadRequest = {\n parts: chunks.map(\n (chunk): QiniuPartsInfo => {\n return {\n etag: chunk.etag!,\n partNumber: chunk.index + 1,\n };\n }\n ),\n };\n\n const res = await request(`${url}`, {\n method: \"post\",\n headers: {\n \"content-type\": \"application/json\",\n authorization: \"UpToken \" + upToken,\n },\n data: content,\n cancelToken: cancel,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new QiniuFinishUploadError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function cosFormUploadChunk(\n url: string,\n file: File,\n policy: string,\n path: string,\n callback: string,\n sessionID: string,\n keyTime: string,\n credential: string,\n ak: string,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const bodyFormData = new FormData();\n bodyFormData.append(\"policy\", policy);\n bodyFormData.append(\"key\", path);\n bodyFormData.append(\"x-cos-meta-callback\", callback);\n bodyFormData.append(\"x-cos-meta-key\", sessionID);\n bodyFormData.append(\"q-sign-algorithm\", \"sha1\");\n bodyFormData.append(\"q-key-time\", keyTime);\n bodyFormData.append(\"q-ak\", ak);\n bodyFormData.append(\"q-signature\", credential);\n bodyFormData.append(\"name\", file.name);\n // File must be the last element in the form\n bodyFormData.append(\"file\", file);\n\n const res = await request(`${url}`, {\n method: \"post\",\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n data: bodyFormData,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n responseType: \"document\",\n transformResponse: undefined,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new COSUploadError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function cosUploadCallback(\n sessionID: string,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(`callback/cos/${sessionID}`, {\n method: \"get\",\n data: \"{}\",\n cancelToken: cancel,\n });\n\n if (res.data.code != 0) {\n throw new COSUploadCallbackError(res.data);\n }\n\n return res.data.data;\n}\n\nexport async function upyunFormUploadChunk(\n url: string,\n file: File,\n policy: string,\n credential: string,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const bodyFormData = new FormData();\n bodyFormData.append(\"policy\", policy);\n bodyFormData.append(\"authorization\", credential);\n // File must be the last element in the form\n bodyFormData.append(\"file\", file);\n\n const res = await request(`${url}`, {\n method: \"post\",\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n data: bodyFormData,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new UpyunUploadError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function s3LikeUploadCallback(\n sessionID: string,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(`callback/s3/${sessionID}`, {\n method: \"get\",\n data: \"{}\",\n cancelToken: cancel,\n });\n\n if (res.data.code != 0) {\n throw new S3LikeUploadCallbackError(res.data);\n }\n\n return res.data.data;\n}\n","import { Policy, PolicyType, Task, TaskType } from \"./types\";\nimport Logger, { LogLevel } from \"./logger\";\nimport { UnknownPolicyError, UploaderError, UploaderErrorName } from \"./errors\";\nimport Base from \"./uploader/base\";\nimport Local from \"./uploader/local\";\nimport { Pool } from \"./utils/pool\";\nimport {\n cleanupResumeCtx,\n getAllFileEntries,\n getDirectoryUploadDst,\n getFileInput,\n isFileDrop,\n listResumeCtx,\n} from \"./utils\";\nimport Remote from \"./uploader/remote\";\nimport OneDrive from \"./uploader/onedrive\";\nimport OSS from \"./uploader/oss\";\nimport Qiniu from \"./uploader/qiniu\";\nimport COS from \"./uploader/cos\";\nimport Upyun from \"./uploader/upyun\";\nimport S3 from \"./uploader/s3\";\nimport ResumeHint from \"./uploader/placeholder\";\n\nexport interface Option {\n logLevel: LogLevel;\n concurrentLimit: number;\n dropZone?: HTMLElement;\n onDropOver?: (e: DragEvent) => void;\n onDropLeave?: (e: DragEvent) => void;\n onToast: (type: string, msg: string) => void;\n onDropFileAdded?: (uploaders: Base[]) => void;\n}\n\nexport enum SelectType {\n File,\n Directory,\n}\n\nexport default class UploadManager {\n public logger: Logger;\n public pool: Pool;\n private static id = 0;\n private policy?: Policy;\n private fileInput: HTMLInputElement;\n private directoryInput: HTMLInputElement;\n private id = ++UploadManager.id;\n // used for proactive upload (drop, paste)\n private currentPath = \"/\";\n\n constructor(private o: Option) {\n this.logger = new Logger(o.logLevel, \"MANAGER\");\n this.logger.info(`Initialized with log level: ${o.logLevel}`);\n\n this.pool = new Pool(o.concurrentLimit);\n this.fileInput = getFileInput(this.id, false);\n this.directoryInput = getFileInput(this.id, true);\n\n if (o.dropZone) {\n this.logger.info(`Drag and drop container set to:`, o.dropZone);\n o.dropZone.addEventListener(\"dragenter\", (e) => {\n if (isFileDrop(e)) {\n e.preventDefault();\n if (o.onDropOver) {\n o.onDropOver(e);\n }\n }\n });\n\n o.dropZone.addEventListener(\"dragleave\", (e) => {\n if (isFileDrop(e)) {\n e.preventDefault();\n if (o.onDropLeave) {\n o.onDropLeave(e);\n }\n }\n });\n\n o.dropZone.addEventListener(\"drop\", this.onFileDroppedIn);\n }\n }\n\n changeConcurrentLimit = (newLimit: number) => {\n this.pool.limit = newLimit;\n };\n\n dispatchUploader(task: Task): Base {\n if (task.type == TaskType.resumeHint) {\n return new ResumeHint(task, this);\n }\n\n switch (task.policy.type) {\n case PolicyType.local:\n return new Local(task, this);\n case PolicyType.remote:\n return new Remote(task, this);\n case PolicyType.onedrive:\n return new OneDrive(task, this);\n case PolicyType.oss:\n return new OSS(task, this);\n case PolicyType.qiniu:\n return new Qiniu(task, this);\n case PolicyType.cos:\n return new COS(task, this);\n case PolicyType.upyun:\n return new Upyun(task, this);\n case PolicyType.s3:\n return new S3(task, this);\n default:\n throw new UnknownPolicyError(\n \"Unknown policy type.\",\n task.policy\n );\n }\n }\n\n // 设定当前存储策略\n public setPolicy(p: Policy, path: string) {\n this.policy = p;\n this.currentPath = path;\n if (p == undefined) {\n this.logger.info(`Currently no policy selected`);\n return;\n }\n\n this.logger.info(`Switching policy to:`, p);\n\n if (p.allowedSuffix != undefined && p.allowedSuffix.length > 0) {\n const acceptVal = p.allowedSuffix\n .map((v) => {\n return \".\" + v;\n })\n .join(\",\");\n this.logger.info(`Set allowed file suffix to ${acceptVal}`);\n this.fileInput.setAttribute(\"accept\", acceptVal);\n } else {\n this.logger.info(`Set allowed file suffix to *`);\n this.fileInput.removeAttribute(\"accept\");\n }\n }\n\n // 选择文件\n public select = (dst: string, type = SelectType.File): Promise => {\n return new Promise((resolve) => {\n if (this.policy == undefined) {\n this.logger.warn(\n `Calling file selector while no policy is set`\n );\n throw new UploaderError(\n UploaderErrorName.NoPolicySelected,\n \"No policy selected.\"\n );\n }\n\n this.fileInput.onchange = (ev: Event) =>\n this.fileSelectCallback(ev, dst, resolve);\n this.directoryInput.onchange = (ev: Event) =>\n this.fileSelectCallback(ev, dst, resolve);\n this.fileInput.value = \"\";\n this.directoryInput.value = \"\";\n type == SelectType.File\n ? this.fileInput.click()\n : this.directoryInput.click();\n });\n };\n\n public resumeTasks = (): Base[] => {\n const tasks = listResumeCtx(this.logger);\n if (tasks.length > 0) {\n this.logger.info(\n `Resumed ${tasks.length} unfinished task(s) from local storage:`,\n tasks\n );\n }\n return tasks\n .filter(\n (t) =>\n t.chunkProgress.length > 0 && t.chunkProgress[0].loaded > 0\n )\n .map((t) =>\n this.dispatchUploader({ ...t, type: TaskType.resumeHint })\n );\n };\n\n public cleanupSessions = () => {\n cleanupResumeCtx(this.logger);\n };\n\n private fileSelectCallback = (\n ev: Event | File[],\n dst: string,\n resolve: (value?: Base[] | PromiseLike | undefined) => void\n ) => {\n let files: File[] = [];\n if (ev instanceof Event) {\n const target = ev.target as HTMLInputElement;\n if (!ev || !target || !target.files) return;\n if (target.files.length > 0) {\n files = Array.from(target.files);\n }\n } else {\n files = ev as File[];\n }\n\n if (files.length > 0) {\n resolve(\n files.map(\n (file): Base =>\n this.dispatchUploader({\n type: TaskType.file,\n policy: this.policy as Policy,\n dst: getDirectoryUploadDst(dst, file),\n file: file,\n size: file.size,\n name: file.name,\n chunkProgress: [],\n resumed: false,\n })\n )\n );\n }\n };\n\n private onFileDroppedIn = async (e: DragEvent) => {\n const containFile =\n e.dataTransfer && e.dataTransfer.types.includes(\"Files\");\n if (containFile) {\n this.o.onDropLeave && this.o.onDropLeave(e);\n const items = await getAllFileEntries(e.dataTransfer!.items);\n console.log(items);\n const uploaders = await new Promise((resolve) =>\n this.fileSelectCallback(items, this.currentPath, resolve)\n );\n this.o.onDropFileAdded && this.o.onDropFileAdded(uploaders);\n }\n };\n}\n","import Base, { Status, UploadProgress } from \"./base\";\nimport * as utils from \"../utils\";\nimport { Task, TaskType } from \"../types\";\nimport UploadManager from \"../index\";\nimport Logger from \"../logger\";\n\nexport interface ChunkProgress {\n loaded: number;\n index: number;\n etag?: string;\n}\n\nexport interface ChunkInfo {\n chunk: Blob;\n index: number;\n}\n\nexport default abstract class Chunk extends Base {\n protected chunks: Blob[];\n\n public upload = async () => {\n this.logger.info(\"Preparing uploading file chunks.\");\n this.initBeforeUploadChunks();\n\n this.logger.info(\"Starting uploading file chunks:\", this.chunks);\n this.updateLocalCache();\n for (let i = 0; i < this.chunks.length; i++) {\n if (\n this.task.chunkProgress[i].loaded < this.chunks[i].size ||\n this.chunks[i].size == 0\n ) {\n await this.uploadChunk({ chunk: this.chunks[i], index: i });\n this.logger.info(`Chunk [${i}] uploaded.`);\n this.updateLocalCache();\n }\n }\n };\n\n private initBeforeUploadChunks() {\n this.chunks = utils.getChunks(\n this.task.file,\n this.task.session?.chunkSize\n );\n const cachedInfo = utils.getResumeCtx(this.task, this.logger);\n if (cachedInfo == null) {\n this.task.chunkProgress = this.chunks.map(\n (value, index): ChunkProgress => ({\n loaded: 0,\n index,\n })\n );\n }\n\n this.notifyResumeProgress();\n }\n\n protected abstract async uploadChunk(chunkInfo: ChunkInfo): Promise;\n\n protected updateChunkProgress(loaded: number, index: number) {\n this.task.chunkProgress[index].loaded = loaded;\n this.notifyResumeProgress();\n }\n\n private notifyResumeProgress() {\n this.progress = {\n total: this.getProgressInfoItem(\n utils.sumChunk(this.task.chunkProgress),\n this.task.file.size + 1\n ),\n chunks: this.chunks.map((chunk, index) => {\n return this.getProgressInfoItem(\n this.task.chunkProgress[index].loaded,\n chunk.size,\n false\n );\n }),\n };\n this.subscriber.onProgress(this.progress);\n }\n\n private updateLocalCache() {\n utils.setResumeCtx(this.task, this.logger);\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { localUploadChunk } from \"../api\";\n\nexport default class Local extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n return localUploadChunk(\n this.task.session?.sessionID!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { slaveUploadChunk } from \"../api\";\n\nexport default class Remote extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n return slaveUploadChunk(\n `${this.task.session?.uploadURLs[0]!}`,\n this.task.session?.credential!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { finishOneDriveUpload, oneDriveUploadChunk } from \"../api\";\nimport { OneDriveChunkError, OneDriveEmptyFileSelected } from \"../errors\";\nimport { Status } from \"./base\";\n\nexport default class OneDrive extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n if (chunkInfo.chunk.size === 0) {\n throw new OneDriveEmptyFileSelected();\n }\n\n const rangeEnd = this.progress.total.loaded + chunkInfo.chunk.size - 1;\n return this.sendRange(\n chunkInfo,\n this.progress.total.loaded,\n rangeEnd,\n 0\n ).catch((e) => {\n if (\n e instanceof OneDriveChunkError &&\n e.response.error.innererror &&\n e.response.error.innererror.code == \"fragmentOverlap\"\n ) {\n return this.alignChunkOffset(chunkInfo);\n }\n\n throw e;\n });\n }\n\n private async sendRange(\n chunkInfo: ChunkInfo,\n start: number,\n end: number,\n chunkOffset: number\n ) {\n const range = `bytes ${start}-${end}/${this.task.file.size}`;\n return oneDriveUploadChunk(\n `${this.task.session?.uploadURLs[0]!}`,\n range,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(\n chunkOffset + p.loaded,\n chunkInfo.index\n );\n },\n this.cancelToken.token\n );\n }\n\n private async alignChunkOffset(chunkInfo: ChunkInfo) {\n this.logger.info(\n `Chunk [${chunkInfo.index}] overlapped, checking next expected range...`\n );\n const rangeStatus = await oneDriveUploadChunk(\n `${this.task.session?.uploadURLs[0]!}`,\n \"\",\n chunkInfo,\n (p) => {\n return null;\n },\n this.cancelToken.token\n );\n const expectedStart = parseInt(\n rangeStatus.nextExpectedRanges[0].split(\"-\")[0]\n );\n this.logger.info(\n `Next expected range start from OneDrive is ${expectedStart}.`\n );\n\n if (expectedStart >= this.progress.total.loaded) {\n this.logger.info(`This whole chunk is overlapped, skipping...`);\n this.updateChunkProgress(chunkInfo.chunk.size, chunkInfo.index);\n return;\n } else {\n this.updateChunkProgress(0, chunkInfo.index);\n const rangeEnd =\n this.progress.total.loaded + chunkInfo.chunk.size - 1;\n const newChunkOffset = expectedStart - this.progress.total.loaded;\n chunkInfo.chunk = chunkInfo.chunk.slice(newChunkOffset);\n this.updateChunkProgress(newChunkOffset, chunkInfo.index);\n return this.sendRange(\n chunkInfo,\n expectedStart,\n rangeEnd,\n newChunkOffset\n );\n }\n }\n\n protected async afterUpload(): Promise {\n this.logger.info(`Finishing upload...`);\n this.transit(Status.finishing);\n return finishOneDriveUpload(\n this.task.session!.sessionID,\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { s3LikeFinishUpload, s3LikeUploadChunk } from \"../api\";\nimport { Status } from \"./base\";\n\nexport default class OSS extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n return s3LikeUploadChunk(\n this.task.session?.uploadURLs[chunkInfo.index]!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n }\n\n protected async afterUpload(): Promise {\n this.logger.info(`Finishing multipart upload...`);\n this.transit(Status.finishing);\n return s3LikeFinishUpload(\n this.task.session!.completeURL,\n true,\n this.task.chunkProgress,\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { qiniuDriveUploadChunk, qiniuFinishUpload } from \"../api\";\nimport { Status } from \"./base\";\n\nexport default class Qiniu extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n const chunkRes = await qiniuDriveUploadChunk(\n this.task.session?.uploadURLs[0]!,\n this.task.session?.credential!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n\n this.task.chunkProgress[chunkInfo.index].etag = chunkRes.etag;\n }\n\n protected async afterUpload(): Promise {\n this.logger.info(`Finishing multipart upload...`);\n this.transit(Status.finishing);\n return qiniuFinishUpload(\n this.task.session?.uploadURLs[0]!,\n this.task.session?.credential!,\n this.task.chunkProgress,\n this.cancelToken.token\n );\n }\n}\n","import Base, { Status } from \"./base\";\nimport { cosFormUploadChunk, cosUploadCallback } from \"../api\";\n\nexport default class COS extends Base {\n public upload = async () => {\n this.logger.info(\"Starting uploading file stream:\", this.task.file);\n await cosFormUploadChunk(\n this.task.session?.uploadURLs[0]!,\n this.task.file,\n this.task.session?.policy!,\n this.task.session?.path!,\n this.task.session?.callback!,\n this.task.session?.sessionID!,\n this.task.session?.keyTime!,\n this.task.session?.credential!,\n this.task.session?.ak!,\n (p) => {\n this.subscriber.onProgress({\n total: this.getProgressInfoItem(p.loaded, p.total),\n });\n },\n this.cancelToken.token\n );\n };\n\n protected async afterUpload(): Promise {\n this.transit(Status.finishing);\n this.logger.info(`Sending COS upload callback...`);\n try {\n await cosUploadCallback(\n this.task.session!.sessionID,\n this.cancelToken.token\n );\n } catch (e) {\n this.logger.warn(`Failed to finish COS upload:`, e);\n }\n }\n}\n","import Base from \"./base\";\nimport { upyunFormUploadChunk } from \"../api\";\n\nexport default class Upyun extends Base {\n public upload = async () => {\n this.logger.info(\"Starting uploading file stream:\", this.task.file);\n await upyunFormUploadChunk(\n this.task.session?.uploadURLs[0]!,\n this.task.file,\n this.task.session?.policy!,\n this.task.session?.credential!,\n (p) => {\n this.subscriber.onProgress({\n total: this.getProgressInfoItem(p.loaded, p.total),\n });\n },\n this.cancelToken.token\n );\n };\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport {\n s3LikeFinishUpload,\n s3LikeUploadCallback,\n s3LikeUploadChunk,\n} from \"../api\";\nimport { Status } from \"./base\";\n\nexport default class OSS extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n const etag = await s3LikeUploadChunk(\n this.task.session?.uploadURLs[chunkInfo.index]!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n\n this.task.chunkProgress[chunkInfo.index].etag = etag;\n }\n\n protected async afterUpload(): Promise {\n this.logger.info(`Finishing multipart upload...`);\n this.transit(Status.finishing);\n await s3LikeFinishUpload(\n this.task.session!.completeURL,\n false,\n this.task.chunkProgress,\n this.cancelToken.token\n );\n\n this.logger.info(`Sending S3-like upload callback...`);\n return s3LikeUploadCallback(\n this.task.session!.sessionID,\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { qiniuDriveUploadChunk, qiniuFinishUpload } from \"../api\";\nimport { Status } from \"./base\";\nimport { Task } from \"../types\";\nimport UploadManager from \"../index\";\nimport * as utils from \"../utils\";\n\nexport default class ResumeHint extends Chunk {\n constructor(task: Task, manager: UploadManager) {\n super(task, manager);\n this.status = Status.resumable;\n this.progress = {\n total: this.getProgressInfoItem(\n utils.sumChunk(this.task.chunkProgress),\n this.task.size + 1\n ),\n };\n this.subscriber.onProgress(this.progress);\n }\n\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n return null;\n }\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Badge, CircularProgress, makeStyles } from \"@material-ui/core\";\nimport SpeedDial from \"@material-ui/lab/SpeedDial\";\nimport SpeedDialIcon from \"@material-ui/lab/SpeedDialIcon\";\nimport SpeedDialAction from \"@material-ui/lab/SpeedDialAction\";\nimport CreateNewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport PublishIcon from \"@material-ui/icons/Publish\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport AutoHidden from \"./AutoHidden\";\nimport statusHelper from \"../../utils/page\";\nimport Backdrop from \"@material-ui/core/Backdrop\";\nimport { FilePlus, FolderUpload } from \"mdi-material-ui\";\nimport { green } from \"@material-ui/core/colors\";\nimport { SelectType } from \"../Uploader/core\";\nimport {\n openCreateFileDialog,\n openCreateFolderDialog,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles(() => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n badge: {\n position: \"absolute\",\n bottom: 26,\n top: \"auto\",\n zIndex: 9999,\n right: 7,\n },\n \"@global\": {\n \".MuiSpeedDialAction-staticTooltipLabel\": {\n whiteSpace: \"nowrap\",\n },\n },\n fabProgress: {\n color: green[500],\n position: \"absolute\",\n bottom: -6,\n left: -6,\n zIndex: 1,\n },\n buttonSuccess: {\n backgroundColor: green[500],\n \"&:hover\": {\n backgroundColor: green[700],\n },\n },\n}));\n\nexport default function UploadButton(props) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"fileManager\" });\n const [open, setOpen] = useState(false);\n const [queued, setQueued] = useState(5);\n const path = useSelector((state) => state.navigator.path);\n const classes = useStyles();\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const OpenNewFolderDialog = useCallback(\n () => dispatch(openCreateFolderDialog()),\n [dispatch]\n );\n const OpenNewFileDialog = useCallback(\n () => dispatch(openCreateFileDialog()),\n [dispatch]\n );\n\n useEffect(() => {\n setQueued(props.Queued);\n }, [props.Queued]);\n\n const uploadClicked = () => {\n if (open) {\n if (queued !== 0) {\n props.openFileList();\n } else {\n props.selectFile(path);\n }\n }\n };\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const circularProgress = useMemo(() => {\n if (props.progress.totalSize > 0) {\n return (\n \n );\n }\n }, [classes, props.progress]);\n\n return (\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { sizeToString } from \"../../../utils\";\nimport Link from \"@material-ui/core/Link\";\nimport TimeAgo from \"timeago-react\";\nimport { Status } from \"../core/uploader/base\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n infoTitle: {\n fontWeight: 700,\n },\n infoValue: {\n color: theme.palette.text.secondary,\n wordBreak: \"break-all\",\n },\n}));\n\nexport default function TaskDetail({ uploader, navigateToDst, error }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const items = [\n {\n name: t(\"uploader.fileName\"),\n value: uploader.task.name,\n },\n {\n name: t(\"uploader.fileSize\"),\n value: `${sizeToString(uploader.task.size)} ${\n uploader.task.session && uploader.task.session.chunkSize > 0\n ? t(\"uploader.chunkDescription\", {\n total: uploader.task.chunkProgress.length,\n size: sizeToString(uploader.task.session.chunkSize),\n })\n : t(\"uploader.noChunks\")\n }`,\n },\n {\n name: t(\"fileManager.storagePolicy\"),\n value: uploader.task.policy.name,\n },\n {\n name: t(\"uploader.destination\"),\n value: (\n navigateToDst(uploader.task.dst)}\n >\n {uploader.task.dst === \"/\"\n ? t(\"uploader.rootFolder\")\n : uploader.task.dst}\n \n ),\n },\n uploader.task.session\n ? {\n name: t(\"uploader.uploadSession\"),\n value: (\n <>\n ,\n ]}\n />\n \n ),\n }\n : null,\n uploader.status === Status.error\n ? {\n name: t(\"uploader.errorDetails\"),\n value: error,\n }\n : null,\n ];\n return (\n \n {items.map((i) => (\n <>\n {i && (\n \n \n {i.name}\n \n \n {i.value}\n \n \n )}\n \n ))}\n \n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Divider,\n Grow,\n IconButton,\n ListItem,\n ListItemText,\n makeStyles,\n Tooltip,\n} from \"@material-ui/core\";\nimport TypeIcon from \"../../FileManager/TypeIcon\";\nimport { useUpload } from \"../UseUpload\";\nimport { Status } from \"../core/uploader/base\";\nimport { UploaderError } from \"../core/errors\";\nimport { filename, sizeToString } from \"../../../utils\";\nimport { darken, lighten } from \"@material-ui/core/styles/colorManipulator\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport Chip from \"@material-ui/core/Chip\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport { useDispatch } from \"react-redux\";\nimport Link from \"@material-ui/core/Link\";\nimport PlayArrow from \"@material-ui/icons/PlayArrow\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport TaskDetail from \"./TaskDetail\";\nimport { SelectType } from \"../core\";\nimport { navigateTo } from \"../../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n progressContent: {\n position: \"relative\",\n zIndex: 9,\n },\n progress: {\n transition: \"width .4s linear\",\n zIndex: 1,\n height: \"100%\",\n position: \"absolute\",\n left: 0,\n top: 0,\n },\n progressContainer: {\n position: \"relative\",\n },\n listAction: {\n marginLeft: 20,\n marginRight: 20,\n },\n wordBreak: {\n wordBreak: \"break-all\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n successStatus: {\n color: theme.palette.success.main,\n },\n errorStatus: {\n color: theme.palette.warning.main,\n wordBreak: \"break-all\",\n [theme.breakpoints.up(\"sm\")]: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n },\n disabledBadge: {\n marginLeft: theme.spacing(1),\n height: 18,\n },\n delete: {\n zIndex: 9,\n },\n dstLink: {\n color: theme.palette.success.main,\n fontWeight: 600,\n },\n fileNameContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n}));\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {\n margin: 0,\n },\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n display: \"block\",\n \"&$expanded\": {},\n },\n content: {\n margin: 0,\n display: \"block\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n paddingLeft: 16,\n paddingRight: 16,\n paddingTop: 8,\n paddingBottom: 8,\n display: \"block\",\n backgroundColor: theme.palette.background.default,\n },\n}))(MuiExpansionPanelDetails);\n\nconst getSpeedText = (speed, speedAvg, useSpeedAvg) => {\n let displayedSpeed = speedAvg;\n if (!useSpeedAvg) {\n displayedSpeed = speed;\n }\n\n return `${sizeToString(displayedSpeed ? displayedSpeed : 0)} /s`;\n};\n\nconst getErrMsg = (error) => {\n let errMsg = error.message;\n if (error instanceof UploaderError) {\n errMsg = error.Message(\"\");\n }\n\n return errMsg;\n};\n\nexport default function UploadTask({\n uploader,\n useAvgSpeed,\n onCancel,\n onClose,\n selectFile,\n onRefresh,\n}) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"uploader\" });\n const classes = useStyles();\n const theme = useTheme();\n const [taskHover, setTaskHover] = useState(false);\n const [expanded, setExpanded] = useState(false);\n const { status, error, progress, speed, speedAvg, retry } = useUpload(\n uploader\n );\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const [loading, setLoading] = useState(false);\n const dispatch = useDispatch();\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\n const navigateToDst = (path) => {\n onClose(null, \"backdropClick\");\n NavigateTo(path);\n };\n\n const toggleDetail = (event, newExpanded) => {\n setExpanded(!!newExpanded);\n };\n\n useEffect(() => {\n if (status >= Status.finished) {\n onRefresh();\n }\n }, [status]);\n\n const statusText = useMemo(() => {\n const parent = filename(uploader.task.dst);\n switch (status) {\n case Status.added:\n case Status.initialized:\n case Status.queued:\n return
{t(\"pendingInQueue\")}
;\n case Status.preparing:\n return
{t(\"preparing\")}
;\n case Status.error:\n return (\n
\n {getErrMsg(error)}\n
\n
\n );\n case Status.finishing:\n return
{t(\"processing\")}
;\n case Status.resumable:\n return (\n
\n {t(\"progressDescription\", {\n uploaded: sizeToString(progress.total.loaded),\n total: sizeToString(progress.total.size),\n percentage: progress.total.percent.toFixed(2),\n })}\n
\n );\n case Status.processing:\n if (progress) {\n return (\n
\n {t(\"progressDescriptionFull\", {\n speed: getSpeedText(\n speed,\n speedAvg,\n useAvgSpeed\n ),\n uploaded: sizeToString(progress.total.loaded),\n total: sizeToString(progress.total.size),\n percentage: progress.total.percent.toFixed(2),\n })}\n
\n );\n }\n return
{t(\"progressDescriptionPlaceHolder\")}
;\n case Status.finished:\n return (\n
\n {t(\"uploadedTo\")}\n \n navigateToDst(uploader.task.dst)}\n >\n {parent === \"\" ? t(\"rootFolder\") : parent}\n \n \n
\n
\n );\n default:\n return
{t(\"unknownStatus\")}
;\n }\n }, [status, error, progress, speed, speedAvg, useAvgSpeed]);\n\n const resumeLabel = useMemo(\n () =>\n uploader.task.resumed && !fullScreen ? (\n \n ) : null,\n [status, fullScreen]\n );\n\n const continueLabel = useMemo(\n () =>\n status === Status.resumable && !fullScreen ? (\n \n ) : null,\n [status, fullScreen]\n );\n\n const progressBar = useMemo(\n () =>\n (status === Status.processing ||\n status === Status.finishing ||\n status === Status.resumable) &&\n progress ? (\n \n ) : null,\n [status, progress, theme]\n );\n\n const taskDetail = useMemo(() => {\n return (\n \n );\n }, [uploader, expanded]);\n\n const cancel = () => {\n setLoading(true);\n uploader.cancel().then(() => {\n setLoading(false);\n onCancel((u) => u.id != uploader.id);\n });\n };\n\n const stopRipple = (e) => {\n e.stopPropagation();\n };\n\n const secondaryAction = useMemo(() => {\n if (!taskHover && !fullScreen) {\n return <>;\n }\n\n const actions = [\n {\n show: status === Status.error,\n title: t(\"retry\"),\n click: retry,\n icon: ,\n loading: false,\n },\n {\n show: true,\n title:\n status === Status.finished\n ? t(\"deleteTask\")\n : t(\"cancelAndDelete\"),\n click: cancel,\n icon: ,\n loading: loading,\n },\n {\n show: status === Status.resumable,\n title: t(\"selectAndResume\"),\n click: () =>\n selectFile(uploader.task.dst, SelectType.File, uploader),\n icon: ,\n loading: false,\n },\n ];\n\n return (\n <>\n {actions.map((a) => (\n <>\n {a.show && (\n \n \n {\n e.stopPropagation();\n a.click();\n }}\n >\n {a.icon}\n \n \n \n )}\n \n ))}\n \n );\n }, [status, loading, taskHover, fullScreen, uploader]);\n\n const fileIcon = useMemo(() => {\n if (!fullScreen) {\n return ;\n }\n }, [uploader, fullScreen]);\n\n return (\n <>\n \n \n setTaskHover(false)}\n onMouseOver={() => setTaskHover(true)}\n >\n {progressBar}\n \n {fileIcon}\n \n
\n {uploader.task.name}\n
\n
{resumeLabel}
\n
{continueLabel}
\n
\n }\n secondary={\n
\n {statusText}\n
\n }\n />\n {secondaryAction}\n \n \n \n {taskDetail}\n \n \n \n );\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nexport function useUpload(uploader) {\n const startLoadedRef = useRef(0);\n const [status, setStatus] = useState(uploader.status);\n const [error, setError] = useState(uploader.error);\n const [progress, setProgress] = useState(uploader.progress);\n const dispatch = useDispatch();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n /* eslint-disable @typescript-eslint/no-empty-function */\n uploader.subscribe({\n onTransition: (newStatus) => {\n setStatus(newStatus);\n },\n onError: (err) => {\n setError(err);\n setStatus(uploader.status);\n },\n onProgress: (data) => {\n setProgress(data);\n },\n onMsg: (msg, color) => {\n ToggleSnackbar(\"top\", \"right\", msg, color);\n },\n });\n }, []);\n\n // 获取上传速度\n const [speed, speedAvg] = React.useMemo(() => {\n if (\n progress == null ||\n progress.total == null ||\n progress.total.loaded == null\n )\n return [0, 0];\n const duration = (Date.now() - (uploader.lastTime || 0)) / 1000;\n const durationTotal = (Date.now() - (uploader.startTime || 0)) / 1000;\n const res =\n progress.total.loaded > startLoadedRef.current\n ? Math.floor(\n (progress.total.loaded - startLoadedRef.current) /\n duration\n )\n : 0;\n const resAvg =\n progress.total.loaded > 0\n ? Math.floor(progress.total.loaded / durationTotal)\n : 0;\n\n startLoadedRef.current = progress.total.loaded;\n uploader.lastTime = Date.now();\n return [res, resAvg];\n }, [progress]);\n\n const retry = () => {\n uploader.reset();\n uploader.start();\n };\n\n return { status, error, progress, speed, speedAvg, retry };\n}\n","import React, { useState } from \"react\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Input,\n InputLabel,\n makeStyles,\n} from \"@material-ui/core\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Auth from \"../../middleware/Auth\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({}));\n\nexport default function ConcurrentOptionDialog({ open, onClose, onSave }) {\n const { t } = useTranslation();\n const [count, setCount] = useState(\n Auth.GetPreferenceWithDefault(\"concurrent_limit\", \"5\")\n );\n const classes = useStyles();\n\n return (\n \n \n {t(\"uploader.setConcurrent\")}\n \n\n \n \n \n {t(\"uploader.concurrentTaskNumber\")}\n \n setCount(e.target.value)}\n />\n \n \n\n \n \n
\n onSave(count)}\n >\n {t(\"ok\", { ns: \"common\" })}\n \n
\n
\n \n );\n}\n","import {\n Icon,\n ListItemIcon,\n makeStyles,\n Menu,\n MenuItem,\n Tooltip,\n} from \"@material-ui/core\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../../middleware/Api\";\nimport { TaskType } from \"../core/types\";\nimport { refreshStorage, toggleSnackbar } from \"../../../redux/explorer\";\nimport Divider from \"@material-ui/core/Divider\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport { DeleteEmpty } from \"mdi-material-ui\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport ConcurrentOptionDialog from \"../../Modals/ConcurrentOption\";\nimport Auth from \"../../../middleware/Auth\";\nimport { ClearAll, Replay } from \"@material-ui/icons\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n minWidth: 38,\n },\n}));\n\nexport default function MoreActions({\n anchorEl,\n onClose,\n uploadManager,\n deleteTask,\n useAvgSpeed,\n setUseAvgSpeed,\n filter,\n setFilter,\n sorter,\n setSorter,\n cleanFinished,\n retryFailed,\n}) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"uploader\" });\n const classes = useStyles();\n const dispatch = useDispatch();\n const [concurrentDialog, setConcurrentDialog] = useState(false);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const RefreshStorage = useCallback(\n () => dispatch(refreshStorage()),\n [dispatch]\n );\n\n const actionClicked = (next) => () => {\n onClose();\n next();\n };\n\n const cleanupSessions = () => {\n uploadManager.cleanupSessions();\n API.delete(\"/file/upload\")\n .then((response) => {\n if (response.rawData.code === 0) {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"uploadSessionCleaned\"),\n \"success\"\n );\n } else {\n ToggleSnackbar(\n \"top\",\n \"right\",\n response.rawData.msg,\n \"warning\"\n );\n }\n deleteTask((u) => u.task.type !== TaskType.resumeHint);\n RefreshStorage();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const open = Boolean(anchorEl);\n const id = open ? \"uploader-action-popover\" : undefined;\n\n const listItems = useMemo(\n () => [\n {\n tooltip: t(\"hideCompletedTooltip\"),\n onClick: () =>\n setFilter(filter === \"default\" ? \"ongoing\" : \"default\"),\n icon: filter !== \"default\" ? : ,\n text: t(\"hideCompleted\"),\n divider: true,\n },\n {\n tooltip: t(\"addTimeAscTooltip\"),\n onClick: () => setSorter(\"default\"),\n icon: sorter === \"default\" ? : ,\n text: t(\"addTimeAsc\"),\n divider: false,\n },\n {\n tooltip: t(\"addTimeDescTooltip\"),\n onClick: () => setSorter(\"reverse\"),\n icon: sorter === \"reverse\" ? : ,\n text: t(\"addTimeDesc\"),\n divider: true,\n },\n {\n tooltip: t(\"showInstantSpeedTooltip\"),\n onClick: () => setUseAvgSpeed(false),\n icon: useAvgSpeed ? : ,\n text: t(\"showInstantSpeed\"),\n divider: false,\n },\n {\n tooltip: t(\"showAvgSpeedTooltip\"),\n onClick: () => setUseAvgSpeed(true),\n icon: !useAvgSpeed ? : ,\n text: t(\"showAvgSpeed\"),\n divider: true,\n },\n {\n tooltip: t(\"cleanAllSessionTooltip\"),\n onClick: () => cleanupSessions(),\n icon: ,\n text: t(\"cleanAllSession\"),\n divider: false,\n },\n {\n tooltip: t(\"cleanCompletedTooltip\"),\n onClick: () => cleanFinished(),\n icon: ,\n text: t(\"cleanCompleted\"),\n divider: false,\n },\n {\n tooltip: t(\"retryFailedTasksTooltip\"),\n onClick: () => retryFailed(),\n icon: ,\n text: t(\"retryFailedTasks\"),\n divider: true,\n },\n {\n tooltip: t(\"setConcurrentTooltip\"),\n onClick: () => setConcurrentDialog(true),\n icon: ,\n text: t(\"setConcurrent\"),\n divider: false,\n },\n ],\n [\n useAvgSpeed,\n setUseAvgSpeed,\n sorter,\n setSorter,\n filter,\n setFilter,\n cleanFinished,\n ]\n );\n\n const onConcurrentLimitSave = (val) => {\n val = parseInt(val);\n if (val > 0) {\n Auth.SetPreference(\"concurrent_limit\", val);\n uploadManager.changeConcurrentLimit(parseInt(val));\n }\n setConcurrentDialog(false);\n };\n\n return (\n <>\n \n {listItems.map((item) => (\n <>\n \n \n \n {item.icon}\n \n {item.text}\n \n \n {item.divider && }\n \n ))}\n \n setConcurrentDialog(false)}\n onSave={onConcurrentLimitSave}\n />\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport {\n Accordion,\n AccordionDetails,\n AppBar,\n Dialog,\n DialogContent,\n Fade,\n IconButton,\n makeStyles,\n Slide,\n Toolbar,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandLess\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport classnames from \"classnames\";\nimport UploadTask from \"./UploadTask\";\nimport { MoreHoriz } from \"@material-ui/icons\";\nimport MoreActions from \"./MoreActions\";\nimport { useSelector } from \"react-redux\";\nimport { Virtuoso } from \"react-virtuoso\";\nimport Nothing from \"../../Placeholder/Nothing\";\nimport { lighten } from \"@material-ui/core/styles/colorManipulator\";\nimport { Status } from \"../core/uploader/base\";\nimport Auth from \"../../../middleware/Auth\";\nimport { useTranslation } from \"react-i18next\";\nimport { useUpload } from \"../UseUpload\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nconst useStyles = makeStyles((theme) => ({\n rootOverwrite: {\n top: \"auto!important\",\n left: \"auto!important\",\n },\n appBar: {\n position: \"relative\",\n },\n flex: {\n flex: 1,\n },\n popup: {\n alignItems: \"flex-end\",\n justifyContent: \"flex-end\",\n },\n dialog: {\n margin: 0,\n right: 10,\n bottom: 10,\n zIndex: 9999,\n position: \"fixed\",\n inset: \"-1!important\",\n },\n paddingZero: {\n padding: 0,\n },\n dialogContent: {\n [theme.breakpoints.up(\"md\")]: {\n width: 500,\n minHeight: 300,\n maxHeight: \"calc(100vh - 140px)\",\n },\n padding: 0,\n paddingTop: \"0!important\",\n },\n virtualList: {\n height: \"100%\",\n maxHeight: \"calc(100vh - 56px)\",\n [theme.breakpoints.up(\"md\")]: {\n minHeight: 300,\n maxHeight: \"calc(100vh - 140px)\",\n },\n },\n expandIcon: {\n transform: \"rotate(0deg)\",\n transition: theme.transitions.create(\"transform\", {\n duration: theme.transitions.duration.shortest,\n }),\n },\n expandIconExpanded: {\n transform: \"rotate(180deg)\",\n },\n toolbar: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n progress: {\n transition: \"width .4s linear\",\n zIndex: -1,\n height: \"100%\",\n position: \"absolute\",\n left: 0,\n top: 0,\n },\n}));\n\nconst sorters = {\n default: (a, b) => a.id - b.id,\n reverse: (a, b) => b.id - a.id,\n};\n\nconst filters = {\n default: (u) => true,\n ongoing: (u) => u.status < Status.finished,\n};\n\nexport default function TaskList({\n open,\n onClose,\n selectFile,\n taskList,\n onCancel,\n uploadManager,\n progress,\n setUploaders,\n}) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"uploader\" });\n const classes = useStyles();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const path = useSelector((state) => state.navigator.path);\n const [expanded, setExpanded] = useState(true);\n const [useAvgSpeed, setUseAvgSpeed] = useState(\n Auth.GetPreferenceWithDefault(\"use_avg_speed\", true)\n );\n const [anchorEl, setAnchorEl] = useState(null);\n const [filter, setFilter] = useState(\n Auth.GetPreferenceWithDefault(\"task_filter\", \"default\")\n );\n const [sorter, setSorter] = useState(\n Auth.GetPreferenceWithDefault(\"task_sorter\", \"default\")\n );\n const [refreshList, setRefreshList] = useState(false);\n\n const handleActionClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleActionClose = () => {\n setAnchorEl(null);\n };\n\n const close = (e, reason) => {\n if (reason !== \"backdropClick\") {\n onClose();\n } else {\n setExpanded(false);\n }\n };\n const handlePanelChange = (event, isExpanded) => {\n setExpanded(isExpanded);\n };\n\n useMemo(() => {\n if (open) {\n setExpanded(true);\n }\n }, [taskList]);\n\n const progressBar = useMemo(\n () =>\n progress.totalSize > 0 ? (\n 0 && !expanded}>\n
\n \n
\n
\n ) : null,\n [progress, expanded, classes, theme]\n );\n\n const list = useMemo(() => {\n const currentList = taskList\n .filter(filters[filter])\n .sort(sorters[sorter]);\n if (currentList.length === 0) {\n return ;\n }\n\n return (\n (\n setRefreshList((r) => !r)}\n />\n )}\n />\n );\n }, [\n classes,\n taskList,\n useAvgSpeed,\n fullScreen,\n filter,\n sorter,\n refreshList,\n ]);\n\n const retryFailed = () => {\n taskList.forEach((task) => {\n if (task.status === Status.error) {\n task.reset();\n task.start();\n }\n });\n };\n\n return (\n <>\n {\n Auth.SetPreference(\"use_avg_speed\", v);\n setUseAvgSpeed(v);\n }}\n filter={filter}\n sorter={sorter}\n setFilter={(v) => {\n Auth.SetPreference(\"task_filter\", v);\n setFilter(v);\n }}\n setSorter={(v) => {\n Auth.SetPreference(\"task_sorter\", v);\n setSorter(v);\n }}\n retryFailed={retryFailed}\n cleanFinished={() =>\n setUploaders((u) => u.filter(filters[\"ongoing\"]))\n }\n />\n \n \n \n {progressBar}\n \n \n \n \n \n \n \n {t(\"uploadTasks\")}\n \n \n \n \n \n \n \n selectFile(path)}\n >\n \n \n \n {!fullScreen && (\n \n setExpanded(!expanded)}\n >\n \n \n \n )}\n \n \n \n \n {list}\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport Backdrop from \"@material-ui/core/Backdrop\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport { Typography } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: \"#fff\",\n flexDirection: \"column\",\n },\n })\n);\n\nexport function DropFileBackground({ open }) {\n const classes = useStyles();\n const { t } = useTranslation();\n return (\n \n
\n \n
\n
\n \n {t(\"uploader.dropFileHere\")}\n \n
\n
\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport UploadManager, { SelectType } from \"./core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport UploadButton from \"../Dial/Create\";\nimport pathHelper from \"../../utils/page\";\nimport { useLocation } from \"react-router-dom\";\nimport { UploaderError } from \"./core/errors\";\nimport TaskList from \"./Popup/TaskList\";\nimport { Status } from \"./core/uploader/base\";\nimport { DropFileBackground } from \"../Placeholder/DropFile\";\nimport {\n refreshFileList,\n refreshStorage,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport Auth from \"../../middleware/Auth\";\nimport { useTranslation } from \"react-i18next\";\n\nlet totalProgressCollector = null;\nlet lastProgressStart = -1;\nlet dragCounter = 0;\n\nexport default function Uploader() {\n const { t } = useTranslation(\"application\", { keyPrefix: \"uploader\" });\n const [uploaders, setUploaders] = useState([]);\n const [taskListOpen, setTaskListOpen] = useState(false);\n const [dropBgOpen, setDropBgOpen] = useState(0);\n const [totalProgress, setTotalProgress] = useState({\n totalSize: 0,\n processedSize: 0,\n total: 0,\n processed: 0,\n });\n const search = useSelector((state) => state.explorer.search);\n const policy = useSelector((state) => state.explorer.currentPolicy);\n const isLogin = useSelector((state) => state.viewUpdate.isLogin);\n const path = useSelector((state) => state.navigator.path);\n const fileSelectCounter = useSelector(\n (state) => state.viewUpdate.openFileSelector\n );\n const folderSelectCounter = useSelector(\n (state) => state.viewUpdate.openFolderSelector\n );\n const location = useLocation();\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const RefreshFileList = useCallback(() => dispatch(refreshFileList()), [\n dispatch,\n ]);\n const RefreshStorage = useCallback(() => dispatch(refreshStorage()), [\n dispatch,\n ]);\n\n const enableUploader = useMemo(\n () => pathHelper.isHomePage(location.pathname) && isLogin && !search,\n [location.pathname, isLogin, search]\n );\n\n const taskAdded = (original = null) => (tasks) => {\n if (original !== null) {\n if (tasks.length !== 1 || tasks[0].key() !== original.key()) {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"fileNotMatchError\"),\n \"warning\"\n );\n return;\n }\n }\n\n tasks.forEach((t) => t.start());\n\n setTaskListOpen(true);\n setUploaders((uploaders) => {\n if (original !== null) {\n uploaders = uploaders.filter((u) => u.key() !== original.key());\n }\n\n return [...uploaders, ...tasks];\n });\n };\n\n const uploadManager = useMemo(() => {\n return new UploadManager({\n logLevel: \"INFO\",\n concurrentLimit: parseInt(\n Auth.GetPreferenceWithDefault(\"concurrent_limit\", \"5\")\n ),\n dropZone: document.querySelector(\"body\"),\n onToast: (type, msg) => {\n ToggleSnackbar(\"top\", \"right\", msg, type);\n },\n onDropOver: (e) => {\n dragCounter++;\n setDropBgOpen((value) => !value);\n },\n onDropLeave: (e) => {\n dragCounter--;\n setDropBgOpen((value) => !value);\n },\n onDropFileAdded: taskAdded(),\n });\n }, []);\n\n useEffect(() => {\n uploadManager.setPolicy(policy, path);\n }, [policy]);\n\n useEffect(() => {\n const unfinished = uploadManager.resumeTasks();\n setUploaders((uploaders) => [...uploaders, ...unfinished]);\n if (!totalProgressCollector) {\n totalProgressCollector = setInterval(() => {\n const progress = {\n totalSize: 0,\n processedSize: 0,\n total: 0,\n processed: 0,\n };\n setUploaders((uploaders) => {\n uploaders.forEach((u) => {\n if (u.id <= lastProgressStart) {\n return;\n }\n\n progress.totalSize += u.task.size;\n progress.total += 1;\n\n if (\n u.status === Status.finished ||\n u.status === Status.canceled ||\n u.status === Status.error\n ) {\n progress.processedSize += u.task.size;\n progress.processed += 1;\n }\n\n if (\n u.status === Status.added ||\n u.status === Status.initialized ||\n u.status === Status.queued ||\n u.status === Status.preparing ||\n u.status === Status.processing ||\n u.status === Status.finishing\n ) {\n progress.processedSize += u.progress\n ? u.progress.total.loaded\n : 0;\n }\n });\n\n if (\n progress.total > 0 &&\n progress.processed === progress.total\n ) {\n lastProgressStart = uploaders[uploaders.length - 1].id;\n }\n return uploaders;\n });\n\n if (\n progress.total > 0 &&\n progress.total === progress.processed\n ) {\n RefreshFileList();\n RefreshStorage();\n }\n\n setTotalProgress(progress);\n }, 2000);\n }\n }, []);\n\n const selectFile = (path, type = SelectType.File, original = null) => {\n setTaskListOpen(true);\n\n // eslint-disable-next-line no-unreachable\n uploadManager\n .select(path, type)\n .then(taskAdded(original))\n .catch((e) => {\n if (e instanceof UploaderError) {\n ToggleSnackbar(\"top\", \"right\", e.Message(), \"warning\");\n } else {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"unknownError\", { msg: e.message }),\n \"error\"\n );\n }\n });\n };\n\n useEffect(() => {\n if (fileSelectCounter > 0) {\n selectFile(path);\n }\n }, [fileSelectCounter]);\n\n useEffect(() => {\n if (folderSelectCounter > 0) {\n selectFile(path, SelectType.Directory);\n }\n }, [folderSelectCounter]);\n\n const deleteTask = (filter) => {\n setUploaders((uploaders) => uploaders.filter(filter));\n };\n\n return (\n <>\n {enableUploader && (\n <>\n 0} />\n setTaskListOpen(true)}\n />\n setTaskListOpen(false)}\n setUploaders={setUploaders}\n />\n \n )}\n \n );\n}\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport Auth from \"../middleware/Auth\";\nimport i18next from \"../i18n\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nlet userTimezone = \"\";\ntry {\n userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n} catch (e) {\n console.log(e);\n}\n\nif (!userTimezone || userTimezone==\"Etc/Unknown\") {\n userTimezone = \"Asia/Shanghai\";\n}\n\nconst preferTimeZone = Auth.GetPreference(\"timeZone\");\nexport let timeZone = preferTimeZone ? preferTimeZone : userTimezone;\n\nexport function refreshTimeZone() {\n timeZone = Auth.GetPreference(\"timeZone\");\n timeZone = timeZone ? timeZone : userTimezone;\n}\n\nexport function formatLocalTime(time) {\n return i18next.t(\"intlDateTime\", {\n ns: \"common\",\n val: dayjs(time).tz(timeZone).toDate(),\n formatParams: {\n val: {\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\",\n },\n },\n });\n}\n\nexport function validateTimeZone(name) {\n try {\n dayjs().tz(name).format();\n } catch (e) {\n return false;\n }\n return true;\n}\n","import { ThunkAction } from \"redux-thunk\";\nimport { AnyAction } from \"redux\";\nimport Auth from \"../../middleware/Auth\";\nimport { askForOption } from \"../explorer/async\";\nimport i18next, { languages } from \"../../i18n\";\n\nexport interface ActionSetSubtitle extends AnyAction {\n type: \"SET_SUBTITLE\";\n title: string;\n}\n\nexport const setSubtitle = (title: string): ActionSetSubtitle => {\n return {\n type: \"SET_SUBTITLE\",\n title,\n };\n};\n\nexport const closeContextMenu = () => {\n return {\n type: \"CLOSE_CONTEXT_MENU\",\n };\n};\n\nexport const changeContextMenu = (type: string, open: boolean) => {\n return {\n type: \"CHANGE_CONTEXT_MENU\",\n menuType: type,\n open: open,\n };\n};\n\nexport const changeSubTitle = (\n title: string\n): ThunkAction => {\n return (dispatch, getState) => {\n const state = getState();\n document.title =\n title === null || title === undefined\n ? state.siteConfig.title\n : title + \" - \" + state.siteConfig.title;\n dispatch(setSubtitle(title));\n };\n};\n\nexport const setOptionModal = (option: any) => {\n return {\n type: \"SET_OPTION_MODAL\",\n option: option,\n };\n};\n\nexport const openFileSelector = () => {\n return {\n type: \"OPEN_FILE_SELECTOR\",\n };\n};\n\nexport const openFolderSelector = () => {\n return {\n type: \"OPEN_FOLDER_SELECTOR\",\n };\n};\n\nexport const setPagination = (pagination) => {\n return {\n type: \"SET_PAGINATION\",\n pagination: pagination,\n };\n};\n\nexport const setShareInfo = (shareInfo) => {\n return {\n type: \"SET_SHARE_INFO\",\n shareInfo: shareInfo,\n };\n};\n\nexport const changePageSize = (\n size: number\n): ThunkAction => {\n return (dispatch, getState) => {\n const {\n explorer: { dirList, fileList },\n viewUpdate: { pagination },\n } = getState();\n const total = dirList.length + fileList.length;\n let page = pagination.page;\n if (pagination.page * size > total) {\n page = Math.max(Math.ceil(total / size), 1);\n } else if (size === -1) {\n page = 1;\n }\n Auth.SetPreference(\"pagination\", size);\n dispatch(\n setPagination({\n ...pagination,\n size: size,\n page: page,\n })\n );\n };\n};\n\nexport const selectLanguage = (): ThunkAction => {\n return async (dispatch, getState) => {\n let option: any;\n let lng = \"\";\n try {\n const allOptions = languages.map((e) => {\n return {\n key: e.code,\n name: e.displayName,\n };\n });\n option = await dispatch(\n askForOption(allOptions, i18next.t(\"setting.language\"))\n );\n } catch (e) {\n console.log(e);\n return;\n }\n\n lng = option.key;\n await i18next.changeLanguage(lng);\n };\n};\n","import React from \"react\";\nimport { mediaType } from \"../../config\";\nimport ImageIcon from \"@material-ui/icons/PhotoSizeSelectActual\";\nimport VideoIcon from \"@material-ui/icons/Videocam\";\nimport AudioIcon from \"@material-ui/icons/Audiotrack\";\nimport PdfIcon from \"@material-ui/icons/PictureAsPdf\";\nimport {\n Android,\n FileExcelBox,\n FilePowerpointBox,\n FileWordBox,\n LanguageC,\n LanguageCpp,\n LanguageGo,\n LanguageJavascript,\n LanguagePhp,\n LanguagePython,\n MagnetOn,\n ScriptText,\n WindowRestore,\n ZipBox,\n} from \"mdi-material-ui\";\nimport FileShowIcon from \"@material-ui/icons/InsertDriveFile\";\nimport { lighten } from \"@material-ui/core/styles\";\nimport useTheme from \"@material-ui/core/styles/useTheme\";\nimport { Avatar } from \"@material-ui/core\";\nimport { MenuBook } from \"@material-ui/icons\";\n\nconst icons = {\n audio: {\n color: \"#651fff\",\n icon: AudioIcon,\n },\n video: {\n color: \"#d50000\",\n icon: VideoIcon,\n },\n image: {\n color: \"#d32f2f\",\n icon: ImageIcon,\n },\n pdf: {\n color: \"#f44336\",\n icon: PdfIcon,\n },\n word: {\n color: \"#538ce5\",\n icon: FileWordBox,\n },\n ppt: {\n color: \"rgb(239, 99, 63)\",\n icon: FilePowerpointBox,\n },\n excel: {\n color: \"#4caf50\",\n icon: FileExcelBox,\n },\n text: {\n color: \"#607d8b\",\n icon: ScriptText,\n },\n torrent: {\n color: \"#5c6bc0\",\n icon: MagnetOn,\n },\n zip: {\n color: \"#f9a825\",\n icon: ZipBox,\n },\n excute: {\n color: \"#1a237e\",\n icon: WindowRestore,\n },\n android: {\n color: \"#8bc34a\",\n icon: Android,\n },\n file: {\n color: \"#607d8b\",\n icon: FileShowIcon,\n },\n php: {\n color: \"#777bb3\",\n icon: LanguagePhp,\n },\n go: {\n color: \"#16b3da\",\n icon: LanguageGo,\n },\n python: {\n color: \"#3776ab\",\n icon: LanguagePython,\n },\n c: {\n color: \"#a8b9cc\",\n icon: LanguageC,\n },\n cpp: {\n color: \"#004482\",\n icon: LanguageCpp,\n },\n js: {\n color: \"#f4d003\",\n icon: LanguageJavascript,\n },\n epub: {\n color: \"#81b315\",\n icon: MenuBook,\n },\n};\n\nconst getColor = (theme, color) =>\n theme.palette.type === \"light\" ? color : lighten(color, 0.2);\n\nlet color;\n\nconst TypeIcon = (props) => {\n const theme = useTheme();\n\n const fileSuffix = props.fileName.split(\".\").pop().toLowerCase();\n let fileType = \"file\";\n Object.keys(mediaType).forEach((k) => {\n if (mediaType[k].indexOf(fileSuffix) !== -1) {\n fileType = k;\n }\n });\n const IconComponent = icons[fileType].icon;\n color = getColor(theme, icons[fileType].color);\n if (props.getColorValue) {\n props.getColorValue(color);\n }\n\n return (\n <>\n {props.isUpload && (\n \n \n \n )}\n {!props.isUpload && (\n \n )}\n \n );\n};\n\nexport default TypeIcon;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null &&\n contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport Auth from \"./Auth\";\nimport { Route, Redirect } from \"react-router-dom\";\n\nfunction AuthRoute({ children, ...rest }) {\n return (\n \n Auth.Check(rest.isLogin) ? (\n children\n ) : (\n \n )\n }\n />\n );\n}\n\nexport default AuthRoute;\n","import React from \"react\";\nimport Auth from \"./Auth\";\nimport { Route, Redirect } from \"react-router-dom\";\n\nfunction NoAuthRoute({ children, ...rest }) {\n return (\n \n !Auth.Check(rest.isLogin) ? (\n children\n ) : (\n \n )\n }\n />\n );\n}\n\nexport default NoAuthRoute;\n","import React from \"react\";\nimport { Facebook } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"80%\",\n [theme.breakpoints.up(\"md\")]: {\n width: \" 50%\",\n },\n\n marginTop: 30,\n },\n}));\n\nconst MyLoader = (props) => {\n return (\n \n );\n};\n\nfunction PageLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n \n \n \n );\n}\n\nexport default PageLoading;\n","import React from \"react\";\nimport SentimentVeryDissatisfiedIcon from \"@material-ui/icons/SentimentVeryDissatisfied\";\nimport { lighten, makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n fontSize: \"160px\",\n },\n emptyContainer: {\n bottom: \"0\",\n height: \"300px\",\n margin: \"50px auto\",\n width: \"300px\",\n color: lighten(theme.palette.text.disabled, 0.4),\n textAlign: \"center\",\n paddingTop: \"20px\",\n },\n emptyInfoBig: {\n fontSize: \"25px\",\n color: lighten(theme.palette.text.disabled, 0.4),\n },\n}));\n\nexport default function Notice(props) {\n const classes = useStyles();\n return (\n
\n \n
{props.msg}
\n
\n );\n}\n","import React from \"react\";\nimport ContentLoader from \"react-content-loader\";\n\nconst MyLoader = () => (\n \n \n \n);\n\nfunction captchaPlacholder() {\n return ;\n}\n\nexport default captchaPlacholder;\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../middleware/Api\";\nimport {\n FormControl,\n Input,\n InputAdornment,\n InputLabel,\n makeStyles,\n TextField,\n} from \"@material-ui/core\";\nimport Placeholder from \"../component/Placeholder/Captcha\";\nimport { defaultValidate, useStyle } from \"./useCaptcha\";\nimport { toggleSnackbar } from \"../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nconst NormalCaptcha = forwardRef(function NormalCaptcha(\n { captchaRef, setLoading },\n ref\n) {\n const { t } = useTranslation();\n const classes = useStyle();\n\n const [captcha, setCaptcha] = useState(\"\");\n const [captchaData, setCaptchaData] = useState(null);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const refreshCaptcha = () => {\n API.get(\"/site/captcha\")\n .then((response) => {\n setCaptchaData(response.data);\n setLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"login.captchaError\", { message: error.message }),\n \"error\"\n );\n });\n };\n\n useEffect(() => {\n ref.current = refreshCaptcha;\n refreshCaptcha();\n }, []);\n\n useEffect(() => {\n captchaRef.current.captchaCode = captcha;\n }, [captcha]);\n\n return (\n
\n \n setCaptcha(e.target.value)}\n value={captcha}\n autoComplete\n InputProps={{\n endAdornment: (\n \n \n {captchaData === null && }\n {captchaData !== null && (\n \n )}\n
\n \n ),\n }}\n />\n {\" \"}\n \n );\n});\n\nexport default function useNormalCaptcha(captchaRefreshRef, setLoading) {\n const isValidate = useRef({\n isValidate: true,\n });\n\n const captchaParamsRef = useRef({\n captchaCode: \"\",\n });\n\n const CaptchaRender = useCallback(\n function Normal() {\n return (\n \n );\n },\n [captchaParamsRef, captchaRefreshRef, setLoading]\n );\n\n return {\n isValidate,\n validate: defaultValidate,\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default class ReCAPTCHA extends React.Component {\n constructor() {\n super();\n this.handleExpired = this.handleExpired.bind(this);\n this.handleErrored = this.handleErrored.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleRecaptchaRef = this.handleRecaptchaRef.bind(this);\n }\n\n getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n return null;\n }\n\n getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n return null;\n }\n\n execute() {\n const { grecaptcha } = this.props;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n }\n\n reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n }\n\n handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n }\n\n handleErrored() {\n if (this.props.onErrored) this.props.onErrored();\n }\n\n handleChange(token) {\n if (this.props.onChange) this.props.onChange(token);\n }\n\n explicitRender() {\n if (\n this.props.grecaptcha &&\n this.props.grecaptcha.render &&\n this._widgetId === undefined\n ) {\n const wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge,\n });\n this.captcha.appendChild(wrapper);\n }\n if (\n this._executeRequested &&\n this.props.grecaptcha &&\n this._widgetId !== undefined\n ) {\n this._executeRequested = false;\n this.execute();\n }\n }\n\n componentDidMount() {\n this.explicitRender();\n }\n\n componentDidUpdate() {\n this.explicitRender();\n }\n\n componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n }\n\n delayOfCaptchaIframeRemoving() {\n const temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\";\n\n // move of the recaptcha to a temporary node\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n }\n\n // delete the temporary node after reset will be done\n setTimeout(() => {\n document.body.removeChild(temporaryNode);\n }, 5000);\n }\n\n handleRecaptchaRef(elem) {\n this.captcha = elem;\n }\n\n render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n /* eslint-disable no-unused-vars */\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n sitekey,\n onChange,\n theme,\n type,\n tabindex,\n onExpired,\n onErrored,\n size,\n stoken,\n grecaptcha,\n badge,\n hl,\n ...childProps\n } = this.props;\n /* eslint-enable no-unused-vars */\n return
;\n }\n}\n\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"]),\n};\nReCAPTCHA.defaultProps = {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange: () => {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\",\n};\n","import ReCAPTCHA from \"./ReCaptchaWrapper\";\nimport makeAsyncScriptLoader from \"react-async-script\";\n\nconst callbackName = \"onloadcallback\";\nconst globalName = \"grecaptcha\";\n\nfunction getURL() {\n const hostname = \"recaptcha.net\";\n return `https://${hostname}/recaptcha/api.js?onload=${callbackName}&render=explicit`;\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName,\n globalName,\n})(ReCAPTCHA);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { FormControl } from \"@material-ui/core\";\nimport ReCaptcha from \"../component/Login/ReCaptcha\";\nimport { defaultValidate, useStyle } from \"./useCaptcha\";\n\nconst Recaptcha = ({ captchaRef, setLoading }) => {\n const classes = useStyle();\n\n const [captcha, setCaptcha] = useState(\"\");\n\n const reCaptchaKey = useSelector(\n (state) => state.siteConfig.captcha_ReCaptchaKey\n );\n\n useEffect(() => {\n captchaRef.current.captchaCode = captcha;\n }, [captcha]);\n\n useEffect(() => setLoading(false), []);\n\n return (\n
\n \n
\n setCaptcha(value)}\n id=\"captcha\"\n name=\"captcha\"\n />\n
\n
{\" \"}\n
\n );\n};\n\nexport default function useRecaptcha(setLoading) {\n const isValidate = useRef({\n isValidate: true,\n });\n\n const captchaParamsRef = useRef({\n captchaCode: \"\",\n });\n\n const CaptchaRender = useCallback(\n function RecaptchaRender() {\n return (\n \n );\n },\n [captchaParamsRef, setLoading]\n );\n\n return {\n isValidate,\n validate: defaultValidate,\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import React, { forwardRef, useCallback, useRef } from \"react\";\nimport Script from \"react-load-script\";\nimport { useSelector } from \"react-redux\";\n\nconst TCaptcha = forwardRef(function TCaptcha(\n { captchaRef, setLoading, isValidateRef, submitRef },\n ref\n) {\n const appid = useSelector(\n (state) => state.siteConfig.tcaptcha_captcha_app_id\n );\n const onLoad = () => {\n try {\n ref.current = new window.TencentCaptcha(appid, function (res) {\n if (res.ret === 0) {\n captchaRef.current.ticket = res.ticket;\n captchaRef.current.randstr = res.randstr;\n\n isValidateRef.current.isValidate = true;\n submitRef.current.submit();\n console.log(submitRef);\n } else {\n submitRef.current.setLoading(false);\n }\n });\n } catch (e) {\n console.error(e);\n }\n setLoading(false);\n };\n return (\n \n );\n});\n\nexport default function useTCaptcha(setLoading) {\n const isValidate = useRef({\n isValidate: false,\n });\n const captchaParamsRef = useRef({\n ticket: \"\",\n randstr: \"\",\n });\n const submitRef = useRef({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n submit: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setLoading: () => {},\n });\n\n const captchaRef = useRef();\n\n const CaptchaRender = useCallback(\n function TCaptchaRender() {\n return (\n \n );\n },\n [captchaParamsRef, setLoading, isValidate, submitRef, captchaRef]\n );\n\n return {\n isValidate: isValidate,\n validate: (submit, setLoading) => {\n submitRef.current.submit = submit;\n submitRef.current.setLoading = setLoading;\n captchaRef.current.show();\n },\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import { useSelector } from \"react-redux\";\nimport { useRef, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport useNormalCaptcha from \"./normal\";\nimport useRecaptcha from \"./recaptcha\";\nimport useTCaptcha from \"./tcaptcha\";\n\nexport const useStyle = makeStyles((theme) => ({\n captchaContainer: {\n display: \"flex\",\n marginTop: \"10px\",\n alignItems: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: 0,\n display: \"block\",\n },\n },\n captchaInputContainer: {\n marginTop: 0,\n },\n captchaImageContainer: {\n cursor: \"pointer\",\n marginLeft: \"1rem\",\n [theme.breakpoints.down(\"sm\")]: {\n marginLeft: 0,\n },\n },\n captchaImage: {\n borderRadius: theme.shape.borderRadius,\n height: 48,\n marginTop: 4,\n },\n}));\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\nexport const defaultValidate = (submit, setLoading) => {};\n\nexport const useCaptcha = () => {\n const captchaType = useSelector((state) => state.siteConfig.captcha_type);\n\n const [captchaLoading, setCaptchaLoading] = useState(true);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n const captchaRefreshRef = useRef(() => {});\n\n const normal = useNormalCaptcha(captchaRefreshRef, setCaptchaLoading);\n const recaptcha = useRecaptcha(setCaptchaLoading);\n const tcaptcha = useTCaptcha(setCaptchaLoading);\n\n switch (captchaType) {\n case \"normal\":\n return { ...normal, captchaRefreshRef, captchaLoading };\n case \"recaptcha\":\n return { ...recaptcha, captchaRefreshRef, captchaLoading };\n case \"tcaptcha\":\n return { ...tcaptcha, captchaRefreshRef, captchaLoading };\n default:\n return { ...normal, captchaRefreshRef, captchaLoading };\n }\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\nimport {\n Avatar,\n Button,\n Divider,\n FormControl,\n Link,\n makeStyles,\n Paper,\n TextField,\n Typography,\n} from \"@material-ui/core\";\nimport { Link as RouterLink, useHistory } from \"react-router-dom\";\nimport API from \"../../middleware/Api\";\nimport Auth from \"../../middleware/Auth\";\nimport { bufferDecode, bufferEncode } from \"../../utils/index\";\nimport {\n EmailOutlined,\n Fingerprint,\n VpnKey,\n VpnKeyOutlined,\n} from \"@material-ui/icons\";\nimport VpnIcon from \"@material-ui/icons/VpnKeyOutlined\";\nimport { useLocation } from \"react-router\";\nimport { useCaptcha } from \"../../hooks/useCaptcha\";\nimport {\n applyThemes,\n setSessionStatus,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport { useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(\"sm\")]: {\n width: 400,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 110,\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\n 3\n )}px`,\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n marginTop: theme.spacing(1),\n },\n submit: {\n marginTop: theme.spacing(3),\n },\n link: {\n marginTop: \"20px\",\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"space-between\",\n },\n buttonContainer: {\n display: \"flex\",\n },\n authnLink: {\n textAlign: \"center\",\n marginTop: 16,\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nfunction LoginForm() {\n const { t } = useTranslation();\n\n const [email, setEmail] = useState(\"\");\n const [pwd, setPwd] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [useAuthn, setUseAuthn] = useState(false);\n const [twoFA, setTwoFA] = useState(false);\n const [faCode, setFACode] = useState(\"\");\n\n const loginCaptcha = useSelector((state) => state.siteConfig.loginCaptcha);\n const registerEnabled = useSelector(\n (state) => state.siteConfig.registerEnabled\n );\n const title = useSelector((state) => state.siteConfig.title);\n const QQLogin = useSelector((state) => state.siteConfig.QQLogin);\n const authn = useSelector((state) => state.siteConfig.authn);\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const ApplyThemes = useCallback(\n (theme) => dispatch(applyThemes(theme)),\n [dispatch]\n );\n const SetSessionStatus = useCallback(\n (status) => dispatch(setSessionStatus(status)),\n [dispatch]\n );\n\n const history = useHistory();\n const location = useLocation();\n const {\n captchaLoading,\n isValidate,\n validate,\n CaptchaRender,\n captchaRefreshRef,\n captchaParamsRef,\n } = useCaptcha();\n const query = useQuery();\n\n const classes = useStyles();\n\n useEffect(() => {\n setEmail(query.get(\"username\"));\n }, [location]);\n\n const afterLogin = (data) => {\n Auth.authenticate(data);\n\n // 设置用户主题色\n if (data[\"preferred_theme\"] !== \"\") {\n ApplyThemes(data[\"preferred_theme\"]);\n }\n\n // 设置登录状态\n SetSessionStatus(true);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n if (query.get(\"redirect\")) {\n history.push(query.get(\"redirect\"));\n } else {\n history.push(\"/home\");\n }\n ToggleSnackbar(\"top\", \"right\", t(\"login.success\"), \"success\");\n\n localStorage.removeItem(\"siteConfigCache\");\n };\n\n const authnLogin = (e) => {\n e.preventDefault();\n if (!navigator.credentials) {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"login.browserNotSupport\"),\n \"warning\"\n );\n\n return;\n }\n\n setLoading(true);\n\n API.get(\"/user/authn/\" + email)\n .then((response) => {\n const credentialRequestOptions = response.data;\n console.log(credentialRequestOptions);\n credentialRequestOptions.publicKey.challenge = bufferDecode(\n credentialRequestOptions.publicKey.challenge\n );\n credentialRequestOptions.publicKey.allowCredentials.forEach(\n function (listItem) {\n listItem.id = bufferDecode(listItem.id);\n }\n );\n\n return navigator.credentials.get({\n publicKey: credentialRequestOptions.publicKey,\n });\n })\n .then((assertion) => {\n const authData = assertion.response.authenticatorData;\n const clientDataJSON = assertion.response.clientDataJSON;\n const rawId = assertion.rawId;\n const sig = assertion.response.signature;\n const userHandle = assertion.response.userHandle;\n\n return API.post(\n \"/user/authn/finish/\" + email,\n JSON.stringify({\n id: assertion.id,\n rawId: bufferEncode(rawId),\n type: assertion.type,\n response: {\n authenticatorData: bufferEncode(authData),\n clientDataJSON: bufferEncode(clientDataJSON),\n signature: bufferEncode(sig),\n userHandle: bufferEncode(userHandle),\n },\n })\n );\n })\n .then((response) => {\n afterLogin(response.data);\n })\n .catch((error) => {\n console.log(error);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const login = (e) => {\n e.preventDefault();\n setLoading(true);\n if (!isValidate.current.isValidate && loginCaptcha) {\n validate(() => login(e), setLoading);\n return;\n }\n API.post(\"/user/session\", {\n userName: email,\n Password: pwd,\n ...captchaParamsRef.current,\n })\n .then((response) => {\n setLoading(false);\n if (response.rawData.code === 203) {\n setTwoFA(true);\n } else {\n afterLogin(response.data);\n }\n })\n .catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n captchaRefreshRef.current();\n });\n };\n\n const initQQLogin = () => {\n setLoading(true);\n API.post(\"/user/qq\")\n .then((response) => {\n window.location.href = response.data;\n })\n .catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n });\n };\n\n const twoFALogin = (e) => {\n e.preventDefault();\n setLoading(true);\n API.post(\"/user/2fa\", {\n code: faCode,\n })\n .then((response) => {\n setLoading(false);\n afterLogin(response.data);\n })\n .catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n });\n };\n\n return (\n
\n {!twoFA && (\n <>\n \n \n \n \n \n {t(\"login.title\", { title })}\n \n {!useAuthn && (\n
\n \n \n setEmail(e.target.value)\n }\n InputProps={{\n startAdornment: !isMobile && (\n \n \n \n ),\n }}\n autoComplete\n value={email}\n autoFocus\n />\n \n \n setPwd(e.target.value)}\n InputProps={{\n startAdornment: !isMobile && (\n \n \n \n ),\n }}\n value={pwd}\n autoComplete\n />\n \n {loginCaptcha && }\n {QQLogin && (\n
\n \n {t(\"login.signIn\")}\n \n \n {t(\"vas.loginWithQQ\")}\n \n
\n )}\n {!QQLogin && (\n \n {t(\"login.signIn\")}\n \n )}\n \n )}\n {useAuthn && (\n
\n \n \n \n \n ),\n }}\n onChange={(e) =>\n setEmail(e.target.value)\n }\n autoComplete\n value={email}\n autoFocus\n required\n />\n \n \n {t(\"login.continue\")}\n \n \n )}\n \n
\n
\n \n {t(\"login.forgetPassword\")}\n \n
\n
\n {registerEnabled && (\n \n {t(\"login.signUpAccount\")}\n \n )}\n
\n
\n
\n\n {authn && (\n
\n setUseAuthn(!useAuthn)}\n >\n {!useAuthn && (\n <>\n \n {t(\"login.useFIDO2\")}\n \n )}\n {useAuthn && (\n <>\n \n {t(\"login.usePassword\")}\n \n )}\n \n
\n )}\n \n )}\n {twoFA && (\n \n \n \n \n \n {t(\"login.2FA\")}\n \n
\n \n \n setFACode(event.target.value)\n }\n autoComplete\n value={faCode}\n autoFocus\n />\n \n \n {t(\"login.continue\")}\n {\" \"}\n {\" \"}\n \n
\n )}\n
\n );\n}\n\nexport default LoginForm;\n","import React, { useEffect } from \"react\";\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\nimport { Button } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDrop } from \"react-dnd\";\nimport classNames from \"classnames\";\nimport MoreIcon from \"@material-ui/icons/MoreHoriz\";\n\nconst useStyles = makeStyles((theme) => ({\n expandMore: {\n color: \"#8d8d8d\",\n },\n active: {\n boxShadow: \"0 0 0 2px \" + theme.palette.primary.light,\n },\n button: {\n textTransform: \"none\",\n },\n}));\n\nexport default function PathButton(props) {\n const inputRef = React.useRef(null);\n\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => {\n if (props.more) {\n inputRef.current.click();\n } else {\n return {\n folder: {\n id: -1,\n path: props.path,\n name: props.folder === \"/\" ? \"\" : props.folder,\n },\n };\n }\n },\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n useEffect(() => {\n if (props.more && isActive) {\n inputRef.current.click();\n }\n // eslint-disable-next-line\n }, [isActive]);\n\n const classes = useStyles();\n return (\n \n \n {props.more && }\n {!props.more && (\n <>\n {props.folder}\n {props.last && (\n \n )}\n \n )}\n \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport { MenuItem, ListItemIcon, ListItemText } from \"@material-ui/core\";\nimport { useDrop } from \"react-dnd\";\nimport classNames from \"classnames\";\n\nconst useStyles = makeStyles((theme) => ({\n active: {\n border: \"2px solid \" + theme.palette.primary.light,\n },\n}));\n\nexport default function DropDownItem(props) {\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => {\n console.log({\n folder: {\n id: -1,\n path: props.path,\n name: props.folder === \"/\" ? \"\" : props.folder,\n },\n });\n },\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n useEffect(() => {\n props.setActiveStatus(props.id, isActive);\n // eslint-disable-next-line\n }, [isActive]);\n\n const classes = useStyles();\n return (\n props.navigateTo(e, props.id)}\n >\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport DropDownItem from \"./DropDownItem\";\n\nexport default function DropDown(props) {\n let timer;\n let first = props.folders.length;\n const status = [];\n for (let index = 0; index < props.folders.length; index++) {\n status[index] = false;\n }\n\n const setActiveStatus = (id, value) => {\n status[id] = value;\n if (value) {\n clearTimeout(timer);\n } else {\n let shouldClose = true;\n status.forEach((element) => {\n if (element) {\n shouldClose = false;\n }\n });\n if (shouldClose) {\n if (first <= 0) {\n timer = setTimeout(() => {\n props.onClose();\n }, 100);\n } else {\n first--;\n }\n }\n }\n console.log(status);\n };\n\n return (\n <>\n {props.folders.map((folder, id) => (\n // eslint-disable-next-line react/jsx-key\n \n ))}\n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport RightIcon from \"@material-ui/icons/KeyboardArrowRight\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport explorer, {\n drawerToggleAction,\n navigateTo,\n navigateUp,\n openCompressDialog,\n openCreateFileDialog,\n openCreateFolderDialog,\n openShareDialog,\n refreshFileList,\n setNavigatorError,\n setNavigatorLoadingStatus,\n setSelectedTarget,\n} from \"../../../redux/explorer\";\nimport { fixUrlHash, setGetParameter } from \"../../../utils/index\";\nimport {\n Divider,\n ListItemIcon,\n Menu,\n MenuItem,\n withStyles,\n} from \"@material-ui/core\";\nimport PathButton from \"./PathButton\";\nimport DropDown from \"./DropDown\";\nimport pathHelper from \"../../../utils/page\";\nimport classNames from \"classnames\";\nimport Auth from \"../../../middleware/Auth\";\nimport { Archive } from \"@material-ui/icons\";\nimport { FilePlus } from \"mdi-material-ui\";\nimport SubActions from \"./SubActions\";\nimport { setCurrentPolicy } from \"../../../redux/explorer/action\";\nimport { list } from \"../../../services/navigate\";\nimport { withTranslation } from \"react-i18next\";\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n refresh: state.navigator.refresh,\n drawerDesktopOpen: state.viewUpdate.open,\n viewMethod: state.viewUpdate.explorerViewMethod,\n search: state.explorer.search,\n sortMethod: state.viewUpdate.sortMethod,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n navigateToPath: (path) => {\n dispatch(navigateTo(path));\n },\n navigateUp: () => {\n dispatch(navigateUp());\n },\n setNavigatorError: (status, msg) => {\n dispatch(setNavigatorError(status, msg));\n },\n updateFileList: (list) => {\n dispatch(explorer.actions.updateFileList(list));\n },\n setNavigatorLoadingStatus: (status) => {\n dispatch(setNavigatorLoadingStatus(status));\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n setSelectedTarget: (target) => {\n dispatch(setSelectedTarget(target));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n openCreateFileDialog: () => {\n dispatch(openCreateFileDialog());\n },\n openShareDialog: () => {\n dispatch(openShareDialog());\n },\n handleDesktopToggle: (open) => {\n dispatch(drawerToggleAction(open));\n },\n openCompressDialog: () => {\n dispatch(openCompressDialog());\n },\n setCurrentPolicy: (policy) => {\n dispatch(setCurrentPolicy(policy));\n },\n };\n};\n\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst styles = (theme) => ({\n container: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n navigatorContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n nav: {\n height: \"48px\",\n padding: \"5px 15px\",\n display: \"flex\",\n },\n optionContainer: {\n paddingTop: \"6px\",\n marginRight: \"10px\",\n },\n rightIcon: {\n marginTop: \"6px\",\n verticalAlign: \"top\",\n color: \"#868686\",\n },\n expandMore: {\n color: \"#8d8d8d\",\n },\n roundBorder: {\n borderRadius: \"4px 4px 0 0\",\n },\n});\n\nclass NavigatorComponent extends Component {\n search = undefined;\n currentID = 0;\n\n state = {\n hidden: false,\n hiddenFolders: [],\n folders: [],\n anchorEl: null,\n hiddenMode: false,\n anchorHidden: null,\n };\n\n constructor(props) {\n super(props);\n this.element = React.createRef();\n }\n\n componentDidMount = () => {\n const url = new URL(fixUrlHash(window.location.href));\n const c = url.searchParams.get(\"path\");\n this.renderPath(c === null ? \"/\" : c);\n\n if (!this.props.isShare) {\n // 如果是在个人文件管理页,首次加载时打开侧边栏\n this.props.handleDesktopToggle(true);\n }\n\n // 后退操作时重新导航\n window.onpopstate = () => {\n const url = new URL(fixUrlHash(window.location.href));\n const c = url.searchParams.get(\"path\");\n if (c !== null) {\n this.props.navigateToPath(c);\n }\n };\n };\n\n renderPath = (path = null) => {\n this.props.setNavigatorError(false, null);\n this.setState({\n folders:\n path !== null\n ? path.substr(1).split(\"/\")\n : this.props.path.substr(1).split(\"/\"),\n });\n const newPath = path !== null ? path : this.props.path;\n list(\n newPath,\n this.props.share,\n this.search ? this.search.keywords : \"\",\n this.search ? this.search.searchPath : \"\"\n )\n .then((response) => {\n this.currentID = response.data.parent;\n this.props.updateFileList(response.data.objects);\n this.props.setNavigatorLoadingStatus(false);\n if (!this.search) {\n setGetParameter(\"path\", encodeURIComponent(newPath));\n }\n if (response.data.policy) {\n this.props.setCurrentPolicy({\n id: response.data.policy.id,\n name: response.data.policy.name,\n type: response.data.policy.type,\n maxSize: response.data.policy.max_size,\n allowedSuffix: response.data.policy.file_type,\n });\n }\n })\n .catch((error) => {\n this.props.setNavigatorError(true, error);\n });\n\n this.checkOverFlow(true);\n };\n\n redresh = (path) => {\n this.props.setNavigatorLoadingStatus(true);\n this.props.setNavigatorError(false, \"error\");\n this.renderPath(path);\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (this.props.search !== nextProps.search) {\n this.search = nextProps.search;\n }\n if (this.props.path !== nextProps.path) {\n this.renderPath(nextProps.path);\n }\n if (this.props.refresh !== nextProps.refresh) {\n this.redresh(nextProps.path);\n }\n };\n\n componentWillUnmount() {\n this.props.updateFileList([]);\n }\n\n componentDidUpdate = (prevProps, prevStates) => {\n if (this.state.folders !== prevStates.folders) {\n this.checkOverFlow(true);\n }\n if (this.props.drawerDesktopOpen !== prevProps.drawerDesktopOpen) {\n delay(500).then(() => this.checkOverFlow());\n }\n };\n\n checkOverFlow = (force) => {\n if (this.overflowInitLock && !force) {\n return;\n }\n if (this.element.current !== null) {\n const hasOverflowingChildren =\n this.element.current.offsetHeight <\n this.element.current.scrollHeight ||\n this.element.current.offsetWidth <\n this.element.current.scrollWidth;\n if (hasOverflowingChildren) {\n this.overflowInitLock = true;\n this.setState({ hiddenMode: true });\n }\n if (!hasOverflowingChildren && this.state.hiddenMode) {\n this.setState({ hiddenMode: false });\n }\n }\n };\n\n navigateTo = (event, id) => {\n if (id === this.state.folders.length - 1) {\n //最后一个路径\n this.setState({ anchorEl: event.currentTarget });\n } else if (\n id === -1 &&\n this.state.folders.length === 1 &&\n this.state.folders[0] === \"\"\n ) {\n this.props.refreshFileList();\n this.handleClose();\n } else if (id === -1) {\n this.props.navigateToPath(\"/\");\n this.handleClose();\n } else {\n this.props.navigateToPath(\n \"/\" + this.state.folders.slice(0, id + 1).join(\"/\")\n );\n this.handleClose();\n }\n };\n\n handleClose = () => {\n this.setState({ anchorEl: null, anchorHidden: null, anchorSort: null });\n };\n\n showHiddenPath = (e) => {\n this.setState({ anchorHidden: e.currentTarget });\n };\n\n performAction = (e) => {\n this.handleClose();\n if (e === \"refresh\") {\n this.redresh();\n return;\n }\n const presentPath = this.props.path.split(\"/\");\n const newTarget = [\n {\n id: this.currentID,\n type: \"dir\",\n name: presentPath.pop(),\n path: presentPath.length === 1 ? \"/\" : presentPath.join(\"/\"),\n },\n ];\n //this.props.navitateUp();\n switch (e) {\n case \"share\":\n this.props.setSelectedTarget(newTarget);\n this.props.openShareDialog();\n break;\n case \"newfolder\":\n this.props.openCreateFolderDialog();\n break;\n case \"compress\":\n this.props.setSelectedTarget(newTarget);\n this.props.openCompressDialog();\n break;\n case \"newFile\":\n this.props.openCreateFileDialog();\n break;\n default:\n break;\n }\n };\n\n render() {\n const { classes, t } = this.props;\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const user = Auth.GetUser();\n\n const presentFolderMenu = (\n \n this.performAction(\"refresh\")}>\n \n \n \n {t(\"fileManager.refresh\")}\n \n {!this.props.search && isHomePage && (\n
\n \n this.performAction(\"share\")}>\n \n \n \n {t(\"fileManager.share\")}\n \n {user.group.compress && (\n this.performAction(\"compress\")}\n >\n \n \n \n {t(\"fileManager.compress\")}\n \n )}\n \n this.performAction(\"newfolder\")}\n >\n \n \n \n {t(\"fileManager.newFolder\")}\n \n\n this.performAction(\"newFile\")}>\n \n \n \n {t(\"fileManager.newFile\")}\n \n
\n )}\n \n );\n\n return (\n \n
\n
\n \n this.navigateTo(e, -1)}\n />\n \n \n {this.state.hiddenMode && (\n \n \n \n \n \n \n \n this.navigateTo(\n e,\n this.state.folders.length - 1\n )\n }\n />\n {presentFolderMenu}\n \n )}\n {!this.state.hiddenMode &&\n this.state.folders.map((folder, id, folders) => (\n \n {folder !== \"\" && (\n \n \n this.navigateTo(e, id)\n }\n />\n {id === folders.length - 1 &&\n presentFolderMenu}\n {id !== folders.length - 1 && (\n \n )}\n \n )}\n \n ))}\n
\n
\n \n
\n
\n \n
\n );\n }\n}\n\nNavigatorComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n};\n\nconst Navigator = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(NavigatorComponent))));\n\nexport default Navigator;\n","import Highlighter from \"react-highlight-words\";\nimport { trimPrefix } from \"../Uploader/core/utils\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n highlight: {\n backgroundColor: theme.palette.warning.light,\n },\n}));\n\nexport default function FileName({ name }) {\n const classes = useStyles();\n const search = useSelector((state) => state.explorer.search);\n if (!search) {\n return name;\n }\n\n return (\n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport {\n ButtonBase,\n fade,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport Grow from \"@material-ui/core/Grow\";\nimport { Folder } from \"@material-ui/icons\";\nimport FileName from \"./FileName\";\n\nconst styles = (theme) => ({\n container: {\n padding: \"7px\",\n },\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n height: \"50px\",\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: theme.shape.borderRadius,\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n display: \"flex\",\n justifyContent: \"left\",\n alignItems: \"initial\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass SmallIconCompoment extends Component {\n state = {};\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const isSelectedCurrent =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSelectedNext =\n nextProps.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n if (\n nextProps.selected !== this.props.selected &&\n isSelectedCurrent === isSelectedNext\n ) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const { classes } = this.props;\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n\n return (\n \n \n {!isSelected && (\n <>\n {this.props.isFolder && }\n {!this.props.isFolder && (\n \n )}\n \n )}\n {isSelected && (\n \n \n \n )}\n \n \n \n \n \n \n \n );\n }\n}\n\nSmallIconCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst SmallIcon = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(SmallIconCompoment));\n\nexport default SmallIcon;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport { LazyLoadImage } from \"react-lazy-load-image-component\";\nimport ContentLoader from \"react-content-loader\";\nimport { baseURL } from \"../../middleware/Api\";\nimport {\n ButtonBase,\n Divider,\n fade,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport { withRouter } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport statusHelper from \"../../utils/page\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport Grow from \"@material-ui/core/Grow\";\nimport FileName from \"./FileName\";\n\nconst styles = (theme) => ({\n container: {},\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: theme.shape.borderRadius,\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n alignItems: \"initial\",\n display: \"initial\",\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n preview: {\n overflow: \"hidden\",\n height: \"150px\",\n width: \"100%\",\n borderRadius: \"12px 12px 0 0\",\n backgroundColor: theme.palette.background.default,\n },\n previewIcon: {\n overflow: \"hidden\",\n height: \"149px\",\n width: \"100%\",\n borderRadius: \"12px 12px 0 0\",\n backgroundColor: theme.palette.background.paper,\n paddingTop: \"50px\",\n },\n iconBig: {\n fontSize: 50,\n },\n picPreview: {\n objectFit: \"cover\",\n width: \"100%\",\n height: \"100%\",\n },\n fileInfo: {\n height: \"50px\",\n display: \"flex\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n hide: {\n display: \"none\",\n },\n loadingAnimation: {\n borderRadius: \"12px 12px 0 0\",\n height: \"100%\",\n width: \"100%\",\n },\n shareFix: {\n marginLeft: \"20px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n noDrag: {\n userDrag: \"none\",\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n selected: state.explorer.selected,\n shareInfo: state.viewUpdate.shareInfo,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass FileIconCompoment extends Component {\n static defaultProps = {\n share: false,\n };\n\n state = {\n loading: false,\n showPicIcon: false,\n };\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const isSelectedCurrent =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSelectedNext =\n nextProps.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n if (\n nextProps.selected !== this.props.selected &&\n isSelectedCurrent === isSelectedNext\n ) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const { classes } = this.props;\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSharePage = pathHelper.isSharePage(\n this.props.location.pathname\n );\n const isMobile = statusHelper.isMobile();\n\n return (\n
\n \n {this.props.file.pic !== \"\" &&\n !this.state.showPicIcon &&\n this.props.file.pic !== \" \" &&\n this.props.file.pic !== \"null,null\" && (\n
\n \n this.setState({ loading: false })\n }\n beforeLoad={() =>\n this.setState({ loading: true })\n }\n onError={() =>\n this.setState({ showPicIcon: true })\n }\n />\n \n \n \n
\n )}\n {(this.props.file.pic === \"\" ||\n this.state.showPicIcon ||\n this.props.file.pic === \" \" ||\n this.props.file.pic === \"null,null\") && (\n
\n \n
\n )}\n {(this.props.file.pic === \"\" ||\n this.state.showPicIcon ||\n this.props.file.pic === \" \" ||\n this.props.file.pic === \"null,null\") && }\n
\n {!this.props.share && (\n \n {!isSelected && (\n \n )}\n {isSelected && (\n \n \n \n )}\n
\n )}\n \n \n \n \n \n
\n \n \n );\n }\n}\n\nFileIconCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst FileIcon = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(FileIconCompoment)));\n\nexport default FileIcon;\n","import React from \"react\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport classNames from \"classnames\";\nimport {\n ButtonBase,\n fade,\n makeStyles,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport { useSelector } from \"react-redux\";\nimport statusHelper from \"../../utils/page\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: \"7px\",\n },\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n height: \"50px\",\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: theme.shape.borderRadius,\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n display: \"flex\",\n justifyContent: \"left\",\n alignItems: \"initial\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n active: {\n boxShadow: \"0 0 0 2px \" + theme.palette.primary.light,\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n}));\n\nexport default function Folder({ folder, isActive, onIconClick }) {\n const selected = useSelector((state) => state.explorer.selected);\n const classes = useStyles();\n const isMobile = statusHelper.isMobile();\n const isSelected =\n selected.findIndex((value) => {\n return value === folder;\n }) !== -1;\n\n return (\n \n \n {!isSelected && }\n {isSelected && (\n \n )}\n \n \n \n {folder.name}\n \n \n \n );\n}\n","import React from \"react\";\nimport SmallIcon from \"../SmallIcon\";\nimport FileIcon from \"../FileIcon\";\nimport { useSelector } from \"react-redux\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Folder from \"../Folder\";\n\nconst useStyles = makeStyles(() => ({\n dragging: {\n width: \"200px\",\n },\n cardDragged: {\n position: \"absolute\",\n \"transform-origin\": \"bottom left\",\n },\n}));\n\nconst diliverIcon = (object, viewMethod, classes) => {\n if (object.type === \"dir\") {\n return (\n
\n \n
\n );\n }\n if (object.type === \"file\" && viewMethod === \"icon\") {\n return (\n
\n \n
\n );\n }\n if (\n (object.type === \"file\" && viewMethod === \"smallIcon\") ||\n viewMethod === \"list\"\n ) {\n return (\n
\n \n
\n );\n }\n};\n\nconst Preview = (props) => {\n const selected = useSelector((state) => state.explorer.selected);\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const classes = useStyles();\n return (\n <>\n {selected.length === 0 &&\n diliverIcon(props.object, viewMethod, classes)}\n {selected.length > 0 && (\n <>\n {selected.slice(0, 3).map((card, i) => (\n \n {diliverIcon(card, viewMethod, classes)}\n \n ))}\n \n )}\n \n );\n};\nexport default Preview;\n","import React, { useMemo } from \"react\";\nimport { useDragLayer } from \"react-dnd\";\nimport Preview from \"./Preview\";\nimport { useSelector } from \"react-redux\";\n\nconst layerStyles = {\n position: \"fixed\",\n pointerEvents: \"none\",\n zIndex: 100,\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n};\n\nfunction getItemStyles(\n initialOffset,\n currentOffset,\n pointerOffset,\n viewMethod\n) {\n if (!initialOffset || !currentOffset) {\n return {\n display: \"none\",\n };\n }\n let { x, y } = currentOffset;\n if (viewMethod === \"list\") {\n x += pointerOffset.x - initialOffset.x;\n y += pointerOffset.y - initialOffset.y;\n }\n\n const transform = `translate(${x}px, ${y}px)`;\n return {\n opacity: 0.5,\n transform,\n WebkitTransform: transform,\n };\n}\nconst CustomDragLayer = (props) => {\n const {\n itemType,\n isDragging,\n item,\n initialOffset,\n currentOffset,\n pointerOffset,\n } = useDragLayer((monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n pointerOffset: monitor.getInitialClientOffset(),\n isDragging: monitor.isDragging(),\n }));\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const image = useMemo(() => {\n switch (itemType) {\n case \"object\":\n return ;\n default:\n return null;\n }\n }, [itemType, item]);\n if (!isDragging) {\n return null;\n }\n return (\n
\n \n {image}\n
\n \n );\n};\nexport default CustomDragLayer;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\n\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport classNames from \"classnames\";\nimport { sizeToString } from \"../../utils/index\";\nimport {\n fade,\n TableCell,\n TableRow,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport pathHelper from \"../../utils/page\";\nimport statusHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router\";\nimport KeyboardReturnIcon from \"@material-ui/icons/KeyboardReturn\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport Grow from \"@material-ui/core/Grow\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport FileName from \"./FileName\";\n\nconst styles = (theme) => ({\n selected: {\n \"&:hover\": {},\n backgroundColor: fade(theme.palette.primary.main, 0.18),\n },\n\n selectedShared: {\n \"&:hover\": {},\n backgroundColor: fade(theme.palette.primary.main, 0.18),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n icon: {\n verticalAlign: \"middle\",\n marginRight: \"20px\",\n color: theme.palette.text.secondary,\n },\n tableIcon: {\n marginRight: \"20px\",\n verticalAlign: \"middle\",\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n userSelect: \"none\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n userSelect: \"none\",\n },\n folderName: {\n marginRight: \"20px\",\n display: \"flex\",\n alignItems: \"center\",\n },\n hideAuto: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n tableRow: {\n padding: \"10px 16px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n active: {\n backgroundColor: fade(theme.palette.primary.main, 0.1),\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass TableRowCompoment extends Component {\n state = {};\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const isSelectedCurrent =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSelectedNext =\n nextProps.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n if (\n nextProps.selected !== this.props.selected &&\n isSelectedCurrent === isSelectedNext\n ) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const { classes } = this.props;\n const isShare = pathHelper.isSharePage(this.props.location.pathname);\n\n let icon;\n if (this.props.file.type === \"dir\") {\n icon = ;\n } else if (this.props.file.type === \"up\") {\n icon = ;\n } else {\n icon = (\n \n );\n }\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isMobile = statusHelper.isMobile();\n\n return (\n \n \n \n \n {!isSelected && icon}\n {isSelected && (\n \n \n \n )}\n \n \n \n \n \n \n {\" \"}\n {this.props.file.type !== \"dir\" &&\n this.props.file.type !== \"up\" &&\n sizeToString(this.props.file.size)}\n \n \n \n \n {\" \"}\n {formatLocalTime(this.props.file.date)}\n \n \n \n );\n }\n}\n\nTableRowCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst TableItem = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(TableRowCompoment)));\n\nexport default TableItem;\n","import React from \"react\";\nimport { useDrop } from \"react-dnd\";\nimport Folder from \"../Folder\";\nimport classNames from \"classnames\";\nimport TableItem from \"../TableRow\";\nexport default function FolderDropWarpper({\n isListView,\n folder,\n onIconClick,\n contextMenu,\n handleClick,\n handleDoubleClick,\n className,\n pref,\n}) {\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => ({ folder }),\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n const isActive = canDrop && isOver;\n if (!isListView) {\n return (\n
\n \n
\n );\n }\n return (\n \n );\n}\n","import { useRef } from \"react\";\nimport { throttle } from \"lodash\";\n\nconst useDragScrolling = () => {\n const isScrolling = useRef(false);\n const target = document.querySelector(\"#explorer-container\");\n\n const goDown = () => {\n target.scrollTop += 10;\n\n const { offsetHeight, scrollTop, scrollHeight } = target;\n const isScrollEnd = offsetHeight + scrollTop >= scrollHeight;\n\n if (isScrolling.current && !isScrollEnd) {\n window.requestAnimationFrame(goDown);\n }\n };\n\n const goUp = () => {\n target.scrollTop -= 10;\n\n if (isScrolling.current && target.scrollTop > 0) {\n window.requestAnimationFrame(goUp);\n }\n };\n\n const onDragOver = (event) => {\n const isMouseOnTop = event.clientY < 100;\n const isMouseOnDown = window.innerHeight - event.clientY < 100;\n\n if (!isScrolling.current && (isMouseOnTop || isMouseOnDown)) {\n isScrolling.current = true;\n\n if (isMouseOnTop) {\n window.requestAnimationFrame(goUp);\n }\n\n if (isMouseOnDown) {\n window.requestAnimationFrame(goDown);\n }\n } else if (!isMouseOnTop && !isMouseOnDown) {\n isScrolling.current = false;\n }\n };\n\n const throttleOnDragOver = throttle(onDragOver, 300);\n\n const addEventListenerForWindow = () => {\n window.addEventListener(\"dragover\", throttleOnDragOver, false);\n };\n\n const removeEventListenerForWindow = () => {\n window.removeEventListener(\"dragover\", throttleOnDragOver, false);\n isScrolling.current = false;\n };\n\n return {\n addEventListenerForWindow,\n removeEventListenerForWindow,\n };\n};\n\nexport default useDragScrolling;\n","import React, { useCallback, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport statusHelper from \"../../utils/page\";\nimport FileIcon from \"./FileIcon\";\nimport SmallIcon from \"./SmallIcon\";\nimport TableItem from \"./TableRow\";\nimport classNames from \"classnames\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDrag } from \"react-dnd\";\nimport { getEmptyImage } from \"react-dnd-html5-backend\";\nimport DropWarpper from \"./DnD/DropWarpper\";\nimport { useLocation } from \"react-router-dom\";\nimport { pathBack } from \"../../utils\";\nimport {\n changeContextMenu,\n dragAndDrop,\n navigateTo,\n openLoadingDialog,\n openPreview,\n selectFile,\n setSelectedTarget,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport useDragScrolling from \"./DnD/Scrolling\";\n\nconst useStyles = makeStyles(() => ({\n container: {\n padding: \"7px\",\n },\n fixFlex: {\n minWidth: 0,\n },\n dragging: {\n opacity: 0.4,\n },\n}));\n\nexport default function ObjectIcon(props) {\n const path = useSelector((state) => state.navigator.path);\n const shareInfo = useSelector((state) => state.viewUpdate.shareInfo);\n const selected = useSelector((state) => state.explorer.selected);\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const navigatorPath = useSelector((state) => state.navigator.path);\n const location = useLocation();\n\n const dispatch = useDispatch();\n const ContextMenu = useCallback(\n (type, open) => dispatch(changeContextMenu(type, open)),\n [dispatch]\n );\n const SetSelectedTarget = useCallback(\n (targets) => dispatch(setSelectedTarget(targets)),\n [dispatch]\n );\n\n const NavitateTo = useCallback((targets) => dispatch(navigateTo(targets)), [\n dispatch,\n ]);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const DragAndDrop = useCallback(\n (source, target) => dispatch(dragAndDrop(source, target)),\n [dispatch]\n );\n const OpenLoadingDialog = useCallback(\n (text) => dispatch(openLoadingDialog(text)),\n [dispatch]\n );\n const OpenPreview = useCallback((share) => dispatch(openPreview(share)), [\n dispatch,\n ]);\n const StartDownload = useCallback(\n (share, file) => dispatch(StartDownload(share, file)),\n [dispatch]\n );\n\n const classes = useStyles();\n\n const contextMenu = (e) => {\n if (props.file.type === \"up\") {\n return;\n }\n e.preventDefault();\n if (\n selected.findIndex((value) => {\n return value === props.file;\n }) === -1\n ) {\n SetSelectedTarget([props.file]);\n }\n ContextMenu(\"file\", true);\n };\n\n const SelectFile = (e) => {\n dispatch(selectFile(props.file, e, props.index));\n };\n const enterFolder = () => {\n NavitateTo(\n path === \"/\" ? path + props.file.name : path + \"/\" + props.file.name\n );\n };\n const handleClick = (e) => {\n if (props.file.type === \"up\") {\n NavitateTo(pathBack(navigatorPath));\n return;\n }\n\n SelectFile(e);\n if (\n props.file.type === \"dir\" &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.shiftKey\n ) {\n enterFolder();\n }\n };\n\n const handleDoubleClick = () => {\n if (props.file.type === \"up\") {\n return;\n }\n if (props.file.type === \"dir\") {\n enterFolder();\n return;\n }\n\n OpenPreview(shareInfo);\n };\n\n const handleIconClick = (e) => {\n e.stopPropagation();\n if (!e.shiftKey) {\n e.ctrlKey = true;\n }\n SelectFile(e);\n return false;\n };\n\n const {\n addEventListenerForWindow,\n removeEventListenerForWindow,\n } = useDragScrolling();\n\n const [{ isDragging }, drag, preview] = useDrag({\n item: {\n object: props.file,\n type: \"object\",\n selected: [...selected],\n viewMethod: viewMethod,\n },\n begin: () => {\n addEventListenerForWindow();\n },\n end: (item, monitor) => {\n removeEventListenerForWindow();\n const dropResult = monitor.getDropResult();\n if (item && dropResult) {\n if (dropResult.folder) {\n if (\n item.object.id !== dropResult.folder.id ||\n item.object.type !== dropResult.folder.type\n ) {\n DragAndDrop(item.object, dropResult.folder);\n }\n }\n }\n },\n canDrag: () => {\n return (\n !statusHelper.isMobile() &&\n statusHelper.isHomePage(location.pathname)\n );\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n // eslint-disable-next-line\n }, []);\n\n if (viewMethod === \"list\") {\n return (\n <>\n {props.file.type === \"dir\" && (\n \n )}\n {props.file.type !== \"dir\" && (\n \n )}\n \n );\n }\n\n return (\n \n \n {props.file.type === \"dir\" && viewMethod !== \"list\" && (\n \n )}\n {props.file.type === \"file\" && viewMethod === \"icon\" && (\n \n )}\n {props.file.type === \"file\" && viewMethod === \"smallIcon\" && (\n \n )}\n \n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { isCompressFile, isPreviewable, isTorrent } from \"../../config\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport OpenFolderIcon from \"@material-ui/icons/FolderOpen\";\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\nimport MoveIcon from \"@material-ui/icons/Input\";\nimport LinkIcon from \"@material-ui/icons/InsertLink\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport {\n FolderDownload,\n FilePlus,\n FolderUpload,\n MagnetOn,\n Transfer,\n} from \"mdi-material-ui\";\nimport {\n Divider,\n ListItemIcon,\n MenuItem,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport pathHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router-dom\";\nimport Auth from \"../../middleware/Auth\";\nimport { Archive, InfoOutlined, Unarchive } from \"@material-ui/icons\";\nimport Menu from \"@material-ui/core/Menu\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport {\n batchGetSource,\n openParentFolder,\n openPreview,\n openTorrentDownload,\n setSelectedTarget,\n startBatchDownload,\n startDirectoryDownload,\n startDownload,\n toggleObjectInfoSidebar,\n} from \"../../redux/explorer/action\";\nimport {\n changeContextMenu,\n navigateTo,\n openCompressDialog,\n openCopyDialog,\n openCreateFileDialog,\n openCreateFolderDialog,\n openDecompressDialog,\n openLoadingDialog,\n openMoveDialog,\n openMusicDialog,\n openRelocateDialog,\n openRemoteDownloadDialog,\n openRemoveDialog,\n openRenameDialog,\n openShareDialog,\n refreshFileList,\n setNavigatorLoadingStatus,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { pathJoin } from \"../Uploader/core/utils\";\nimport {\n openFileSelector,\n openFolderSelector,\n} from \"../../redux/viewUpdate/action\";\nimport { withTranslation } from \"react-i18next\";\n\nconst styles = () => ({\n propover: {},\n divider: {\n marginTop: 4,\n marginBottom: 4,\n },\n});\n\nconst StyledListItemIcon = withStyles({\n root: {\n minWidth: 38,\n },\n})(ListItemIcon);\n\nconst mapStateToProps = (state) => {\n return {\n menuType: state.viewUpdate.contextType,\n menuOpen: state.viewUpdate.contextOpen,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n withSourceEnabled: state.explorer.selectProps.withSourceEnabled,\n path: state.navigator.path,\n selected: state.explorer.selected,\n search: state.explorer.search,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n changeContextMenu: (type, open) => {\n dispatch(changeContextMenu(type, open));\n },\n setNavigatorLoadingStatus: (status) => {\n dispatch(setNavigatorLoadingStatus(status));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n openCreateFileDialog: () => {\n dispatch(openCreateFileDialog());\n },\n openRenameDialog: () => {\n dispatch(openRenameDialog());\n },\n openMoveDialog: () => {\n dispatch(openMoveDialog());\n },\n openRemoveDialog: () => {\n dispatch(openRemoveDialog());\n },\n openShareDialog: () => {\n dispatch(openShareDialog());\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openRemoteDownloadDialog: () => {\n dispatch(openRemoteDownloadDialog());\n },\n openTorrentDownloadDialog: () => {\n dispatch(openTorrentDownload());\n },\n openCopyDialog: () => {\n dispatch(openCopyDialog());\n },\n openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n openDecompressDialog: () => {\n dispatch(openDecompressDialog());\n },\n openCompressDialog: () => {\n dispatch(openCompressDialog());\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n openRelocateDialog: () => {\n dispatch(openRelocateDialog());\n },\n openPreview: (share) => {\n dispatch(openPreview(share));\n },\n toggleObjectInfoSidebar: (open) => {\n dispatch(toggleObjectInfoSidebar(open));\n },\n startBatchDownload: (share) => {\n dispatch(startBatchDownload(share));\n },\n openFileSelector: () => {\n dispatch(openFileSelector());\n },\n openFolderSelector: () => {\n dispatch(openFolderSelector());\n },\n startDownload: (share, file) => {\n dispatch(startDownload(share, file));\n },\n batchGetSource: () => {\n dispatch(batchGetSource());\n },\n startDirectoryDownload: (share) => {\n dispatch(startDirectoryDownload(share));\n },\n openParentFolder: () => {\n dispatch(openParentFolder());\n },\n };\n};\n\nclass ContextMenuCompoment extends Component {\n X = 0;\n Y = 0;\n\n state = {};\n\n componentDidMount = () => {\n window.document.addEventListener(\"mousemove\", this.setPoint);\n };\n\n setPoint = (e) => {\n this.Y = e.clientY;\n this.X = e.clientX;\n };\n\n openArchiveDownload = () => {\n this.props.startBatchDownload(this.props.share);\n };\n\n openDirectoryDownload = () => {\n this.props.startDirectoryDownload(this.props.share);\n };\n\n openDownload = () => {\n this.props.startDownload(this.props.share, this.props.selected[0]);\n };\n\n enterFolder = () => {\n this.props.navigateTo(\n pathJoin([this.props.path, this.props.selected[0].name])\n );\n };\n\n // 暂时只对空白处右键菜单使用这个函数,疑似有bug会导致的一个菜单被默认选中。\n // 相关issue: https://github.com/mui-org/material-ui/issues/23747\n renderMenuItems = (items) => {\n const res = [];\n let key = 0;\n\n [\"top\", \"center\", \"bottom\"].forEach((position) => {\n let visibleCount = 0;\n items[position].forEach((item) => {\n if (item.condition) {\n res.push(\n \n {item.icon}\n \n {item.text}\n \n \n );\n key++;\n visibleCount++;\n }\n });\n if (visibleCount > 0 && position != \"bottom\") {\n res.push(\n \n );\n key++;\n }\n });\n\n return res;\n };\n\n render() {\n const { classes, t } = this.props;\n const user = Auth.GetUser();\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const emptyMenuList = {\n top: [\n {\n condition: true,\n onClick: () => {\n this.props.refreshFileList();\n this.props.changeContextMenu(\n this.props.menuType,\n false\n );\n },\n icon: ,\n text: \"刷新\",\n },\n ],\n center: [\n {\n condition: true,\n onClick: () => this.props.openFileSelector(),\n icon: ,\n text: \"上传文件\",\n },\n {\n condition: true,\n onClick: () => this.props.openFolderSelector(),\n icon: ,\n text: \"上传目录\",\n },\n {\n condition: user.group.allowRemoteDownload,\n onClick: () => this.props.openRemoteDownloadDialog(),\n icon: ,\n text: \"离线下载\",\n },\n ],\n bottom: [\n {\n condition: true,\n onClick: () => this.props.openCreateFolderDialog(),\n icon: ,\n text: \"创建文件夹\",\n },\n {\n condition: true,\n onClick: () => this.props.openCreateFileDialog(),\n icon: ,\n text: \"创建文件\",\n },\n ],\n };\n\n return (\n
\n \n this.props.changeContextMenu(this.props.menuType, false)\n }\n anchorReference=\"anchorPosition\"\n anchorPosition={{ top: this.Y, left: this.X }}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n >\n {this.props.menuType === \"empty\" && (\n
\n {\n this.props.refreshFileList();\n this.props.changeContextMenu(\n this.props.menuType,\n false\n );\n }}\n >\n \n \n \n \n {t(\"fileManager.refresh\")}\n \n \n \n this.props.openFileSelector()}\n >\n \n \n \n \n {t(\"fileManager.uploadFiles\")}\n \n \n this.props.openFolderSelector()}\n >\n \n \n \n \n {t(\"fileManager.uploadFolder\")}\n \n \n {user.group.allowRemoteDownload && (\n \n this.props.openRemoteDownloadDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.newRemoteDownloads\")}\n \n \n )}\n\n \n \n this.props.openCreateFolderDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.newFolder\")}\n \n \n \n this.props.openCreateFileDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.newFile\")}\n \n \n
\n )}\n {this.props.menuType !== \"empty\" && (\n
\n {!this.props.isMultiple && this.props.withFolder && (\n
\n \n \n \n \n \n {t(\"fileManager.enter\")}\n \n \n {isHomePage && (\n \n )}\n
\n )}\n {!this.props.isMultiple &&\n this.props.withFile &&\n (!this.props.share ||\n this.props.share.preview) &&\n isPreviewable(this.props.selected[0].name) && (\n
\n \n this.props.openPreview()\n }\n >\n \n \n \n \n {t(\"fileManager.open\")}\n \n \n
\n )}\n\n {this.props.search && !this.props.isMultiple && (\n
\n \n this.props.openParentFolder()\n }\n >\n \n \n \n \n {t(\"fileManager.openParentFolder\")}\n \n \n
\n )}\n\n {!this.props.isMultiple && this.props.withFile && (\n
\n \n this.openDownload(this.props.share)\n }\n >\n \n \n \n \n {t(\"fileManager.download\")}\n \n \n {isHomePage && (\n \n )}\n
\n )}\n\n {(this.props.isMultiple || this.props.withFolder) &&\n window.showDirectoryPicker &&\n window.isSecureContext && (\n \n this.openDirectoryDownload()\n }\n >\n \n \n \n \n {t(\"fileManager.download\")}\n \n \n )}\n\n {(this.props.isMultiple ||\n this.props.withFolder) && (\n this.openArchiveDownload()}\n >\n \n \n \n \n {t(\"fileManager.batchDownload\")}\n \n \n )}\n\n {isHomePage &&\n user.group.sourceBatch > 0 &&\n this.props.withSourceEnabled && (\n \n this.props.batchGetSource()\n }\n >\n \n \n \n \n {this.props.isMultiple ||\n (this.props.withFolder &&\n !this.props.withFile)\n ? t(\n \"fileManager.getSourceLinkInBatch\"\n )\n : t(\n \"fileManager.getSourceLink\"\n )}\n \n \n )}\n\n {!this.props.isMultiple &&\n isHomePage &&\n user.group.allowRemoteDownload &&\n this.props.withFile &&\n isTorrent(this.props.selected[0].name) && (\n \n this.props.openTorrentDownloadDialog()\n }\n >\n \n \n \n \n {t(\n \"fileManager.createRemoteDownloadForTorrent\"\n )}\n \n \n )}\n {!this.props.isMultiple &&\n isHomePage &&\n user.group.compress &&\n this.props.withFile &&\n isCompressFile(this.props.selected[0].name) && (\n \n this.props.openDecompressDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.decompress\")}\n \n \n )}\n\n {isHomePage && user.group.compress && (\n \n this.props.openCompressDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.compress\")}\n \n \n )}\n\n {isHomePage && user.group.relocate && (\n \n this.props.openRelocateDialog()\n }\n >\n \n \n \n \n {t(\"vas.migrateStoragePolicy\")}\n \n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n this.props.openShareDialog()}\n >\n \n \n \n \n {t(\"fileManager.createShareLink\")}\n \n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n \n this.props.toggleObjectInfoSidebar(true)\n }\n >\n \n \n \n \n {t(\"fileManager.viewDetails\")}\n \n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n
\n \n this.props.openRenameDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.rename\")}\n \n \n {!this.props.search && (\n \n this.props.openCopyDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.copy\")}\n \n \n )}\n
\n )}\n {isHomePage && (\n
\n {!this.props.search && (\n \n this.props.openMoveDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.move\")}\n \n \n )}\n\n \n \n this.props.openRemoveDialog()\n }\n >\n \n \n \n \n {t(\"fileManager.delete\")}\n \n \n
\n )}\n
\n )}\n \n
\n );\n }\n}\n\nContextMenuCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n menuType: PropTypes.string.isRequired,\n};\n\nconst ContextMenu = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(ContextMenuCompoment))));\n\nexport default ContextMenu;\n","import React, { useCallback, useEffect, useMemo } from \"react\";\nimport explorer, {\n changeContextMenu,\n openRemoveDialog,\n setSelectedTarget,\n} from \"../../redux/explorer\";\nimport ObjectIcon from \"./ObjectIcon\";\nimport ContextMenu from \"./ContextMenu\";\nimport classNames from \"classnames\";\nimport ImgPreivew from \"./ImgPreview\";\nimport pathHelper from \"../../utils/page\";\nimport { isMac } from \"../../utils\";\nimport {\n CircularProgress,\n Grid,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n} from \"@material-ui/core\";\nimport { configure, GlobalHotKeys } from \"react-hotkeys\";\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\nimport Nothing from \"../Placeholder/Nothing\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\nimport { usePagination } from \"../../hooks/pagination\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n padding: theme.spacing(2),\n textAlign: \"center\",\n color: theme.palette.text.secondary,\n margin: \"10px\",\n },\n root: {\n padding: \"10px\",\n [theme.breakpoints.up(\"sm\")]: {\n height: \"calc(100vh - 113px)\",\n },\n },\n rootTable: {\n padding: \"0px\",\n backgroundColor: theme.palette.background.paper.white,\n [theme.breakpoints.up(\"sm\")]: {\n height: \"calc(100vh - 113px)\",\n },\n },\n typeHeader: {\n margin: \"10px 25px\",\n color: \"#6b6b6b\",\n fontWeight: \"500\",\n },\n loading: {\n justifyContent: \"center\",\n display: \"flex\",\n marginTop: \"40px\",\n },\n errorBox: {\n padding: theme.spacing(4),\n },\n errorMsg: {\n marginTop: \"10px\",\n },\n hideAuto: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n flexFix: {\n minWidth: 0,\n },\n upButton: {\n marginLeft: \"20px\",\n marginTop: \"10px\",\n marginBottom: \"10px\",\n },\n clickAway: {\n height: \"100%\",\n width: \"100%\",\n },\n rootShare: {\n height: \"100%\",\n minHeight: 500,\n },\n visuallyHidden: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 20,\n width: 1,\n },\n gridContainer: {\n [theme.breakpoints.down(\"sm\")]: {\n gridTemplateColumns:\n \"repeat(auto-fill,minmax(180px,1fr))!important\",\n },\n [theme.breakpoints.up(\"md\")]: {\n gridTemplateColumns:\n \"repeat(auto-fill,minmax(220px,1fr))!important\",\n },\n display: \"grid!important\",\n },\n gridItem: {\n flex: \"1 1 220px!important\",\n },\n}));\n\nconst keyMap = {\n DELETE_FILE: \"del\",\n SELECT_ALL_SHOWED: `${isMac() ? \"command\" : \"ctrl\"}+a`,\n SELECT_ALL: `${isMac() ? \"command\" : \"ctrl\"}+shift+a`,\n DESELECT_ALL: \"esc\",\n};\n\nexport default function Explorer({ share }) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"fileManager\" });\n const location = useLocation();\n const dispatch = useDispatch();\n const selected = useSelector((state) => state.explorer.selected);\n const search = useSelector((state) => state.explorer.search);\n const loading = useSelector((state) => state.viewUpdate.navigatorLoading);\n const path = useSelector((state) => state.navigator.path);\n const sortMethod = useSelector((state) => state.viewUpdate.sortMethod);\n const navigatorErrorMsg = useSelector(\n (state) => state.viewUpdate.navigatorErrorMsg\n );\n const navigatorError = useSelector(\n (state) => state.viewUpdate.navigatorError\n );\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n\n const OpenRemoveDialog = useCallback(() => dispatch(openRemoveDialog()), [\n dispatch,\n ]);\n const SetSelectedTarget = useCallback(\n (targets) => dispatch(setSelectedTarget(targets)),\n [dispatch]\n );\n const ChangeContextMenu = useCallback(\n (type, open) => dispatch(changeContextMenu(type, open)),\n [dispatch]\n );\n const ChangeSortMethod = useCallback(\n (method) => dispatch(explorer.actions.changeSortMethod(method)),\n [dispatch]\n );\n const SelectAll = useCallback(\n () => dispatch(explorer.actions.selectAll()),\n [dispatch]\n );\n\n const { dirList, fileList, startIndex } = usePagination();\n\n const handlers = {\n DELETE_FILE: () => {\n if (selected.length > 0 && !share) {\n OpenRemoveDialog();\n }\n },\n SELECT_ALL_SHOWED: (e) => {\n e.preventDefault();\n if (selected.length >= dirList.length + fileList.length) {\n SetSelectedTarget([]);\n } else {\n SetSelectedTarget([...dirList, ...fileList]);\n }\n },\n SELECT_ALL: (e) => {\n e.preventDefault();\n SelectAll();\n },\n DESELECT_ALL: (e) => {\n e.preventDefault();\n SetSelectedTarget([]);\n },\n };\n\n useEffect(\n () =>\n configure({\n ignoreTags: [\"input\", \"select\", \"textarea\"],\n }),\n []\n );\n\n const contextMenu = (e) => {\n e.preventDefault();\n if (!search && !pathHelper.isSharePage(location.pathname)) {\n if (!loading) {\n ChangeContextMenu(\"empty\", true);\n }\n }\n };\n\n const ClickAway = (e) => {\n const element = e.target;\n if (element.dataset.clickaway) {\n SetSelectedTarget([]);\n }\n };\n\n const classes = useStyles();\n const isHomePage = pathHelper.isHomePage(location.pathname);\n\n const showView =\n !loading && (dirList.length !== 0 || fileList.length !== 0);\n\n const listView = useMemo(\n () => (\n \n \n \n \n {\n ChangeSortMethod(\n sortMethod === \"namePos\"\n ? \"nameRev\"\n : \"namePos\"\n );\n }}\n >\n {t(\"name\")}\n {sortMethod === \"namePos\" ||\n sortMethod === \"nameRev\" ? (\n \n {sortMethod === \"nameRev\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n {\n ChangeSortMethod(\n sortMethod === \"sizePos\"\n ? \"sizeRes\"\n : \"sizePos\"\n );\n }}\n >\n {t(\"size\")}\n {sortMethod === \"sizePos\" ||\n sortMethod === \"sizeRes\" ? (\n \n {sortMethod === \"sizeRes\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n {\n ChangeSortMethod(\n sortMethod === \"modifyTimePos\"\n ? \"modifyTimeRev\"\n : \"modifyTimePos\"\n );\n }}\n >\n {t(\"lastModified\")}\n {sortMethod === \"modifyTimePos\" ||\n sortMethod === \"modifyTimeRev\" ? (\n \n {sortMethod === \"sizeRes\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n \n \n {pathHelper.isMobile() && path !== \"/\" && (\n \n )}\n {dirList.map((value, index) => (\n \n ))}\n {fileList.map((value, index) => (\n \n ))}\n \n
\n ),\n [dirList, fileList, path, sortMethod, ChangeSortMethod, classes]\n );\n\n const normalView = useMemo(\n () => (\n
\n {dirList.length !== 0 && (\n <>\n \n {t(\"folders\")}\n \n \n {dirList.map((value, index) => (\n \n \n \n ))}\n \n \n )}\n {fileList.length !== 0 && (\n <>\n \n {t(\"files\")}\n \n \n {fileList.map((value, index) => (\n \n \n \n ))}\n \n \n )}\n
\n ),\n [dirList, fileList, classes]\n );\n\n const view = viewMethod === \"list\" ? listView : normalView;\n\n return (\n \n \n \n \n {navigatorError && (\n \n \n {t(\"listError\")}\n \n \n {navigatorErrorMsg.message}\n \n \n )}\n\n {loading && !navigatorError && (\n
\n \n
\n )}\n\n {!search &&\n isHomePage &&\n dirList.length === 0 &&\n fileList.length === 0 &&\n !loading &&\n !navigatorError && (\n \n )}\n {((search &&\n dirList.length === 0 &&\n fileList.length === 0 &&\n !loading &&\n !navigatorError) ||\n (dirList.length === 0 &&\n fileList.length === 0 &&\n !loading &&\n !navigatorError &&\n !isHomePage)) && }\n {showView && view}\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nconst paginate = (array, page_size, page_number) =>\n page_size === -1\n ? array\n : array.slice((page_number - 1) * page_size, page_number * page_size);\n\nexport function usePagination() {\n const files = useSelector((state) => state.explorer.fileList);\n const folders = useSelector((state) => state.explorer.dirList);\n const pagination = useSelector((state) => state.viewUpdate.pagination);\n\n const { dirList, fileList, startIndex } = useMemo(() => {\n const all = paginate(\n [...folders, ...files],\n pagination.size,\n pagination.page\n );\n const dirList = [];\n const fileList = [];\n all.forEach((v) =>\n v.type === \"dir\" ? dirList.push(v) : fileList.push(v)\n );\n const startIndex = pagination.size * (pagination.page - 1);\n return { dirList, fileList, startIndex };\n }, [folders, files, pagination]);\n return { dirList, fileList, startIndex };\n}\n","import React from \"react\";\nimport { BulletList } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"100%\",\n // padding: 40,\n // [theme.breakpoints.down(\"md\")]: {\n // width: \"100%\",\n // padding: 10\n // }\n },\n}));\n\nconst MyLoader = (props) => (\n \n);\n\nfunction ListLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n\nexport default ListLoading;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport { Clear, Folder } from \"@material-ui/icons\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { setSideBar } from \"../../../redux/explorer/action\";\nimport TypeIcon from \"../TypeIcon\";\nimport Typography from \"@material-ui/core/Typography\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Grid from \"@material-ui/core/Grid\";\nimport API from \"../../../middleware/Api\";\nimport { filename, sizeToString } from \"../../../utils\";\nimport Link from \"@material-ui/core/Link\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport TimeAgo from \"timeago-react\";\nimport ListLoading from \"../../Placeholder/ListLoading\";\nimport Hidden from \"@material-ui/core/Hidden\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Slide from \"@material-ui/core/Slide\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport { formatLocalTime } from \"../../../utils/datetime\";\nimport { navigateTo, toggleSnackbar } from \"../../../redux/explorer\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nconst drawerWidth = 350;\n\nconst useStyles = makeStyles((theme) => ({\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n },\n drawerPaper: {\n width: drawerWidth,\n boxShadow:\n \"0px 8px 10px -5px rgb(0 0 0 / 20%), 0px 16px 24px 2px rgb(0 0 0 / 14%), 0px 6px 30px 5px rgb(0 0 0 / 12%)\",\n },\n drawerContainer: {\n overflow: \"auto\",\n },\n header: {\n display: \"flex\",\n padding: theme.spacing(3),\n placeContent: \"space-between\",\n },\n fileIcon: { width: 33, height: 33 },\n fileIconSVG: { fontSize: 20 },\n folderIcon: {\n color: theme.palette.text.secondary,\n width: 33,\n height: 33,\n },\n fileName: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n wordBreak: \"break-all\",\n flexGrow: 2,\n },\n closeIcon: {\n placeSelf: \"flex-start\",\n marginTop: 2,\n },\n propsContainer: {\n padding: theme.spacing(3),\n },\n propsLabel: {\n color: theme.palette.text.secondary,\n padding: theme.spacing(1),\n },\n propsTime: {\n color: theme.palette.text.disabled,\n padding: theme.spacing(1),\n },\n propsValue: {\n padding: theme.spacing(1),\n wordBreak: \"break-all\",\n },\n appBar: {\n position: \"relative\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nexport default function SideDrawer() {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const sideBarOpen = useSelector((state) => state.explorer.sideBarOpen);\n const selected = useSelector((state) => state.explorer.selected);\n const SetSideBar = useCallback((open) => dispatch(setSideBar(open)), [\n dispatch,\n ]);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\n const search = useSelector((state) => state.explorer.search);\n const [target, setTarget] = useState(null);\n const [details, setDetails] = useState(null);\n const loadProps = (object) => {\n API.get(\n \"/object/property/\" +\n object.id +\n \"?trace_root=\" +\n (search ? \"true\" : \"false\") +\n \"&is_folder=\" +\n (object.type === \"dir\").toString()\n )\n .then((response) => {\n setDetails(response.data);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n useEffect(() => {\n setDetails(null);\n if (sideBarOpen) {\n if (selected.length !== 1) {\n SetSideBar(false);\n } else {\n setTarget(selected[0]);\n loadProps(selected[0]);\n }\n }\n }, [selected, sideBarOpen]);\n\n const classes = useStyles();\n const propsItem = [\n {\n label: t(\"fileManager.size\"),\n value: (d, target) =>\n sizeToString(d.size) +\n t(\"fileManager.bytes\", { bytes: d.size.toLocaleString() }),\n show: (d) => true,\n },\n {\n label: t(\"fileManager.storagePolicy\"),\n value: (d, target) => d.policy,\n show: (d) => d.type === \"file\",\n },\n {\n label: t(\"fileManager.storagePolicy\"),\n value: (d, target) =>\n d.policy === \"\"\n ? t(\"fileManager.inheritedFromParent\")\n : d.policy,\n show: (d) => d.type === \"dir\",\n },\n {\n label: t(\"fileManager.childFolders\"),\n value: (d, target) =>\n t(\"fileManager.childCount\", {\n num: d.child_folder_num.toLocaleString(),\n }),\n show: (d) => d.type === \"dir\",\n },\n {\n label: t(\"fileManager.childFiles\"),\n value: (d, target) =>\n t(\"fileManager.childCount\", {\n num: d.child_file_num.toLocaleString(),\n }),\n show: (d) => d.type === \"dir\",\n },\n {\n label: t(\"fileManager.parentFolder\"),\n // eslint-disable-next-line react/display-name\n value: (d, target) => {\n const path = d.path === \"\" ? target.path : d.path;\n const name = filename(path);\n return (\n \n NavigateTo(path)}\n >\n {name === \"\" ? t(\"fileManager.rootFolder\") : name}\n \n \n );\n },\n show: (d) => true,\n },\n {\n label: t(\"fileManager.modifiedAt\"),\n value: (d, target) => formatLocalTime(d.updated_at),\n show: (d) => true,\n },\n {\n label: t(\"fileManager.createdAt\"),\n value: (d) => formatLocalTime(d.created_at),\n show: (d) => true,\n },\n ];\n const content = (\n \n {!details && }\n {details && (\n <>\n {propsItem.map((item) => {\n if (item.show(target)) {\n return (\n <>\n \n {item.label}\n \n \n {item.value(details, target)}\n \n \n );\n }\n })}\n {target.type === \"dir\" && (\n \n ,\n ,\n ,\n ]}\n />\n \n )}\n \n )}\n \n );\n return (\n <>\n \n \n {target && (\n <>\n \n \n SetSideBar(false)}\n aria-label=\"close\"\n >\n \n \n \n {target.name}\n \n \n \n {content}\n \n )}\n \n \n \n \n \n
\n {target && (\n <>\n
\n {target.type === \"dir\" && (\n \n )}\n {target.type !== \"dir\" && (\n \n )}\n
\n \n {target.name}\n \n
\n SetSideBar(false)}\n className={classes.closeIcon}\n aria-label=\"close\"\n size={\"small\"}\n >\n \n \n
\n \n )}\n \n {content}\n
\n \n
\n \n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { useDrop } from \"react-dnd\";\nimport { PaginationItem } from \"@material-ui/lab\";\n\nexport default function CustomPaginationItem(props) {\n const inputRef = useRef(null);\n\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n useEffect(() => {\n if (\n isActive &&\n props.onClick &&\n props.type !== \"start-ellipsis\" &&\n props.type !== \"end-ellipsis\"\n ) {\n console.log(\"ss\");\n props.onClick();\n }\n }, [isActive, inputRef]);\n\n if (\n props.isMobile &&\n (props.type === \"start-ellipsis\" ||\n props.type === \"end-ellipsis\" ||\n props.type === \"page\")\n ) {\n if (props.selected) {\n return (\n
\n {props.page} / {props.count}\n
\n );\n }\n return <>;\n }\n return (\n
\n \n
\n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Pagination } from \"@material-ui/lab\";\nimport CustomPaginationItem from \"./PaginationItem\";\nimport { setPagination } from \"../../redux/viewUpdate/action\";\nimport AutoHidden from \"../Dial/AutoHidden\";\nimport statusHelper from \"../../utils/page\";\nimport { useLocation } from \"react-router-dom\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: \"fixed\",\n bottom: 23,\n /* left: 8px; */\n background: theme.palette.background.paper,\n borderRadius: 24,\n boxShadow:\n \" 0px 3px 5px -1px rgb(0 0 0 / 20%), 0px 6px 10px 0px rgb(0 0 0 / 14%), 0px 1px 18px 0px rgb(0 0 0 / 12%)\",\n padding: \"8px 4px 8px 4px\",\n marginLeft: 20,\n },\n placeholder: {\n marginTop: 80,\n },\n}));\n\nexport default function PaginationFooter() {\n const classes = useStyles();\n const dispatch = useDispatch();\n const files = useSelector((state) => state.explorer.fileList);\n const folders = useSelector((state) => state.explorer.dirList);\n const pagination = useSelector((state) => state.viewUpdate.pagination);\n const loading = useSelector((state) => state.viewUpdate.navigatorLoading);\n const location = useLocation();\n\n const SetPagination = useCallback((p) => dispatch(setPagination(p)), [\n dispatch,\n ]);\n\n const handleChange = (event, value) => {\n SetPagination({ ...pagination, page: value });\n };\n\n const count = useMemo(\n () => Math.ceil((files.length + folders.length) / pagination.size),\n [files, folders, pagination.size]\n );\n\n const isMobile = statusHelper.isMobile();\n const isSharePage = statusHelper.isSharePage(location.pathname);\n\n if (count > 1 && !loading) {\n return (\n <>\n {!isMobile && !isSharePage && (\n
\n )}\n \n
\n (\n \n )}\n color=\"secondary\"\n count={count}\n page={pagination.page}\n onChange={handleChange}\n />\n
\n \n \n );\n }\n return
;\n}\n","import React, { Component } from \"react\";\n\nimport Navigator from \"./Navigator/Navigator\";\nimport { DndProvider } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\nimport DragLayer from \"./DnD/DragLayer\";\nimport Explorer from \"./Explorer\";\nimport Modals from \"./Modals\";\nimport { withStyles } from \"@material-ui/core\";\nimport { connect } from \"react-redux\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport { withRouter } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport SideDrawer from \"./Sidebar/SideDrawer\";\nimport classNames from \"classnames\";\nimport { ImageLoader } from \"@abslant/cd-image-loader\";\nimport {\n closeAllModals,\n navigateTo,\n setSelectedTarget,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport PaginationFooter from \"./Pagination\";\n\nconst styles = (theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"calc(100vh - 64px)\",\n [theme.breakpoints.down(\"xs\")]: {\n height: \"100%\",\n },\n },\n rootShare: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n minHeight: 500,\n },\n explorer: {\n display: \"flex\",\n flexDirection: \"column\",\n overflowY: \"auto\",\n },\n});\n\nconst mapStateToProps = () => ({});\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n changeSubTitle: (text) => {\n dispatch(changeSubTitle(text));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n closeAllModals: () => {\n dispatch(closeAllModals());\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n };\n};\n\nclass FileManager extends Component {\n constructor(props) {\n super(props);\n }\n\n componentWillUnmount() {\n this.props.setSelectedTarget([]);\n this.props.closeAllModals();\n this.props.navigateTo(\"/\");\n }\n\n componentDidMount() {\n if (pathHelper.isHomePage(this.props.location.pathname)) {\n this.props.changeSubTitle(null);\n }\n }\n\n render() {\n const { classes } = this.props;\n return (\n \n \n \n \n
\n \n \n
\n\n \n \n
\n \n
\n );\n }\n}\n\nFileManager.propTypes = {};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(FileManager)));\n","import React from \"react\";\nimport {\n Icon,\n ListItemIcon,\n makeStyles,\n Menu,\n MenuItem,\n} from \"@material-ui/core\";\nimport CheckIcon from \"@material-ui/icons/Check\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n minWidth: 38,\n },\n}));\n\nexport default function SelectMenu({\n options,\n anchorEl,\n handleClose,\n callback,\n selected,\n showIcon = true,\n}) {\n const classes = useStyles();\n\n return (\n \n {options.map((item) => (\n <>\n callback(item)}\n >\n {showIcon && (\n \n {item.name !== selected ? (\n \n ) : (\n \n )}\n \n )}\n\n {item.name}\n \n \n ))}\n \n );\n}\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\nimport { Button, Paper } from \"@material-ui/core\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport pathHelper from \"../../utils/page\";\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\nimport { getPreviewURL } from \"../../middleware/Api\";\nimport { useHistory } from \"react-router-dom\";\nimport { basename, fileNameNoExt, isMobileSafari } from \"../../utils\";\nimport { list } from \"../../services/navigate\";\nimport { getViewerURL } from \"../../redux/explorer/action\";\nimport { subtitleSuffix, videoPreviewSuffix } from \"../../config\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { pathJoin } from \"../Uploader/core/utils\";\nimport { Launch, PlaylistPlay, Subtitles } from \"@material-ui/icons\";\nimport TextLoading from \"../Placeholder/TextLoading\";\nimport SelectMenu from \"./SelectMenu\";\nimport { getDownloadURL } from \"../../services/file\";\nimport { sortMethodFuncs } from \"../../redux/explorer/action\";\nimport { useTranslation } from \"react-i18next\";\n\nconst Artplayer = React.lazy(() =>\n import(\n /* webpackChunkName: \"artplayer\" */ \"artplayer/examples/react/Artplayer\"\n )\n);\n\nconst externalPlayers = [\n {\n name: \"PotPlayer\",\n url: (source, title) => `potplayer://${source}`,\n },\n {\n name: \"VLC\",\n url: (source, title) => `vlc://${source}`,\n },\n {\n name: \"IINA\",\n url: (source, title) => `iina://weblink?url=${source}`,\n },\n {\n name: \"nPlayer\",\n url: (source, title) => `nplayer-${source}`,\n },\n {\n name: \"MXPlayer (Free)\",\n url: (source, title) =>\n `intent:${source}#Intent;package=com.mxtech.videoplayer.ad;S.title=${title};end`,\n },\n {\n name: \"MXPlayer (Pro)\",\n url: (source, title) =>\n `intent:${source}#Intent;package=com.mxtech.videoplayer.pro;S.title=${title};end`,\n },\n];\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: 30,\n marginBottom: 20,\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n player: {\n height: \"100vh\",\n maxHeight: \"calc(100vh - 180px)\",\n },\n actions: {\n marginTop: theme.spacing(2),\n },\n actionButton: {\n marginRight: theme.spacing(1),\n marginTop: theme.spacing(1),\n },\n \"@global\": {\n \"video,.art-video-player,.art-bottom\":{\n borderRadius: theme.shape.borderRadius,\n }\n }\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function VideoViewer() {\n const { t } = useTranslation();\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const { title, path } = UseFileSubTitle(query, math, location);\n const theme = useTheme();\n const [art, setArt] = useState(null);\n const history = useHistory();\n const [files, setFiles] = useState([]);\n const [subtitles, setSubtitles] = useState([]);\n const [playlist, setPlaylist] = useState([]);\n const [subtitleOpen, setSubtitleOpen] = useState(null);\n const [subtitleSelected, setSubtitleSelected] = useState(\"\");\n const [playlistOpen, setPlaylistOpen] = useState(null);\n const [externalPlayerOpen, setExternalPlayerOpen] = useState(null);\n const isShare = pathHelper.isSharePage(location.pathname);\n const sortMethod = useSelector((state) => state.viewUpdate.sortMethod);\n const sortFunc = sortMethodFuncs[sortMethod];\n\n useEffect(() => {\n art &&\n art.on(\"ready\", () => {\n art.autoHeight = true;\n });\n return () => {\n if (\n art !== null &&\n !isMobileSafari() &&\n document.pictureInPictureEnabled &&\n art.playing\n ) {\n art.pip = true;\n art.query(\".art-video\").addEventListener(\n \"leavepictureinpicture\",\n () => {\n art.pause();\n },\n false\n );\n }\n };\n }, [art]);\n\n const classes = useStyles();\n\n useEffect(() => {\n if (art !== null) {\n const newURL = getPreviewURL(\n isShare,\n id,\n query.get(\"id\"),\n query.get(\"share_path\")\n );\n if (newURL !== art.url) {\n if (art.subtitle) {\n art.subtitle.show = false;\n }\n art.switchUrl(newURL);\n if (path && path !== \"\") {\n list(\n basename(path),\n isShare ? { key: id } : null,\n \"\",\n \"\"\n ).then((res) => {\n setFiles(\n res.data.objects.sort(sortFunc).filter((o) => o.type === \"file\")\n );\n setPlaylist(\n res.data.objects.filter(\n (o) =>\n o.type === \"file\" &&\n videoPreviewSuffix.indexOf(\n o.name.split(\".\").pop().toLowerCase()\n ) !== -1\n )\n );\n });\n }\n }\n }\n }, [art, id, location, path]);\n\n const switchSubtitle = (f) => {\n if (art !== null) {\n const fileType = f.name.split(\".\").pop().toLowerCase();\n art.subtitle.switch(\n getPreviewURL(\n isShare,\n id,\n f.id,\n pathJoin([basename(query.get(\"share_path\")), f.name])\n ),\n {\n type: fileType,\n }\n );\n art.subtitle.show = true;\n setSubtitleSelected(f.name);\n ToggleSnackbar(\n \"top\",\n \"center\",\n t(\"fileManager.subtitleSwitchTo\", {\n subtitle: f.name,\n }),\n \"info\"\n );\n }\n };\n\n useEffect(() => {\n if (files.length > 0) {\n const fileNameMatch = fileNameNoExt(title) + \".\";\n const options = files.filter((f) => {\n const fileType = f.name.split(\".\").pop().toLowerCase();\n return subtitleSuffix.indexOf(fileType) !== -1;\n }).sort((a, b) => {\n return (a.name.startsWith(fileNameMatch) && !b.name.startsWith(fileNameMatch)) ? -1 : 0;\n });\n if (options.length > 0 && options[0].name.startsWith(fileNameMatch)) {\n switchSubtitle(options[0]);\n }\n setSubtitles(options);\n }\n }, [files]);\n\n const switchVideo = (file) => {\n setSubtitleSelected(null);\n if (isShare) {\n file.key = id;\n }\n if (isMobileSafari()) {\n window.location.href = getViewerURL(\"video\", file, isShare);\n } else {\n history.push(getViewerURL(\"video\", file, isShare));\n }\n };\n\n const setSubtitle = (sub) => {\n setSubtitleOpen(null);\n switchSubtitle(sub);\n };\n\n const startSelectSubTitle = (e) => {\n if (subtitles.length === 0) {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"fileManager.noSubtitleAvailable\"),\n \"warning\"\n );\n return;\n }\n setSubtitleOpen(e.currentTarget);\n };\n\n const openInExternalPlayer = (player) => {\n const current = { name: title };\n current.id = query.get(\"id\");\n current.path = basename(path);\n if (isShare) {\n current.key = id;\n }\n\n setExternalPlayerOpen(null);\n getDownloadURL(current)\n .then((response) => {\n window.location.assign(player.url(response.data, title));\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n return (\n
\n \n }>\n setArt(a)}\n />\n \n \n
\n }\n variant=\"outlined\"\n >\n {t(\"fileManager.subtitle\")}\n \n {playlist.length >= 2 && (\n setPlaylistOpen(e.currentTarget)}\n className={classes.actionButton}\n startIcon={}\n variant=\"outlined\"\n >\n {t(\"fileManager.playlist\")}\n \n )}\n setExternalPlayerOpen(e.currentTarget)}\n className={classes.actionButton}\n startIcon={}\n variant=\"outlined\"\n >\n {t(\"fileManager.openInExternalPlayer\")}\n \n
\n setSubtitleOpen(null)}\n />\n setPlaylistOpen(null)}\n />\n setExternalPlayerOpen(null)}\n />\n
\n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\n\nimport {\n Avatar,\n Card,\n CardHeader,\n Grid,\n IconButton,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport { useHistory } from \"react-router-dom\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation } from \"react-router\";\nimport TimeAgo from \"timeago-react\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport Nothing from \"../Placeholder/Nothing\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n cardContainer: {\n padding: theme.spacing(1),\n },\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n loadMore: {\n textAlign: \"right\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n badge: {\n marginLeft: theme.spacing(1),\n height: 17,\n },\n orderSelect: {\n textAlign: \"right\",\n marginTop: 5,\n },\n cardAction: {\n marginTop: 0,\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function SearchResult() {\n const { t } = useTranslation(\"application\", { keyPrefix: \"share\" });\n const { t: tGlobal } = useTranslation();\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const query = useQuery();\n const location = useLocation();\n const history = useHistory();\n\n const [page, setPage] = useState(1);\n const [total, setTotal] = useState(0);\n const [shareList, setShareList] = useState([]);\n const [orderBy, setOrderBy] = useState(\"created_at DESC\");\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const search = (keywords, page, orderBy) => {\n const order = orderBy.split(\" \");\n API.get(\n \"/share/search?page=\" +\n page +\n \"&order_by=\" +\n order[0] +\n \"&order=\" +\n order[1] +\n \"&keywords=\" +\n encodeURIComponent(keywords)\n )\n .then((response) => {\n setTotal(response.data.total);\n setShareList(response.data.items);\n })\n .catch(() => {\n ToggleSnackbar(\"top\", \"right\", t(\"listLoadingError\"), \"error\");\n });\n };\n\n useEffect(() => {\n const keywords = query.get(\"keywords\");\n if (keywords) {\n search(keywords, page, orderBy);\n } else {\n ToggleSnackbar(\"top\", \"right\", t(\"enterKeywords\"), \"warning\");\n }\n }, [location]);\n\n const handlePageChange = (event, value) => {\n setPage(value);\n const keywords = query.get(\"keywords\");\n search(keywords, value, orderBy);\n };\n\n const handleOrderChange = (event) => {\n setOrderBy(event.target.value);\n const keywords = query.get(\"keywords\");\n search(keywords, page, event.target.value);\n };\n\n return (\n
\n \n \n \n {t(\"searchResult\")}\n \n \n \n \n \n \n {t(\"createdAtDesc\")}\n \n \n {t(\"createdAtAsc\")}\n \n \n {t(\"downloadsDesc\")}\n \n \n {t(\"downloadsAsc\")}\n \n \n {t(\"viewsDesc\")}\n \n \n {t(\"viewsAsc\")}\n \n \n \n \n \n \n {shareList.length === 0 && }\n {shareList.map((value) => (\n \n \n \n {!value.is_dir && (\n \n )}{\" \"}\n {value.is_dir && (\n \n \n \n )}\n
\n }\n action={\n \n \n history.push(\"/s/\" + value.key)\n }\n >\n \n \n \n }\n title={\n \n \n {value.source\n ? value.source.name\n : t(\"sourceNotFound\")}\n \n \n }\n subheader={\n \n ,\n ]}\n />\n \n }\n />\n \n \n ))}\n \n
\n \n
{\" \"}\n \n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport UnlockIcon from \"@material-ui/icons/LockOpen\";\nimport EyeIcon from \"@material-ui/icons/RemoveRedEye\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\n\nimport {\n Avatar,\n Button,\n Card,\n CardActions,\n CardHeader,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton,\n TextField,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport Chip from \"@material-ui/core/Chip\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { VisibilityOff, VpnKey } from \"@material-ui/icons\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport { withRouter } from \"react-router-dom\";\nimport ToggleIcon from \"material-ui-toggle-icon\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport Nothing from \"../Placeholder/Nothing\";\nimport { withTranslation } from \"react-i18next\";\n\nconst styles = (theme) => ({\n cardContainer: {\n padding: theme.spacing(1),\n },\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n loadMore: {\n textAlign: \"right\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n badge: {\n marginLeft: theme.spacing(1),\n height: 17,\n },\n orderSelect: {\n textAlign: \"right\",\n marginTop: 5,\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass MyShareCompoment extends Component {\n state = {\n page: 1,\n total: 0,\n shareList: [],\n showPwd: null,\n orderBy: \"created_at DESC\",\n };\n\n componentDidMount = () => {\n this.loadList(1, this.state.orderBy);\n };\n\n showPwd = (pwd) => {\n this.setState({ showPwd: pwd });\n };\n\n handleClose = () => {\n this.setState({ showPwd: null });\n };\n\n removeShare = (id) => {\n API.delete(\"/share/\" + id)\n .then(() => {\n let oldList = this.state.shareList;\n oldList = oldList.filter((value) => {\n return value.key !== id;\n });\n this.setState({\n shareList: oldList,\n total: this.state.total - 1,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"share.shareCanceled\"),\n \"success\"\n );\n if (oldList.length === 0) {\n this.loadList(1, this.state.orderBy);\n }\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n changePermission = (id) => {\n const newPwd = Math.random().toString(36).substr(2).slice(2, 8);\n const oldList = this.state.shareList;\n const shareIndex = oldList.findIndex((value) => {\n return value.key === id;\n });\n API.patch(\"/share/\" + id, {\n prop: \"password\",\n value: oldList[shareIndex].password === \"\" ? newPwd : \"\",\n })\n .then((response) => {\n oldList[shareIndex].password = response.data;\n this.setState({\n shareList: oldList,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n changePreviewOption = (id) => {\n const oldList = this.state.shareList;\n const shareIndex = oldList.findIndex((value) => {\n return value.key === id;\n });\n API.patch(\"/share/\" + id, {\n prop: \"preview_enabled\",\n value: oldList[shareIndex].preview ? \"false\" : \"true\",\n })\n .then((response) => {\n oldList[shareIndex].preview = response.data;\n this.setState({\n shareList: oldList,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n loadList = (page, orderBy) => {\n const order = orderBy.split(\" \");\n API.get(\n \"/share?page=\" +\n page +\n \"&order_by=\" +\n order[0] +\n \"&order=\" +\n order[1]\n )\n .then((response) => {\n this.setState({\n total: response.data.total,\n shareList: response.data.items,\n });\n })\n .catch(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"share.listLoadingError\"),\n \"error\"\n );\n });\n };\n\n handlePageChange = (event, value) => {\n this.setState({\n page: value,\n });\n this.loadList(value, this.state.orderBy);\n };\n\n handleOrderChange = (event) => {\n this.setState({\n orderBy: event.target.value,\n });\n this.loadList(this.state.page, event.target.value);\n };\n\n isExpired = (share) => {\n return share.expire < -1 || share.remain_downloads === 0;\n };\n\n render() {\n const { classes, t } = this.props;\n\n return (\n
\n \n \n \n {t(\"share.sharedFiles\")}\n \n \n \n \n \n \n {t(\"share.createdAtDesc\")}\n \n \n {t(\"share.createdAtAsc\")}\n \n \n {t(\"share.downloadsDesc\")}\n \n \n {t(\"share.downloadsAsc\")}\n \n \n {t(\"share.viewsDesc\")}\n \n \n {t(\"share.viewsAsc\")}\n \n \n \n \n \n \n {this.state.shareList.length === 0 && (\n \n )}\n {this.state.shareList.map((value) => (\n \n \n \n {!value.is_dir && (\n \n )}{\" \"}\n {value.is_dir && (\n \n \n \n )}\n
\n }\n title={\n \n \n {value.source\n ? value.source.name\n : t(\"share.sourceNotFound\")}\n \n \n }\n subheader={\n \n {formatLocalTime(value.create_date)}\n {this.isExpired(value) && (\n \n )}\n \n }\n />\n \n \n \n \n this.props.history.push(\n \"/s/\" +\n value.key +\n (value.password === \"\"\n ? \"\"\n : \"?password=\" +\n value.password)\n )\n }\n >\n \n \n {\" \"}\n {value.password !== \"\" && (\n <>\n \n this.changePermission(\n value.key\n )\n }\n >\n \n \n \n \n \n this.showPwd(value.password)\n }\n >\n \n \n \n \n \n )}\n {value.password === \"\" && (\n \n this.changePermission(value.key)\n }\n >\n \n \n \n \n )}\n \n this.changePreviewOption(value.key)\n }\n >\n \n \n }\n offIcon={\n \n }\n />\n \n \n \n this.removeShare(value.key)\n }\n >\n \n \n \n \n \n \n \n ))}\n \n
\n \n
{\" \"}\n \n {t(\"share.sharePassword\")} {\" \"}\n \n \n {\" \"}\n \n {\" \"}\n {\" \"}\n {\" \"}\n \n );\n }\n}\n\nconst MyShare = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(MyShareCompoment))));\n\nexport default MyShare;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n makeStyles,\n} from \"@material-ui/core\";\nimport FormGroup from \"@material-ui/core/FormGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { Virtuoso } from \"react-virtuoso\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n content: {\n padding: 0,\n },\n scroll: {\n maxHeight: \"calc(100vh - 200px)\",\n },\n}));\n\nexport default function SelectFileDialog(props) {\n const { t } = useTranslation();\n const [files, setFiles] = useState(props.files);\n\n useEffect(() => {\n setFiles(props.files);\n }, [props.files]);\n\n const handleChange = (index) => (event) => {\n const filesCopy = [...files];\n // eslint-disable-next-line\n filesCopy.map((v, k) => {\n if (v.index === index) {\n filesCopy[k] = {\n ...filesCopy[k],\n selected: event.target.checked ? \"true\" : \"false\",\n };\n }\n });\n setFiles(filesCopy);\n };\n\n const submit = () => {\n const index = [];\n // eslint-disable-next-line\n files.map((v) => {\n if (v.selected === \"true\") {\n index.push(parseInt(v.index));\n }\n });\n props.onSubmit(index);\n };\n\n const classes = useStyles();\n\n return (\n \n \n {t(\"download.selectDownloadingFile\")}\n \n \n (\n \n \n \n }\n label={v.path}\n />\n \n \n )}\n />\n \n \n \n
\n \n {t(\"ok\", { ns: \"common\" })}\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useEffect,useMemo } from \"react\";\nimport {\n Card,\n CardContent,\n darken,\n IconButton,\n lighten,\n LinearProgress,\n makeStyles,\n Typography,\n useTheme,\n} from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport { hex2bin, sizeToString } from \"../../utils\";\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { ExpandMore, HighlightOff } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport Table from \"@material-ui/core/Table\";\nimport Badge from \"@material-ui/core/Badge\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport API from \"../../middleware/Api\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport TimeAgo from \"timeago-react\";\nimport SelectFileDialog from \"../Modals/SelectFile\";\nimport { useHistory } from \"react-router\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\nimport { TableVirtuoso } from \"react-virtuoso\";\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {},\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n\n \"&$expanded\": {\n minHeight: 56,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"flex\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n marginTop: \"20px\",\n justifyContent: \"space-between\",\n },\n iconContainer: {\n width: \"90px\",\n height: \"96px\",\n padding: \" 35px 29px 29px 29px\",\n paddingLeft: \"35px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n content: {\n width: \"100%\",\n minWidth: 0,\n [theme.breakpoints.up(\"sm\")]: {\n borderInlineStart: \"1px \" + theme.palette.divider + \" solid\",\n },\n },\n contentSide: {\n minWidth: 0,\n paddingTop: \"24px\",\n paddingRight: \"28px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n iconBig: {\n fontSize: \"30px\",\n },\n iconMultiple: {\n fontSize: \"30px\",\n color: \"#607D8B\",\n },\n progress: {\n marginTop: 8,\n marginBottom: 4,\n },\n expand: {\n transition: \".15s transform ease-in-out\",\n },\n expanded: {\n transform: \"rotate(180deg)\",\n },\n subFile: {\n width: \"100%\",\n minWidth: 300,\n wordBreak: \"break-all\",\n },\n subFileName: {\n display: \"flex\",\n },\n subFileIcon: {\n marginRight: \"20px\",\n },\n subFileSize: {\n minWidth: 120,\n },\n subFilePercent: {\n minWidth: 105,\n },\n scroll: {\n overflow: \"auto\",\n maxHeight: \"300px\",\n },\n action: {\n padding: theme.spacing(2),\n textAlign: \"right\",\n },\n actionButton: {\n marginLeft: theme.spacing(1),\n },\n info: {\n padding: theme.spacing(2),\n },\n infoTitle: {\n fontWeight: 700,\n textAlign: \"left\",\n },\n infoValue: {\n color: theme.palette.text.secondary,\n textAlign: \"left\",\n paddingLeft:theme.spacing(1),\n },\n bitmap: {\n width: \"100%\",\n height: \"50px\",\n backgroundColor: theme.palette.background.default,\n },\n}));\n\nexport default function DownloadingCard(props) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"download\" });\n const { t: tGlobal } = useTranslation();\n const canvasRef = React.createRef();\n const classes = useStyles();\n const theme = useTheme();\n const history = useHistory();\n\n const [expanded, setExpanded] = React.useState(\"\");\n const [task, setTask] = React.useState(props.task);\n const [loading, setLoading] = React.useState(false);\n const [selectDialogOpen, setSelectDialogOpen] = React.useState(false);\n const [selectFileOption, setSelectFileOption] = React.useState([]);\n\n const handleChange = (panel) => (event, newExpanded) => {\n setExpanded(newExpanded ? panel : false);\n };\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n setTask(props.task);\n }, [props.task]);\n\n useEffect(() => {\n if (task.info.bitfield === \"\") {\n return;\n }\n let result = \"\";\n task.info.bitfield.match(/.{1,2}/g).forEach((str) => {\n result += hex2bin(str);\n });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n context.clearRect(0, 0, canvas.width, canvas.height);\n context.strokeStyle = theme.palette.primary.main;\n for (let i = 0; i < canvas.width; i++) {\n let bit =\n result[\n Math.round(((i + 1) / canvas.width) * task.info.numPieces)\n ];\n bit = bit ? bit : result.slice(-1);\n if (bit === \"1\") {\n context.beginPath();\n context.moveTo(i, 0);\n context.lineTo(i, canvas.height);\n context.stroke();\n }\n }\n // eslint-disable-next-line\n }, [task.info.bitfield, task.info.numPieces, theme]);\n\n const getPercent = (completed, total) => {\n if (total === 0) {\n return 0;\n }\n return (completed / total) * 100;\n };\n\n const activeFiles = useCallback(() => {\n return task.info.files.filter((v) => v.selected === \"true\");\n }, [task.info.files]);\n\n const deleteFile = (index) => {\n setLoading(true);\n const current = activeFiles();\n const newIndex = [];\n const newFiles = [];\n // eslint-disable-next-line\n current.map((v) => {\n if (v.index !== index && v.selected) {\n newIndex.push(parseInt(v.index));\n newFiles.push({\n ...v,\n selected: \"true\",\n });\n } else {\n newFiles.push({\n ...v,\n selected: \"false\",\n });\n }\n });\n API.put(\"/aria2/select/\" + task.info.gid, {\n indexes: newIndex,\n })\n .then(() => {\n setTask({\n ...task,\n info: {\n ...task.info,\n files: newFiles,\n },\n });\n ToggleSnackbar(\"top\", \"right\", t(\"taskFileDeleted\"), \"success\");\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const getDownloadName = useCallback(() => {\n if (task.info.bittorrent.info.name !== \"\") {\n return task.info.bittorrent.info.name;\n }\n return task.name === \".\" ? t(\"unknownTaskName\") : task.name;\n }, [task]);\n\n const getIcon = useCallback(() => {\n if (task.info.bittorrent.mode === \"multi\") {\n return (\n \n \n \n );\n } else {\n return (\n \n );\n }\n // eslint-disable-next-line\n }, [task, classes]);\n\n const cancel = () => {\n setLoading(true);\n API.delete(\"/aria2/task/\" + task.info.gid)\n .then(() => {\n ToggleSnackbar(\"top\", \"right\", t(\"taskCanceled\"), \"success\");\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const changeSelectedFile = (fileIndex) => {\n setLoading(true);\n API.put(\"/aria2/select/\" + task.info.gid, {\n indexes: fileIndex,\n })\n .then(() => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"operationSubmitted\"),\n \"success\"\n );\n setSelectDialogOpen(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const subFileList = useMemo(() => {\n const processStyle = (value) => ({\n background:\n \"linear-gradient(to right, \" +\n (theme.palette.type ===\n \"dark\"\n ? darken(\n theme.palette\n .primary\n .main,\n 0.4\n )\n : lighten(\n theme.palette\n .primary\n .main,\n 0.85\n )) +\n \" 0%,\" +\n (theme.palette.type ===\n \"dark\"\n ? darken(\n theme.palette\n .primary\n .main,\n 0.4\n )\n : lighten(\n theme.palette\n .primary\n .main,\n 0.85\n )) +\n \" \" +\n getPercent(\n value.completedLength,\n value.length\n ).toFixed(0) +\n \"%,\" +\n theme.palette.background\n .paper +\n \" \" +\n getPercent(\n value.completedLength,\n value.length\n ).toFixed(0) +\n \"%,\" +\n theme.palette.background\n .paper +\n \" 100%)\",\n });\n\n const subFileCell = (value) => (\n <>\n \n \n \n {value.path}\n \n \n \n \n {\" \"}\n {sizeToString(\n value.length\n )}\n \n \n \n \n {getPercent(\n value.completedLength,\n value.length\n ).toFixed(2)}\n %\n \n \n \n \n \n deleteFile(\n value.index\n )\n }\n disabled={loading}\n size={\"small\"}\n >\n \n \n \n \n \n );\n\n return activeFiles().length > 5 ? (\n ,\n // eslint-disable-next-line react/display-name\n TableRow: (props) => {\n const index = props[\"data-index\"];\n const value = activeFiles()[index];\n return (\n \n );\n },\n }}\n data={activeFiles()}\n itemContent={(index, value) => (\n subFileCell(value)\n )}\n />\n ) : (\n
\n
\n \n {activeFiles().map((value) => {\n return (\n \n {subFileCell(value)}\n \n );\n })}\n \n
\n \n );\n }, [\n classes,\n theme,\n activeFiles,\n ]);\n\n return (\n \n setSelectDialogOpen(false)}\n modalsLoading={loading}\n files={selectFileOption}\n onSubmit={changeSelectedFile}\n />\n \n \n
{getIcon()}
\n \n \n \n {getDownloadName()}\n \n \n \n \n {task.total > 0 && (\n \n {getPercent(\n task.downloaded,\n task.total\n ).toFixed(2)}\n % -{\" \"}\n {task.downloaded === 0\n ? \"0Bytes\"\n : sizeToString(task.downloaded)}\n /\n {task.total === 0\n ? \"0Bytes\"\n : sizeToString(task.total)}{\" \"}\n -{\" \"}\n {task.speed === \"0\"\n ? \"0B/s\"\n : sizeToString(task.speed) + \"/s\"}\n \n )}\n {task.total === 0 && - }\n \n \n \n \n \n \n \n \n \n \n {task.info.bittorrent.mode === \"multi\" && subFileList}\n
\n \n history.push(\n \"/home?path=\" + encodeURIComponent(task.dst)\n )\n }\n >\n {t(\"openDstFolder\")}\n \n {task.info.bittorrent.mode === \"multi\" && (\n {\n setSelectDialogOpen(true);\n setSelectFileOption([\n ...props.task.info.files,\n ]);\n }}\n >\n {t(\"selectDownloadingFile\")}\n \n )}\n \n {t(\"cancelTask\")}\n \n
\n \n
\n {task.info.bitfield !== \"\" && (\n \n )}\n\n \n \n \n {t(\"updatedAt\")}\n \n \n \n \n \n \n \n {t(\"uploaded\")}\n \n \n {sizeToString(task.info.uploadLength)}\n \n \n \n \n {t(\"uploadSpeed\")}\n \n \n {sizeToString(task.info.uploadSpeed)} / s\n \n \n {task.info.bittorrent.mode !== \"\" && (\n <>\n \n \n {t(\"InfoHash\")}\n \n \n {task.info.infoHash}\n \n \n \n \n {t(\"seederCount\")}\n \n \n {task.info.numSeeders}\n \n \n \n \n {t(\"seeding\")}\n \n \n {task.info.seeder === \"true\"\n ? t(\"isSeeding\")\n : t(\"notSeeding\")}\n \n \n \n )}\n \n \n {t(\"chunkSize\")}\n \n \n {sizeToString(task.info.pieceLength)}\n \n \n \n \n {t(\"chunkNumbers\")}\n \n \n {task.info.numPieces}\n \n \n {props.task.node && \n \n {t(\"downloadNode\")}\n \n \n {props.task.node}\n \n }\n \n
\n
\n \n
\n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport {\n Card,\n CardContent,\n IconButton,\n makeStyles,\n Typography,\n useTheme,\n} from \"@material-ui/core\";\nimport { sizeToString } from \"../../utils\";\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { ExpandMore } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport Badge from \"@material-ui/core/Badge\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport { useHistory } from \"react-router\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { TableVirtuoso } from \"react-virtuoso\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {},\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n\n \"&$expanded\": {\n minHeight: 56,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"flex\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n marginTop: \"20px\",\n justifyContent: \"space-between\",\n },\n iconContainer: {\n width: \"90px\",\n height: \"96px\",\n padding: \" 35px 29px 29px 29px\",\n paddingLeft: \"35px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n content: {\n width: \"100%\",\n minWidth: 0,\n [theme.breakpoints.up(\"sm\")]: {\n borderInlineStart: \"1px \" + theme.palette.divider + \" solid\",\n },\n textAlign: \"left\",\n },\n contentSide: {\n minWidth: 0,\n paddingTop: \"24px\",\n paddingRight: \"28px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n iconBig: {\n fontSize: \"30px\",\n },\n iconMultiple: {\n fontSize: \"30px\",\n color: \"#607D8B\",\n },\n progress: {\n marginTop: 8,\n marginBottom: 4,\n },\n expand: {\n transition: \".15s transform ease-in-out\",\n },\n expanded: {\n transform: \"rotate(180deg)\",\n },\n subFile: {\n width: \"100%\",\n minWidth: 300,\n wordBreak: \"break-all\",\n },\n subFileName: {\n display: \"flex\",\n },\n subFileIcon: {\n marginRight: \"20px\",\n },\n subFileSize: {\n minWidth: 115,\n },\n subFilePercent: {\n minWidth: 100,\n },\n scroll: {\n overflow: \"auto\",\n maxHeight: \"300px\",\n },\n action: {\n padding: theme.spacing(2),\n textAlign: \"right\",\n },\n actionButton: {\n marginLeft: theme.spacing(1),\n },\n info: {\n padding: theme.spacing(2),\n },\n infoTitle: {\n fontWeight: 700,\n textAlign: \"left\",\n },\n infoValue: {\n color: theme.palette.text.secondary,\n textAlign: \"left\",\n paddingLeft: theme.spacing(1),\n },\n}));\n\nexport default function FinishedCard(props) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"download\" });\n const classes = useStyles();\n const theme = useTheme();\n const history = useHistory();\n\n const [expanded, setExpanded] = React.useState(false);\n const [loading, setLoading] = React.useState(false);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const handleChange = () => (event, newExpanded) => {\n setExpanded(!!newExpanded);\n };\n\n const cancel = () => {\n setLoading(true);\n API.delete(\"/aria2/task/\" + props.task.gid)\n .then(() => {\n ToggleSnackbar(\"top\", \"right\", t(\"taskDeleted\"), \"success\");\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n window.location.reload();\n });\n };\n\n const getPercent = (completed, total) => {\n if (total == 0) {\n return 0;\n }\n return (completed / total) * 100;\n };\n\n const getDownloadName = useCallback(() => {\n return props.task.name === \".\" ? t(\"unknownTaskName\") : props.task.name;\n }, [props.task.name]);\n\n const activeFiles = useCallback(() => {\n return props.task.files.filter((v) => v.selected === \"true\");\n }, [props.task.files]);\n\n const getIcon = useCallback(() => {\n if (props.task.files.length > 1) {\n return (\n \n \n \n );\n } else {\n return (\n \n );\n }\n }, [props.task, classes]);\n\n const getTaskError = (error) => {\n try {\n const res = JSON.parse(error);\n return res.msg + \":\" + res.error;\n } catch (e) {\n return t(\"transferFailed\");\n }\n };\n\n const subFileList = useMemo(() => {\n const subFileCell = (value) => (\n <>\n \n \n \n {value.path}\n \n \n \n \n {\" \"}\n {sizeToString(value.length)}\n \n \n \n \n {getPercent(\n value.completedLength,\n value.length\n ).toFixed(2)}\n %\n \n \n \n );\n\n return activeFiles().length > 5 ? (\n ,\n }}\n data={activeFiles()}\n itemContent={(index, value) => subFileCell(value)}\n />\n ) : (\n
\n
\n \n {activeFiles().map((value) => {\n return (\n \n {subFileCell(value)}\n \n );\n })}\n \n
\n \n );\n }, [classes, activeFiles]);\n\n return (\n \n \n \n
{getIcon()}
\n \n \n \n {getDownloadName()}\n \n \n {props.task.status === 3 && (\n \n \n {t(\"downloadFailed\", {\n msg: props.task.error,\n })}\n \n \n )}\n {props.task.status === 5 && (\n \n {t(\"canceledStatus\")}\n {props.task.error !== \"\" && (\n ({props.task.error})\n )}\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 4 && (\n \n {t(\"finishedStatus\")}\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 0 && (\n \n {t(\"pending\")}\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 1 && (\n \n {t(\"transferring\")}\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 2 && (\n \n \n {getTaskError(props.task.task_error)}\n \n \n )}\n \n \n \n \n \n \n \n \n \n {props.task.files.length > 1 && subFileList}\n
\n \n history.push(\n \"/home?path=\" +\n encodeURIComponent(props.task.dst)\n )\n }\n >\n {t(\"openDstFolder\")}\n \n \n {t(\"deleteRecord\")}\n \n
\n \n
\n \n \n \n {t(\"createdAt\")}\n \n \n {formatLocalTime(props.task.create)}\n \n \n \n \n {t(\"updatedAt\")}\n \n \n {formatLocalTime(props.task.update)}\n \n \n {props.task.node && (\n \n \n {t(\"downloadNode\")}\n \n \n {props.task.node}\n \n \n )}\n \n
\n
\n \n
\n );\n}\n","import React, { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport AutoHidden from \"./AutoHidden\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Fab from \"@material-ui/core/Fab\";\nimport { Add } from \"@material-ui/icons\";\nimport Modals from \"../FileManager/Modals\";\nimport { openRemoteDownloadDialog } from \"../../redux/explorer\";\n\nconst useStyles = makeStyles(() => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n}));\n\nexport default function RemoteDownloadButton() {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const OpenRemoteDownloadDialog = useCallback(\n () => dispatch(openRemoteDownloadDialog()),\n [dispatch]\n );\n\n return (\n <>\n \n \n OpenRemoteDownloadDialog()}\n >\n \n \n \n \n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport API from \"../../middleware/Api\";\nimport { Button, IconButton, Typography, withStyles } from \"@material-ui/core\";\nimport DownloadingCard from \"./DownloadingCard\";\nimport FinishedCard from \"./FinishedCard\";\nimport RemoteDownloadButton from \"../Dial/Aria2\";\nimport Auth from \"../../middleware/Auth\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport Nothing from \"../Placeholder/Nothing\";\nimport { withTranslation } from \"react-i18next\";\n\nconst styles = (theme) => ({\n actions: {\n display: \"flex\",\n },\n title: {\n marginTop: \"20px\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 700,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n hide: {\n display: \"none\",\n },\n loadingAnimation: {\n borderRadius: \"6px 6px 0 0\",\n },\n shareFix: {\n marginLeft: \"20px\",\n },\n loadMore: {\n textAlign: \"center\",\n marginTop: \"20px\",\n marginBottom: \"20px\",\n },\n margin: {\n marginTop: theme.spacing(2),\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass DownloadComponent extends Component {\n page = 0;\n interval = 0;\n previousDownloading = -1;\n\n state = {\n downloading: [],\n loading: false,\n finishedList: [],\n continue: true,\n };\n\n componentDidMount = () => {\n this.loadDownloading();\n };\n\n componentWillUnmount() {\n clearTimeout(this.interval);\n }\n\n loadDownloading = () => {\n this.setState({\n loading: true,\n });\n API.get(\"/aria2/downloading\")\n .then((response) => {\n this.setState({\n downloading: response.data,\n loading: false,\n });\n // 设定自动更新\n clearTimeout(this.interval);\n if (response.data.length > 0) {\n this.interval = setTimeout(\n this.loadDownloading,\n 1000 *\n response.data.reduce(function (prev, current) {\n return prev.interval < current.interval\n ? prev\n : current;\n }).interval\n );\n }\n\n // 下载中条目变更时刷新已完成列表\n if (response.data.length !== this.previousDownloading) {\n this.page = 0;\n this.setState({\n finishedList: [],\n continue: true,\n });\n this.loadMore();\n }\n this.previousDownloading = response.data.length;\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n loadMore = () => {\n this.setState({\n loading: true,\n });\n API.get(\"/aria2/finished?page=\" + ++this.page)\n .then((response) => {\n this.setState({\n finishedList: [\n ...this.state.finishedList,\n ...response.data,\n ],\n loading: false,\n continue: response.data.length >= 10,\n });\n })\n .catch(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"download.failedToLoad\"),\n \"error\"\n );\n this.setState({\n loading: false,\n });\n });\n };\n\n render() {\n const { classes, t } = this.props;\n const user = Auth.GetUser();\n\n return (\n
\n {user.group.allowRemoteDownload && }\n \n {t(\"download.active\")}\n \n \n \n \n {this.state.downloading.length === 0 && (\n \n )}\n {this.state.downloading.map((value, k) => (\n \n ))}\n \n {t(\"download.finished\")}\n \n
\n {this.state.finishedList.length === 0 && (\n \n )}\n {this.state.finishedList.map((value, k) => {\n if (value.files) {\n return ;\n }\n return null;\n })}\n \n {t(\"download.loadMore\")}\n \n
\n
\n );\n }\n}\n\nconst Download = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withTranslation()(DownloadComponent)));\n\nexport default Download;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\n\nimport {\n Avatar,\n Button,\n Card,\n CardActions,\n CardContent,\n CardHeader,\n Divider,\n TextField,\n withStyles,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { withTranslation } from \"react-i18next\";\n\nconst styles = (theme) => ({\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n continue: {\n marginLeft: \"auto\",\n marginRight: \"10px\",\n marginRottom: \"10px\",\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass LockedFileCompoment extends Component {\n constructor(props) {\n super(props);\n const query = new URLSearchParams(this.props.location.search);\n this.state = {\n pwd: query.get(\"password\"),\n };\n }\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n submit = (e) => {\n e.preventDefault();\n if (this.state.pwd === \"\") {\n return;\n }\n this.props.setPassowrd(this.state.pwd);\n };\n\n render() {\n const { classes, t } = this.props;\n\n return (\n
\n \n \n }\n title={t(\"share.privateShareTitle\", {\n nick: this.props.share.creator.nick,\n })}\n subheader={formatLocalTime(\n this.props.share.create_date\n )}\n />\n \n \n
\n \n \n
\n \n \n {t(\"share.continue\")}\n \n \n
\n
\n );\n }\n}\n\nconst LockedFile = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(LockedFileCompoment))));\n\nexport default LockedFile;\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Avatar, Typography } from \"@material-ui/core\";\nimport { useHistory } from \"react-router\";\nimport Link from \"@material-ui/core/Link\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n boxHeader: {\n textAlign: \"center\",\n padding: 24,\n },\n avatar: {\n backgroundColor: theme.palette.secondary.main,\n margin: \"0 auto\",\n width: 50,\n height: 50,\n cursor: \"pointer\",\n },\n shareDes: {\n marginTop: 12,\n },\n shareInfo: {\n color: theme.palette.text.disabled,\n fontSize: 14,\n },\n}));\n\nexport default function Creator(props) {\n const { t } = useTranslation(\"application\", { keyPrefix: \"share\" });\n const classes = useStyles();\n const history = useHistory();\n\n const getSecondDes = () => {\n if (props.share.expire > 0) {\n if (props.share.expire >= 24 * 3600) {\n return t(\"expireInXDays\", {\n num: Math.round(props.share.expire / (24 * 3600)),\n });\n }\n\n return t(\"expireInXHours\", {\n num: Math.round(props.share.expire / 3600),\n });\n }\n return formatLocalTime(props.share.create_date);\n };\n\n const userProfile = () => {\n history.push(\"/profile/\" + props.share.creator.key);\n props.onClose && props.onClose();\n };\n\n return (\n
\n userProfile()}\n />\n \n {props.isFolder && (\n userProfile()}\n href={\"javascript:void(0)\"}\n color=\"inherit\"\n />,\n ]}\n />\n )}\n {!props.isFolder && (\n userProfile()}\n href={\"javascript:void(0)\"}\n color=\"inherit\"\n />,\n ]}\n />\n )}\n \n \n {t(\"statistics\", {\n views: props.share.views,\n downloads: props.share.downloads,\n time: getSecondDes(),\n })}\n \n
\n );\n}\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { sizeToString, vhCheck } from \"../../utils\";\r\nimport { isPreviewable } from \"../../config\";\r\nimport { Button, Typography, withStyles, CardActionArea, CardActions } from \"@material-ui/core\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport TypeIcon from \"../FileManager/TypeIcon\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport PurchaseShareDialog from \"../Modals/PurchaseShare\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Creator from \"./Creator\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport Report from \"../Modals/Report\";\r\nimport {\r\n openMusicDialog,\r\n openResaveDialog,\r\n setSelectedTarget,\r\n showAudioPreview,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { startDownload } from \"../../redux/explorer/action\";\r\nimport { trySharePurchase } from \"../../redux/explorer/async\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport CardMedia from \"@material-ui/core/CardMedia\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nvhCheck();\r\nconst styles = (theme) => ({\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"90px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginTop: \"90px\",\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginTop: 0,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n justifyContent: \"center\",\r\n display: \"flex\",\r\n },\r\n player: {\r\n borderRadius: \"4px\",\r\n },\r\n fileCotainer: {\r\n width: \"200px\",\r\n margin: \"0 auto\",\r\n },\r\n buttonCotainer: {\r\n width: \"400px\",\r\n margin: \"0 auto\",\r\n textAlign: \"center\",\r\n marginTop: \"20px\",\r\n },\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n icon: {\r\n borderRadius: \"10%\",\r\n marginTop: 2,\r\n },\r\n\r\n box: {\r\n width: \"100%\",\r\n maxWidth: 490,\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: theme.shape.borderRadius,\r\n boxShadow: \"0 8px 16px rgba(29,39,55,.25)\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n height: \"calc(var(--vh, 100vh) - 56px)\",\r\n borderRadius: 0,\r\n maxWidth: 1000,\r\n },\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n boxContent: {\r\n padding: 24,\r\n display: \"flex\",\r\n flex: \"1\",\r\n },\r\n fileName: {\r\n marginLeft: 20,\r\n },\r\n fileSize: {\r\n color: theme.palette.text.disabled,\r\n fontSize: 14,\r\n },\r\n boxFooter: {\r\n display: \"flex\",\r\n padding: \"20px 16px\",\r\n justifyContent: \"space-between\",\r\n },\r\n downloadButton: {\r\n marginLeft: 8,\r\n },\r\n});\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n openMusicDialog: (first) => {\r\n dispatch(showAudioPreview(first));\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n openResave: (key) => {\r\n dispatch(openResaveDialog(key));\r\n },\r\n startDownload: (share, file) => {\r\n dispatch(startDownload(share, file));\r\n },\r\n trySharePurchase: (share) => dispatch(trySharePurchase(share)),\r\n };\r\n};\r\n\r\nconst Modals = React.lazy(() => import(\"../FileManager/Modals\"));\r\nconst ImgPreview = React.lazy(() => import(\"../FileManager/ImgPreview\"));\r\n\r\nclass SharedFileCompoment extends Component {\r\n state = {\r\n anchorEl: null,\r\n open: false,\r\n purchaseCallback: null,\r\n loading: false,\r\n openReport: false,\r\n };\r\n\r\n downloaded = false;\r\n\r\n // TODO merge into react thunk\r\n preview = () => {\r\n if (pathHelper.isSharePage(this.props.location.pathname)) {\r\n const user = Auth.GetUser();\r\n if (!Auth.Check() && user && !user.group.shareDownload) {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"share.pleaseLogin\"),\r\n \"warning\"\r\n );\r\n return;\r\n }\r\n }\r\n\r\n switch (isPreviewable(this.props.share.source.name)) {\r\n case \"img\":\r\n this.props.showImgPreivew({\r\n key: this.props.share.key,\r\n name: this.props.share.source.name,\r\n });\r\n return;\r\n case \"msDoc\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/doc?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"audio\":\r\n this.props.openMusicDialog({\r\n key: this.props.share.key,\r\n name: this.props.share.source.name,\r\n type: \"share\",\r\n });\r\n return;\r\n case \"video\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/video?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"edit\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/text?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"pdf\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/pdf?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"code\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/code?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"epub\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/epub?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n default:\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"share.cannotShare\"),\r\n \"warning\"\r\n );\r\n return;\r\n }\r\n };\r\n\r\n scoreHandler = (callback) => (event) => {\r\n this.props.trySharePurchase(this.props.share).then(() => callback());\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.setSelectedTarget([]);\r\n }\r\n\r\n download = () => {\r\n this.props.startDownload(this.props.share, null);\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const user = Auth.GetUser();\r\n const isLogin = Auth.Check();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n this.setState({ openReport: false })}\r\n />\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {this.props.share.source.name}\r\n \r\n \r\n {sizeToString(this.props.share.source.size)}\r\n \r\n
\r\n
\r\n \r\n\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n window.open(\"https://www.06dn.com/introduce/\")\r\n }\r\n color=\"primary\" size=\"small\"\r\n >\r\n 360/谷歌/微软EDGE浏览器无法下载?\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n this.props.openResave(this.props.share.key)\r\n }\r\n color=\"secondary\"\r\n >\r\n {t(\"vas.saveToMyFiles\")}\r\n \r\n \r\n this.setState({ openReport: true })\r\n }\r\n color=\"secondary\"\r\n >\r\n {t(\"vas.report\")}\r\n \r\n
\r\n
\r\n {this.props.share.preview && (\r\n \r\n {t(\"share.preview\")}\r\n \r\n )}\r\n \r\n {t(\"fileManager.download\")}\r\n {this.props.share.score > 0 &&\r\n (!isLogin || !user.group.shareFree) &&\r\n t(\"vas.creditPrice\", {\r\n num: this.props.share.score,\r\n })}\r\n {this.props.share.score > 0 &&\r\n isLogin &&\r\n user.group.shareFree &&\r\n t(\"vas.creditFree\")}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst SharedFile = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(SharedFileCompoment))));\r\n\r\nexport default SharedFile;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Button, Typography, withStyles, CardActionArea, CardActions } from \"@material-ui/core\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport FileManager from \"../FileManager/FileManager\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Popover from \"@material-ui/core/Popover\";\r\nimport Creator from \"./Creator\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport {\r\n openMusicDialog,\r\n openResaveDialog,\r\n setSelectedTarget,\r\n setShareUserPopover,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { setShareInfo } from \"../../redux/viewUpdate/action\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport CardMedia from \"@material-ui/core/CardMedia\";\r\n\r\nconst styles = (theme) => ({\r\n layout: {\r\n width: \"auto\",\r\n marginTop: 30,\r\n marginBottom: 30,\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginTop: theme.spacing(2),\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n },\r\n },\r\n managerContainer: {\r\n overflowY: \"auto\",\r\n },\r\n});\r\n\r\nconst ReadMe = React.lazy(() => import(\"./ReadMe\"));\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n anchorEl: state.viewUpdate.shareUserPopoverAnchorEl,\r\n fileList: state.explorer.fileList,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n openMusicDialog: () => {\r\n dispatch(openMusicDialog());\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n openResave: (key) => {\r\n dispatch(openResaveDialog(key));\r\n },\r\n setShareUserPopover: (e) => {\r\n dispatch(setShareUserPopover(e));\r\n },\r\n setShareInfo: (s) => {\r\n dispatch(setShareInfo(s));\r\n },\r\n };\r\n};\r\n\r\nclass SharedFolderComponent extends Component {\r\n state = {};\r\n\r\n UNSAFE_componentWillMount() {\r\n this.props.setShareInfo(this.props.share);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.setShareInfo(null);\r\n this.props.setSelectedTarget([]);\r\n }\r\n\r\n handleClickAway = (e) => {\r\n const ignore = e && e.clientY && e.clientY <= 64;\r\n if (!pathHelper.isMobile() && !ignore) {\r\n this.props.setSelectedTarget([]);\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n let readmeShowed = false;\r\n const id = this.props.anchorEl !== null ? \"simple-popover\" : undefined;\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n window.open(\"https://www.06dn.com/introduce/\")\r\n }\r\n color=\"primary\" size=\"small\"\r\n >\r\n 360/谷歌/微软EDGE浏览器无法下载?\r\n \r\n \r\n \r\n\r\n \r\n \r\n {/* eslint-disable-next-line */}\r\n {this.props.fileList.map((value) => {\r\n if (\r\n (value.name.toLowerCase() === \"readme.md\" ||\r\n value.name.toLowerCase() === \"readme.txt\") &&\r\n !readmeShowed\r\n ) {\r\n readmeShowed = true;\r\n return ;\r\n }\r\n })}\r\n this.props.setShareUserPopover(null)}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"center\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"center\",\r\n }}\r\n >\r\n \r\n this.props.setShareUserPopover(null)}\r\n share={this.props.share}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst SharedFolder = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(SharedFolderComponent)));\r\n\r\nexport default SharedFolder;\r\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\nimport PageLoading from \"../Placeholder/PageLoading\";\nimport { useParams } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport { useDispatch } from \"react-redux\";\nimport Notice from \"./NotFound\";\nimport LockedFile from \"./LockedFile\";\nimport SharedFile from \"./SharedFile\";\nimport SharedFolder from \"./SharedFolder\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function SharePreload() {\n const { t } = useTranslation(\"application\", { keyPrefix: \"share\" });\n const dispatch = useDispatch();\n const { id } = useParams();\n\n const [share, setShare] = useState(undefined);\n const [loading, setLoading] = useState(false);\n const [password, setPassword] = useState(\"\");\n\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n if (share) {\n if (share.locked) {\n SetSubTitle(\n t(\"privateShareTitle\", { nick: share.creator.nick })\n );\n if (password !== \"\") {\n ToggleSnackbar(\n \"top\",\n \"right\",\n t(\"incorrectPassword\"),\n \"warning\"\n );\n }\n } else {\n SetSubTitle(share.source.name);\n }\n } else {\n SetSubTitle();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [share, SetSubTitle, ToggleSnackbar]);\n\n useEffect(() => {\n return () => {\n SetSubTitle();\n };\n // eslint-disable-next-line\n }, []);\n\n useEffect(() => {\n setLoading(true);\n let withPassword = \"\";\n if (password !== \"\") {\n withPassword = \"?password=\" + password;\n }\n API.get(\"/share/info/\" + id + withPassword)\n .then((response) => {\n setShare(response.data);\n setLoading(false);\n })\n .catch((error) => {\n setLoading(false);\n if (error.code === 404) {\n setShare(null);\n } else {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n }\n });\n }, [id, password, ToggleSnackbar]);\n\n return (\n }>\n {share === undefined && }\n {share === null && }\n {share && share.locked && (\n \n )}\n {share && !share.locked && !share.is_dir && (\n \n )}\n {share && !share.locked && share.is_dir && (\n \n )}\n \n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport pathHelper from \"../../utils/page\";\nimport {\n closeAllModals,\n openShareDialog,\n setModalsLoading,\n setSelectedTarget,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\nimport i18n from \"i18next\";\nimport CreatShare from \"../Modals/CreateShare\";\n\nconst useStyles = makeStyles(() => ({\n layout: {\n width: \"auto\",\n },\n \"@global\": {\n iframe: {\n border: \"none\",\n width: \"100%\",\n height: \"calc(100vh - 64px)\",\n marginBottom: -10,\n },\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function DocViewer() {\n const [session, setSession] = useState(null);\n const [file, setFile] = useState(null);\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n const theme = useTheme();\n const { title } = UseFileSubTitle(query, math, location);\n\n const shareOpened = useSelector((state) => state.viewUpdate.modals.share);\n const modalLoading = useSelector((state) => state.viewUpdate.modalsLoading);\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const CloseAllModals = useCallback(\n () => dispatch(closeAllModals()),\n [dispatch]\n );\n const OpenShareDialog = useCallback(\n () => dispatch(openShareDialog()),\n [dispatch]\n );\n const SetModalsLoading = useCallback(\n (status) => dispatch(setModalsLoading(status)),\n [dispatch]\n );\n\n useEffect(() => {\n let requestURL = \"/file/doc/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/doc/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n API.get(requestURL)\n .then((response) => {\n if (response.data.access_token) {\n response.data.url = response.data.url.replaceAll(\n \"lng\",\n i18n.resolvedLanguage.toLowerCase()\n );\n response.data.url = response.data.url.replaceAll(\n \"darkmode\",\n theme.palette.type === \"dark\" ? \"2\" : \"1\"\n );\n }\n\n setSession(response.data);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n // eslint-disable-next-line\n }, [math.params[0], location]);\n\n const classes = useStyles();\n\n const handlePostMessage = (e) => {\n console.log(\"Received PostMessage from \" + e.origin, e.data);\n let msg;\n try {\n msg = JSON.parse(e.data);\n } catch (e) {\n return;\n }\n\n if (msg.MessageId === \"UI_Sharing\") {\n setFile([\n {\n name: title,\n id: query.get(\"id\"),\n type: \"file\",\n },\n ]);\n OpenShareDialog();\n }\n };\n\n useEffect(() => {\n const frameholder = document.getElementById(\"frameholder\");\n const office_frame = document.createElement(\"iframe\");\n if (session && session.access_token && frameholder) {\n office_frame.name = \"office_frame\";\n office_frame.id = \"office_frame\";\n\n // The title should be set for accessibility\n office_frame.title = \"Office Frame\";\n\n // This attribute allows true fullscreen mode in slideshow view\n // when using PowerPoint's 'view' action.\n office_frame.setAttribute(\"allowfullscreen\", \"true\");\n\n // The sandbox attribute is needed to allow automatic redirection to the O365 sign-in page in the business user flow\n office_frame.setAttribute(\n \"sandbox\",\n \"allow-scripts allow-same-origin allow-forms allow-popups allow-top-navigation allow-popups-to-escape-sandbox\"\n );\n frameholder.appendChild(office_frame);\n document.getElementById(\"office_form\").submit();\n window.addEventListener(\"message\", handlePostMessage, false);\n\n return () => {\n window.removeEventListener(\"message\", handlePostMessage, false);\n };\n }\n }, [session]);\n\n return (\n
\n CloseAllModals()}\n modalsLoading={modalLoading}\n setModalsLoading={SetModalsLoading}\n selected={file}\n />\n {session && !session.access_token && (\n