{"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","i18n.ts","utils/page.ts","component/Uploader/core/utils/pool.ts","component/Uploader/core/utils/validator.ts","component/Uploader/core/utils/request.ts","services/file.ts","utils/index.js","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","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","component/Navbar/UserAvatarPopover.js","component/Navbar/UserAvatar.js","utils/zip.js","utils/api.ts","utils/filesystem.ts","redux/explorer/action.ts","component/Navbar/Navbar.js","component/Navbar/SearchBar.js","component/Navbar/StorageBar.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","component/Navbar/UserInfo.js","component/Navbar/FileTags.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","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","statusHelper","isHomePage","startsWith","isAdminPage","isLoginPage","isMobile","innerWidth","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","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","substr","filePath","hex2bin","hex","parseInt","toString","padStart","basename","pathList","filename","fileNameNoExt","lastIndexOf","randomStr","result","characters","charactersLength","charAt","random","getNumber","base","conditions","isMac","platform","toUpperCase","isMobileSafari","ua","userAgent","iOS","match","webkit","vhCheck","vh","innerHeight","style","setProperty","getSelectItemStyles","personName","fontWeight","typography","fontWeightRegular","fontWeightMedium","removeI18nCache","keys","removeItem","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","StartBatchDownloadAll","startBatchDownload","ChangePageSize","changePageSize","anchorSort","setAnchorSort","anchorPagination","setAnchorPagination","selectedIndex","setSelectedIndex","openReport","setOpenReport","handlePaginationChange","s","toggleViewMethod","newMethod","0","1","2","3","4","5","6","7","handleMenuItemClick","nick","creator","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","expireLabel","whiteSpace","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","customExpires","setCustomExpires","customDownloads","setCustomDownloads","handleChange","prop","handleExpand","panel","isExpanded","handleCheck","aria-controls","checked","htmlFor","endAdornment","edge","onMouseDown","preventDefault","onIcon","offIcon","labelWidth","labelId","num","inputProps","min","marginLeft","ceil","onFocus","select","autoFocus","readonly","link","clipboard","writeText","submitFormBody","is_dir","modalsLoading","PurchaseShareDialog","OptionSelector","modals","dividers","o","description","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","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","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","fileSources","postBody","startDownload","shareDownload","allowArchiveDownload","walkSources","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","ListItem","MuiListItem","NavbarCompoment","componentDidMount","handleDrawerToggle","mobileOpen","openDownload","openDirectoryDownload","archiveDownload","signOut","finally","handleWechatOpen","openWechat","handleWechatClose","handleQQOpen","openQQ","handleQQClose","avatarOpen","shareDialogOpen","UploaderRef","unlisten","listen","drawer","drawerContainer","listItem","listItemIcon","listItemText","allowRemoteDownload","divider","transform","process","browser","test","appBar","handleDesktopToggle","desktopOpen","menuButton","menuIcon","subTitle","grow","sectionForFile","disableClickAway","audioPreviewPlayingName","audioPreviewOpen","socialButton","smUp","implementation","container","paper","drawerPaper","onOpen","disableDiscovery","ModalProps","keepMounted","xsDown","drawerPaperDesktop","drawerOpen","drawerClose","alt","startIcon","Navbar","loadUploader","audioPreviewIsOpen","withTheme","flexShrink","drawerDesktop","menuButtonDesktop","mixins","borderRight","upDrawer","flexDirection","justifyContent","transition","transitions","easing","sharp","duration","enteringScreen","leavingScreen","nested","paddingLeft","extendedIcon","addButton","fabButton","badgeFix","iconFix","dividerFix","folderShareIcon","verticalAlign","shareInfoContainer","textDecoration","shareAvatar","stickFooter","ownerInfo","minStickDrawer","overflowY","paddingList","listItemActive","searchBar","searchIcon","inputRoot","inputInput","iconButton","configure","ignoreTags","keyMap","SEARCH","SearchBarCompoment","handlers","searchShare","blur","cancelSuggest","onBlur","suggestBox","TransitionProps","timeout","square","SearchBar","fade","common","white","pointerEvents","paddingTop","paddingRight","paddingBottom","StorageBarCompoment","percent","used","showExpand","firstLoad","updateStatus","refresh","storageContainer","storageIcon","detail","storageTitle","titleText","upgradeLink","showUpgrade","onMouseEnter","onMouseLeave","progressContainer","progressBar","storageInfo","storageText","percentageText","round","StorageBar","storageRefresh","backdropFilter","gap","cursor","flex","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","mime_type","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","p","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","listAction","textOverflow","successStatus","errorStatus","disabledBadge","dstLink","fileNameContainer","minHeight","getSpeedText","speed","speedAvg","useSpeedAvg","displayedSpeed","getErrMsg","errMsg","Message","UploadTask","useAvgSpeed","onCancel","onRefresh","taskHover","setTaskHover","startLoadedRef","setProgress","durationTotal","resAvg","retry","useUpload","fullScreen","NavigateTo","statusText","uploaded","percentage","resumeLabel","continueLabel","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","Replay","ClearAll","Menu","enterNextDelay","dense","val","Transition","forwardRef","Slide","direction","rootOverwrite","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","icons","AudioIcon","VideoIcon","ImageIcon","PdfIcon","FileWordBox","FilePowerpointBox","FileExcelBox","ScriptText","MagnetOn","ZipBox","WindowRestore","Android","FileShowIcon","LanguagePhp","LanguageGo","LanguagePython","LanguageC","LanguageCpp","LanguageJavascript","MenuBook","fileSuffix","IconComponent","getColor","getColorValue","iconClassName","UserInfoCompoment","userNav","flexAvatar","avatarImg","storageCircle","nickName","groupName","backgroundImage","backgroundSize","hiddenButton","subMenu","overFlow","paddingSummary","Circle","CircleOutline","Heart","HeartOutline","Hexagon","HexagonOutline","Hexagram","HexagramOutline","Rhombus","RhombusOutline","Square","SquareOutline","Triangle","TriangleOutline","FolderHeartOutline","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","isLocalhost","hostname","AuthRoute","rest","render","NoAuthRoute","PageLoading","emptyContainer","shadows","emptyInfoBig","Notice","primaryColor","secondaryColor","y","rx","ry","captchaPlacholder","NormalCaptcha","captchaRef","useStyle","captcha","setCaptcha","captchaData","setCaptchaData","refreshCaptcha","captchaCode","captchaInputContainer","required","autoComplete","captchaImageContainer","captchaImage","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","defaultValidate","useCaptcha","captchaType","captcha_type","captchaLoading","setCaptchaLoading","captchaRefreshRef","normal","captchaParamsRef","CaptchaRender","useNormalCaptcha","recaptcha","useRecaptcha","tcaptcha","useTCaptcha","textTransform","linkContainer","textField","borderColor","buttonContainer","authnLink","LoginForm","email","setEmail","pwd","setPwd","useAuthn","setUseAuthn","twoFA","setTwoFA","faCode","setFACode","loginCaptcha","QQLogin","authn","ApplyThemes","SetSessionStatus","useHistory","afterLogin","Container","Paper","credentials","credentialRequestOptions","publicKey","challenge","allowCredentials","assertion","authData","authenticatorData","clientDataJSON","rawId","sig","signature","userHandle","login","userName","Password","EmailOutlined","VpnKeyOutlined","Fingerprint","VpnKey","Box","mt","expandMore","active","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","thumb","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","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","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","displayEmpty","emptyState","grid","cardHeader","avatarContainer","contentContainer","VisibilityOff","fileStats","views","cardActions","dialogTitle","dialogActions","MyShare","flexWrap","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","numPieces","beginPath","moveTo","lineTo","stroke","getPercent","completed","activeFiles","getDownloadName","bittorrent","getIcon","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","togglePasswordVisibility","setPassowrd","lockIcon","Visibility","submitButton","LockedFile","boxHeader","Creator","ImgPreview","SharedFileCompoment","scoreHandler","download","box","boxContent","fileSize","openResave","downloadButton","SharedFile","ReadMe","SharedFolderComponent","handleClickAway","ignore","readmeShowed","ClickAwayListener","onClickAway","managerContainer","headerIcon","headerTitle","readme","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","legend","legendDot","r1_dot","r2_dot","r3_dot","align","activate_date","expiration","expiration_date","Quota","float","PackSelect","boxHead","packName","price","priceWithScore","boxBottom","lineHeight","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","tabsContainer","Tabs","indicatorColor","textColor","centered","Tab","md","payMethod","priceShow","tier","titleTypographyProps","subheaderTypographyProps","cardPricing","line","CardActions","redeemContainer","BuyQuota","tabs","paymentSection","paymentTitle","paymentMethods","paymentMethod","selectedPayment","giftSection","giftTitle","giftInput","formIcon","CreateWebDAVAccount","setValue","pathSelectDialog","setPathSelectDialog","formContainer","LabelOutlined","CreateWebDAVMount","Storage","qrcode","phoneContainer","marginX","perspective","transformStyle","perspectiveOrigin","phoneFrame","phoneImage","bold","frameContainer","ol","paddingInlineStart","li","cardContent","tableContainer","WebDAV","tab","setTab","setCreate","mount","setMount","accounts","setAccounts","setFolders","app_promotion","account","ID","CreatedAt","Name","Root","Readonly","mountInfo","newValue","Alert","severity","TableContainer","accountCopy","toggleAccountReadonly","allowWebDAVProxy","UseProxy","use_proxy","toggleAccountUseProxy","CloudOff","Cloud","deleteAccount","policy_name","folderCopy","deleteMount","Tasks","setTasks","nowrap","getError","ProfileCompoment","listType","loadNext","loadPrev","mobileHide","tableLink","justify","pageInfo","Profile","backgroundPosition","textShadow","th","infoContainer","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","avatarBox","userInfo","infoTextWithIcon","rightIconWithText","infoText","ConfirmationNumber","Switch","firstColor","secondColor","Brightness3","ListAlt","Schedule","Translate","webdav","ListItemAvatar","userGravatar","paddingText","flexContainerResponse","desText","ToggleButtonGroup","exclusive","ToggleButton","themeBlock","UserSetting","listItemSelected","QQCallback","setMsg","Register","password_repeat","setInput","setEmailActive","setShowPwd","showPwdRepeat","setShowPwdRepeat","regCaptcha","LockOutlined","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","Repeat","RepeatOne","Shuffle","MusicPlayer","ReactReader","m","EpubViewer","currentLocation","setLocation","fileUrl","locationChanged","epubcifi","epubInitOptions","openAs","showToc","PDFViewer","App","themeConfig","prefersDarkMode","defaultConfig","fontFamily","h5","h6","subtitle1","prefer","createMuiTheme","overrides","MuiButton","contained","MuiPaper","rounded","elevation1","elevation2","MuiCard","MuiAppBar","MuiTab","MuiChip","MuiIconButton","MuiToolbar","MuiDrawer","MuiDialog","MuiTextField","MuiTooltip","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","emailActive","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.1257ca9c.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","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","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 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","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, { 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 DownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Auth from \"../../../middleware/Auth\";\nimport {\n changeSortMethod,\n startBatchDownload,\n} 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 StartBatchDownloadAll = useCallback(\n () => dispatch(startBatchDownload(share)),\n [dispatch, share]\n );\n const ChangePageSize = useCallback(\n (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 \n \n \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 Input,\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 expireLabel: {\n whiteSpace: \"nowrap\",\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 const [customExpires, setCustomExpires] = React.useState(3600);\n const [customDownloads, setCustomDownloads] = React.useState(10);\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\n ? values.downloads === -1\n ? parseInt(customDownloads)\n : values.downloads\n : -1,\n expire:\n values.expires === -1\n ? parseInt(customExpires)\n : 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 {values.downloads >= 0 && (\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 {t(\"modals.custom\")}\n \n \n )}\n {values.downloads === -1 && (\n \n setCustomDownloads(\n e.target.value\n )\n }\n endAdornment={\n \n {t(\"modals.downloads\")}\n \n }\n />\n )}\n \n \n {t(\"modals.or\")}\n \n \n {values.expires >= 0 && (\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 {t(\"modals.custom\")}\n \n \n )}\n {values.expires === -1 && (\n \n setCustomExpires(e.target.value)\n }\n endAdornment={\n \n {t(\"modals.seconds\")}\n \n }\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","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","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","/* 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, fileList, dirList },\n router: {\n location: { pathname },\n },\n } = getState();\n const dirs: string[] = [],\n items: string[] = [];\n const fileSources: CloudreveFile[] = selected.length ? selected : [...dirList, ...fileList];\n fileSources.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\"] = fileSources[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, fileList, dirList },\n } = getState();\n\n dispatch(openLoadingDialog(i18next.t(\"modals.listingFiles\")));\n\n let queue: CloudreveFile[] = [];\n try {\n const walkSources = selected.length ? selected : [...dirList, ...fileList];\n queue = await walk(walkSources, 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 classNames from \"classnames\";\nimport { connect } from \"react-redux\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport MusicNote from \"@material-ui/icons/MusicNote\";\nimport BackIcon from \"@material-ui/icons/ArrowBack\";\nimport SdStorage from \"@material-ui/icons/SdStorage\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\nimport MoveIcon from \"@material-ui/icons/Input\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport MenuIcon from \"@material-ui/icons/Menu\";\nimport { isPreviewable } from \"../../config\";\nimport { changeThemeColor, sizeToString, vhCheck } from \"../../utils\";\nimport Uploader from \"../Uploader/Uploader.js\";\nimport pathHelper from \"../../utils/page\";\nimport SezrchBar from \"./SearchBar\";\nimport StorageBar from \"./StorageBar\";\nimport UserAvatar from \"./UserAvatar\";\nimport UserInfo from \"./UserInfo\";\nimport {\n FolderDownload,\n AccountArrowRight,\n AccountPlus,\n LogoutVariant,\n} from \"mdi-material-ui\";\nimport { withRouter } from \"react-router-dom\";\nimport {\n AppBar,\n Drawer,\n Grow,\n Hidden,\n IconButton,\n List,\n ListItemIcon,\n ListItemText,\n SwipeableDrawer,\n Toolbar,\n Tooltip,\n Typography,\n withStyles,\n withTheme\n} from \"@material-ui/core\";\nimport Auth from \"../../middleware/Auth\";\nimport API from \"../../middleware/Api\";\nimport FileTag from \"./FileTags\";\nimport { Assignment, Devices, MoreHoriz, Settings } from \"@material-ui/icons\";\nimport Divider from \"@material-ui/core/Divider\";\nimport SubActions from \"../FileManager/Navigator/SubActions\";\nimport {\n audioPreviewSetIsOpen,\n changeContextMenu,\n drawerToggleAction,\n navigateTo,\n openCreateFolderDialog,\n openLoadingDialog,\n openMoveDialog,\n openMusicDialog,\n openPreview,\n openRemoveDialog,\n openRenameDialog,\n openShareDialog,\n saveFile,\n setSelectedTarget,\n setSessionStatus,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport {\n startBatchDownload,\n startDirectoryDownload,\n startDownload,\n} from \"../../redux/explorer/action\";\nimport PolicySwitcher from \"./PolicySwitcher\";\nimport { withTranslation } from \"react-i18next\";\nimport MuiListItem from \"@material-ui/core/ListItem\";\nimport {\n Dashboard,\n CloudUpload,\n FolderShared,\n CloudDownload,\n Storage,\n DevicesOther,\n ExitToApp,\n PersonAdd,\n Person,\n Search,\n ArrowBack,\n Edit,\n FileCopy,\n} from \"@material-ui/icons\";\nimport { WechatOutlined, QqOutlined } from \"@ant-design/icons\";\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n Button,\n} from \"@material-ui/core\";\n\nvhCheck();\nconst drawerWidth = 240;\nconst drawerWidthMobile = 270;\n\nconst ListItem = withStyles((theme) => ({\n root: {\n borderRadius:theme.shape.borderRadius,\n },\n}))(MuiListItem);\n\nconst mapStateToProps = (state) => {\n return {\n desktopOpen: state.viewUpdate.open,\n selected: state.explorer.selected,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n path: state.navigator.path,\n title: state.siteConfig.title,\n subTitle: state.viewUpdate.subTitle,\n loadUploader: state.viewUpdate.loadUploader,\n isLogin: state.viewUpdate.isLogin,\n shareInfo: state.viewUpdate.shareInfo,\n registerEnabled: state.siteConfig.registerEnabled,\n audioPreviewPlayingName: state.explorer.audioPreview.playingName,\n audioPreviewIsOpen: state.explorer.audioPreview.isOpen,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n handleDesktopToggle: (open) => {\n dispatch(drawerToggleAction(open));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n changeContextMenu: (type, open) => {\n dispatch(changeContextMenu(type, open));\n },\n saveFile: () => {\n dispatch(saveFile());\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\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 openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n setSessionStatus: () => {\n dispatch(setSessionStatus());\n },\n openPreview: (share) => {\n dispatch(openPreview(share));\n },\n audioPreviewOpen: () => {\n dispatch(audioPreviewSetIsOpen(true));\n },\n startBatchDownload: (share) => {\n dispatch(startBatchDownload(share));\n },\n startDirectoryDownload: (share) => {\n dispatch(startDirectoryDownload(share));\n },\n startDownload: (share, file) => {\n dispatch(startDownload(share, file));\n },\n };\n};\n\nconst styles = (theme) => ({\n appBar: {\n marginLeft: drawerWidth,\n [theme.breakpoints.down(\"xs\")]: {\n marginLeft: drawerWidthMobile,\n },\n zIndex: theme.zIndex.drawer + 1,\n transition: \"all 0.3s ease\",\n background: theme.palette.type === \"dark\" \n ? \"rgba(17, 24, 39, 0.95)\"\n : \"#fff\",\n color: theme.palette.type === \"dark\" \n ? \"rgba(255,255,255,0.9)\"\n : \"rgba(0,0,0,0.87)\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.05)\",\n borderBottom: \"1px solid \" + (theme.palette.type === \"dark\" \n ? \"rgba(255,255,255,0.1)\" \n : \"rgba(0,0,0,0.1)\"),\n },\n drawer: {\n width: 0,\n flexShrink: 0,\n },\n drawerDesktop: {\n width: drawerWidth,\n flexShrink: 0,\n },\n icon: {\n marginRight: theme.spacing(2),\n },\n menuButton: {\n marginRight: theme.spacing(2),\n color: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.9)\"\n : \"rgba(0,0,0,0.87)\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.05)\"\n : \"rgba(0,0,0,0.05)\",\n },\n },\n menuButtonDesktop: {\n marginRight: 20,\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n },\n menuIcon: {\n marginRight: 20,\n },\n toolbar: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme.spacing(0, 2),\n ...theme.mixins.toolbar,\n },\n drawerPaper: {\n width: drawerWidthMobile,\n background: theme.palette.type === \"dark\"\n ? \"rgba(17, 24, 39, 0.95)\"\n : \"#fff\",\n border: \"none\",\n borderRight: \"1px solid \" + (theme.palette.type === \"dark\" \n ? \"rgba(255,255,255,0.1)\" \n : \"rgba(0,0,0,0.1)\"),\n },\n drawerPaperDesktop: {\n width: drawerWidth,\n background: theme.palette.type === \"dark\"\n ? \"rgba(17, 24, 39, 0.95)\"\n : \"#fff\",\n },\n upDrawer: {\n overflowX: \"hidden\",\n [theme.breakpoints.up(\"sm\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n justifyContent: \"space-between\",\n },\n },\n drawerOpen: {\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerClose: {\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: 0,\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n },\n grow: {\n flexGrow: 1,\n },\n badge: {\n top: 1,\n right: -15,\n },\n nested: {\n paddingLeft: theme.spacing(4),\n },\n sectionForFile: {\n display: \"flex\",\n },\n extendedIcon: {\n marginRight: theme.spacing(1),\n },\n addButton: {\n marginLeft: \"40px\",\n marginTop: \"25px\",\n marginBottom: \"15px\",\n },\n fabButton: {\n borderRadius: \"100px\",\n },\n badgeFix: {\n right: \"10px\",\n },\n iconFix: {\n marginLeft: \"16px\",\n },\n dividerFix: {\n marginTop: \"8px\",\n },\n folderShareIcon: {\n verticalAlign: \"sub\",\n marginRight: \"5px\",\n },\n shareInfoContainer: {\n display: \"flex\",\n marginTop: \"15px\",\n marginBottom: \"20px\",\n marginLeft: \"28px\",\n textDecoration: \"none\",\n },\n shareAvatar: {\n width: \"40px\",\n height: \"40px\",\n },\n stickFooter: {\n bottom: \"0px\",\n position: \"absolute\",\n backgroundColor: theme.palette.background.paper,\n width: \"100%\",\n },\n ownerInfo: {\n marginLeft: \"10px\",\n width: \"150px\",\n },\n minStickDrawer: {\n overflowY: \"auto\",\n },\n paddingList:{\n padding:theme.spacing(1),\n },\n drawerContainer: {\n padding: theme.spacing(2),\n background: theme.palette.type === \"dark\"\n ? \"rgba(17, 24, 39, 0.95)\"\n : \"#fff\",\n },\n listItem: {\n borderRadius: theme.shape.borderRadius,\n margin: \"4px 8px\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.05)\"\n : \"rgba(0,0,0,0.05)\",\n },\n },\n listItemActive: {\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(51, 65, 85, 0.9)\"\n : \"rgba(255, 255, 255, 0.15)\",\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 4px 12px rgba(0, 0, 0, 0.2)\"\n : \"0 4px 12px rgba(148, 163, 184, 0.1)\",\n },\n listItemIcon: {\n minWidth: 40,\n color: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.7)\"\n : theme.palette.primary.main,\n },\n listItemText: {\n \"& span\": {\n fontSize: \"0.95rem\",\n fontWeight: 500,\n color: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.9)\"\n : \"rgba(0,0,0,0.87)\",\n },\n },\n divider: {\n margin: theme.spacing(2, 0),\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.1)\"\n : \"rgba(0,0,0,0.1)\",\n },\n searchBar: {\n position: \"relative\",\n borderRadius: theme.shape.borderRadius,\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.05)\"\n : \"rgba(0,0,0,0.05)\",\n marginRight: theme.spacing(2),\n marginLeft: theme.spacing(2),\n width: \"auto\",\n padding: theme.spacing(1),\n },\n searchIcon: {\n padding: theme.spacing(0, 2),\n height: \"100%\",\n position: \"absolute\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.text.secondary,\n },\n inputRoot: {\n color: \"inherit\",\n width: \"100%\",\n },\n inputInput: {\n padding: theme.spacing(1, 1, 1, 0),\n paddingLeft: `calc(1em + ${theme.spacing(4)}px)`,\n width: \"100%\",\n },\n avatar: {\n width: 32,\n height: 32,\n marginLeft: theme.spacing(2),\n background: theme.palette.type === \"dark\"\n ? \"linear-gradient(45deg, rgba(55, 48, 163, 0.9), rgba(79, 70, 229, 0.9))\"\n : \"linear-gradient(45deg, rgba(79, 70, 229, 0.9), rgba(129, 140, 248, 0.9))\",\n boxShadow: \"0 2px 10px \" + (theme.palette.type === \"dark\" \n ? \"rgba(0,0,0,0.3)\"\n : \"rgba(79, 70, 229, 0.3)\"),\n },\n iconButton: {\n color: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.9)\"\n : \"rgba(0,0,0,0.87)\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.05)\"\n : \"rgba(0,0,0,0.05)\",\n },\n },\n title: {\n color: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.9)\"\n : \"rgba(0,0,0,0.87)\",\n fontSize: \"1.25rem\",\n fontWeight: 600,\n },\n socialButton: {\n marginLeft: theme.spacing(1),\n color: theme.palette.type === \"dark\" ? \"rgba(255,255,255,0.9)\" : \"rgba(0,0,0,0.87)\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\" ? \"rgba(255,255,255,0.05)\" : \"rgba(0,0,0,0.05)\",\n },\n },\n});\nclass NavbarCompoment extends Component {\n constructor(props) {\n super(props);\n this.state = {\n mobileOpen: false,\n avatarOpen: false,\n anchorEl: null,\n shareDialogOpen: false,\n openWechat: false,\n openQQ: false,\n };\n this.UploaderRef = React.createRef();\n }\n\n UNSAFE_componentWillMount() {\n this.unlisten = this.props.history.listen(() => {\n this.setState(() => ({ mobileOpen: false }));\n });\n }\n componentWillUnmount() {\n this.unlisten();\n }\n\n componentDidMount = () => {\n changeThemeColor(\n this.props.selected.length <= 1 &&\n !(!this.props.isMultiple && this.props.withFile)\n ? this.props.theme.palette.primary.main\n : this.props.theme.palette.background.default\n );\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (\n (this.props.selected.length === 0) !==\n (nextProps.selected.length === 0)\n ) {\n changeThemeColor(\n !(this.props.selected.length === 0)\n ? this.props.theme.palette.type === \"dark\"\n ? this.props.theme.palette.background.default\n : this.props.theme.palette.primary.main\n : this.props.theme.palette.background.default\n );\n }\n };\n\n handleDrawerToggle = () => {\n this.setState((state) => ({ mobileOpen: !state.mobileOpen }));\n };\n\n openDownload = () => {\n this.props.startDownload(this.props.shareInfo, this.props.selected[0]);\n };\n\n openDirectoryDownload = (e) => {\n this.props.startDirectoryDownload(this.props.shareInfo);\n };\n\n archiveDownload = (e) => {\n this.props.startBatchDownload(this.props.shareInfo);\n };\n\n signOut = () => {\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 .finally(() => {\n this.handleClose();\n });\n };\n\n handleWechatOpen = () => {\n this.setState({ openWechat: true });\n };\n\n handleWechatClose = () => {\n this.setState({ openWechat: false });\n };\n\n handleQQOpen = () => {\n this.setState({ openQQ: true });\n };\n\n handleQQClose = () => {\n this.setState({ openQQ: false });\n };\n\n render() {\n const { classes, t } = this.props;\n const user = Auth.GetUser(this.props.isLogin);\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const isSharePage = pathHelper.isSharePage(\n this.props.location.pathname\n );\n\n const drawer = (\n
\n \n this.props.history.push(\"/home\")}>\n \n \n \n \n \n \n this.props.history.push(\"/shares\")}>\n \n \n \n \n \n\n {user.group.allowRemoteDownload && (\n this.props.history.push(\"/aria2\")}>\n \n \n \n \n \n )}\n\n this.props.history.push(\"/quota\")}>\n \n \n \n \n \n\n this.props.history.push(\"/connect\")}>\n \n \n \n \n \n\n this.props.history.push(\"/tasks\")}>\n \n \n \n \n \n \n\n \n \n this.props.history.push(\"/setting\")}>\n \n \n \n \n \n\n \n \n \n \n \n \n \n\n
\n {this.props.isLogin && }\n
\n
\n );\n const iOS =\n process.browser && /iPad|iPhone|iPod/.test(navigator.userAgent);\n return (\n
\n \n \n {this.props.selected.length === 0 && (\n {\n if (pathHelper.isMobile()) {\n this.handleDrawerToggle();\n } else {\n this.props.handleDesktopToggle(!this.props.desktopOpen);\n }\n }}\n className={classes.menuButton}\n >\n \n \n )}\n {this.props.selected.length > 0 &&\n (isHomePage ||\n pathHelper.isSharePage(\n this.props.location.pathname\n )) && (\n 0}>\n \n this.props.setSelectedTarget([])\n }\n >\n \n \n \n )}\n {this.props.selected.length === 0 && (\n {\n this.props.history.push(\"/\");\n }}\n >\n {this.props.subTitle\n ? this.props.subTitle\n : this.props.title}\n \n )}\n\n {!this.props.isMultiple &&\n (this.props.withFile || this.props.withFolder) &&\n !pathHelper.isMobile() && (\n \n {this.props.selected[0].name}{\" \"}\n {this.props.withFile &&\n (isHomePage ||\n pathHelper.isSharePage(\n this.props.location.pathname\n )) &&\n \"(\" +\n sizeToString(\n this.props.selected[0].size\n ) +\n \")\"}\n \n )}\n\n {this.props.selected.length > 1 &&\n !pathHelper.isMobile() && (\n \n {t(\"navbar.objectsSelected\", {\n num: this.props.selected.length,\n })}\n \n )}\n {this.props.selected.length === 0 && }\n
\n {this.props.selected.length > 0 &&\n (isHomePage || isSharePage) && (\n
\n {!this.props.isMultiple &&\n this.props.withFile &&\n isPreviewable(\n this.props.selected[0].name\n ) && (\n \n \n \n this.props.openPreview(\n this.props\n .shareInfo\n )\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple &&\n this.props.withFile && (\n \n \n \n this.openDownload()\n }\n >\n \n \n \n \n )}\n {(this.props.isMultiple ||\n this.props.withFolder) &&\n window.showDirectoryPicker &&\n window.isSecureContext && (\n \n \n \n this.openDirectoryDownload()\n }\n >\n \n \n \n \n )}\n {(this.props.isMultiple ||\n this.props.withFolder) && (\n \n \n \n this.archiveDownload()\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple &&\n !pathHelper.isMobile() &&\n !isSharePage && (\n \n \n \n this.props.openShareDialog()\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple && !isSharePage && (\n \n \n \n this.props.openRenameDialog()\n }\n >\n \n \n \n \n )}\n {!isSharePage && (\n
\n {!pathHelper.isMobile() && (\n \n \n \n this.props.openMoveDialog()\n }\n >\n \n \n \n \n )}\n\n \n \n \n this.props.openRemoveDialog()\n }\n >\n \n \n \n \n\n {pathHelper.isMobile() && (\n \n \n \n this.props.changeContextMenu(\n \"file\",\n true\n )\n }\n >\n \n \n \n \n )}\n
\n )}\n
\n )}\n {this.props.selected.length <= 1 &&\n !(!this.props.isMultiple && this.props.withFile) &&\n this.props.audioPreviewPlayingName != null && (\n \n \n \n )}\n\n {this.props.selected.length === 0 && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {this.props.selected.length === 0 &&\n pathHelper.isMobile() && (\n <>\n {isHomePage && }\n {(isHomePage || this.props.shareInfo) && (\n \n )}\n \n )}\n \n \n \n\n \n \n this.setState(() => ({ mobileOpen: true }))\n }\n disableDiscovery={iOS}\n ModalProps={{\n keepMounted: true, // Better open performance on mobile.\n }}\n >\n {drawer}\n \n \n \n \n
\n {drawer}\n \n \n\n {/* Add QR Code Dialog for WeChat */}\n \n \n 扫码关注公众号\n \n \n
\n \"微信公众号二维码\"\n\n \n 扫描上方二维码,关注我们的公众号\n \n
\n
\n \n\n {/* Add QQ Group Dialog */}\n \n \n 加入QQ群\n \n \n
\n \n QQ群号:763055771\n \n }\n >\n 点击加入QQ群\n \n
\n
\n \n
\n );\n }\n}\nNavbarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n};\n\nconst Navbar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(\n withTheme(\n withStyles(styles)(withRouter(withTranslation()(NavbarCompoment)))\n )\n);\n\nexport default Navbar;\n\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 container: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: theme.palette.type === \"dark\" \n ? \"rgba(0, 0, 0, 0.2)\" \n : \"rgba(255, 255, 255, 0.9)\",\n backdropFilter: \"blur(8px)\",\n padding: theme.spacing(2),\n transition: \"all 0.3s ease\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\" \n ? \"rgba(0, 0, 0, 0.3)\" \n : \"rgba(255, 255, 255, 0.95)\",\n transform: \"translateY(-2px)\",\n },\n },\n storageContainer: {\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(2),\n cursor: \"pointer\",\n padding: theme.spacing(1),\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.2s ease\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\" \n ? \"rgba(255, 255, 255, 0.05)\" \n : \"rgba(0, 0, 0, 0.02)\",\n },\n },\n storageIcon: {\n color: theme.palette.primary.main,\n fontSize: \"1.5rem\",\n },\n detail: {\n flex: 1,\n minWidth: 0,\n },\n storageTitle: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: theme.spacing(1),\n },\n titleText: {\n fontSize: \"0.875rem\",\n fontWeight: 500,\n color: theme.palette.text.primary,\n },\n upgradeLink: {\n fontSize: \"0.75rem\",\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n opacity: 0,\n transform: \"translateX(-10px)\",\n transition: \"all 0.3s ease\",\n \"&:hover\": {\n textDecoration: \"none\",\n color: theme.palette.primary.dark,\n },\n },\n showUpgrade: {\n opacity: 1,\n transform: \"translateX(0)\",\n },\n progressContainer: {\n position: \"relative\",\n height: 6,\n backgroundColor: theme.palette.type === \"dark\" \n ? \"rgba(255, 255, 255, 0.1)\" \n : \"rgba(0, 0, 0, 0.05)\",\n borderRadius: 3,\n overflow: \"hidden\",\n },\n progressBar: {\n position: \"absolute\",\n top: 0,\n left: 0,\n height: \"100%\",\n backgroundColor: theme.palette.primary.main,\n borderRadius: 3,\n transition: \"width 0.6s cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n storageInfo: {\n marginTop: theme.spacing(0.5),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: theme.spacing(2),\n },\n storageText: {\n fontSize: \"0.75rem\",\n color: theme.palette.text.secondary,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(1),\n },\n percentageText: {\n fontSize: \"0.75rem\",\n fontWeight: 500,\n color: theme.palette.primary.main,\n backgroundColor: theme.palette.type === \"dark\" \n ? \"rgba(255, 255, 255, 0.05)\" \n : \"rgba(0, 0, 0, 0.03)\",\n padding: theme.spacing(0.5, 1),\n borderRadius: theme.shape.borderRadius,\n minWidth: 45,\n textAlign: \"center\",\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 const { percent, used, total, showExpand } = this.state;\n\n return (\n
\n this.props.history.push(\"/quota\")}>\n \n
\n
\n \n {t(\"navbar.storage\")}\n \n this.setState({ showExpand: true })}\n onMouseLeave={() => this.setState({ showExpand: false })}\n >\n {t(\"vas.extendStorage\")}\n \n
\n \n
\n
\n
\n \n
\n \n {used === null ? \" -- \" : used}\n {\" / \"}\n {total === null ? \" -- \" : total}\n \n \n {Math.round(percent)}%\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 { 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: [\n \"bmp\",\n \"iff\",\n \"png\",\n \"gif\",\n \"jpg\",\n \"jpeg\",\n \"psd\",\n \"svg\",\n \"webp\",\n \"heif\",\n \"heic\",\n \"tiff\",\n \"avif\",\n ],\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 mime_type?: string;\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 mime_type: this.task.file.type,\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","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","// 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 display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"300px\",\n margin: \"50px auto\",\n width: \"300px\",\n color: lighten(theme.palette.text.disabled, 0.4),\n textAlign: \"center\",\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.shadows[2],\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 Box,\n Container,\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 root: {\n minHeight: \"100vh\",\n display: \"flex\",\n alignItems: \"center\",\n background: theme.palette.type === \"dark\" \n ? theme.palette.background.default\n : \"#fff\",\n },\n paper: {\n padding: theme.spacing(6),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n background: theme.palette.type === \"dark\" \n ? theme.palette.background.paper\n : \"#fff\",\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 4px 12px rgba(0, 0, 0, 0.2)\"\n : \"0 4px 12px rgba(0, 0, 0, 0.05)\",\n },\n avatar: {\n margin: theme.spacing(1),\n width: 56,\n height: 56,\n backgroundColor: theme.palette.primary.main,\n },\n form: {\n width: \"100%\",\n marginTop: theme.spacing(3),\n },\n submit: {\n margin: theme.spacing(3, 0, 2),\n padding: theme.spacing(1.5),\n borderRadius: theme.shape.borderRadius,\n fontSize: \"1rem\",\n fontWeight: 600,\n textTransform: \"none\",\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n \"&:hover\": {\n backgroundColor: theme.palette.primary.dark,\n },\n },\n linkContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginTop: theme.spacing(2),\n padding: theme.spacing(0, 1),\n },\n link: {\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n fontWeight: 500,\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n title: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(4),\n color: theme.palette.text.primary,\n fontWeight: 600,\n },\n textField: {\n marginBottom: theme.spacing(2),\n \"& .MuiOutlinedInput-root\": {\n borderRadius: theme.shape.borderRadius,\n backgroundColor: theme.palette.type === \"dark\" \n ? theme.palette.background.paper\n : \"#fff\",\n \"& fieldset\": {\n borderColor: theme.palette.type === \"dark\" \n ? \"rgba(255, 255, 255, 0.1)\"\n : \"rgba(0, 0, 0, 0.1)\",\n },\n \"&:hover fieldset\": {\n borderColor: theme.palette.primary.main,\n },\n \"&.Mui-focused fieldset\": {\n borderColor: theme.palette.primary.main,\n },\n },\n },\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 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 \n \n {t(\"login.title\", { title })}\n \n {!twoFA && (\n <>\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 {!useAuthn && (\n \n setPwd(e.target.value)}\n InputProps={{\n startAdornment: !isMobile && (\n \n \n \n ),\n }}\n value={pwd}\n autoComplete\n />\n \n )}\n {loginCaptcha && !useAuthn && }\n {QQLogin && !useAuthn && (\n
\n \n {t(\"login.signIn\")}\n \n \n {t(\"vas.loginWithQQ\")}\n \n
\n )}\n {!QQLogin && (\n \n {useAuthn ? t(\"login.useFIDO2\") : t(\"login.signIn\")}\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 \n 忘记密码?\n \n \n {registerEnabled && (\n \n \n 还没有账号?{\" \"}\n \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}\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.thumb && !this.state.showPicIcon && (\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.thumb || this.state.showPicIcon) && (\n
\n \n
\n )}\n {(!this.props.file.thumb || this.state.showPicIcon) && (\n \n )}\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\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport GetAppIcon from \"@material-ui/icons/GetApp\";\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 FormControl,\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 { 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 layout: {\n width: \"auto\",\n marginTop: theme.spacing(4),\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n padding: theme.spacing(4),\n backgroundColor: theme.palette.type === \"dark\" \n ? theme.palette.background.default \n : \"#f9fafb\",\n borderRadius: theme.shape.borderRadius * 2,\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n minHeight: \"calc(100vh - 100px)\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: theme.spacing(4),\n padding: theme.spacing(3),\n background: theme.palette.type === \"dark\" \n ? \"rgba(30, 41, 59, 0.5)\"\n : \"rgba(255, 255, 255, 0.8)\",\n backdropFilter: \"blur(10px)\",\n borderRadius: theme.shape.borderRadius,\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 4px 6px -1px rgba(0, 0, 0, 0.3)\"\n : \"0 4px 6px -1px rgba(0, 0, 0, 0.1)\",\n [theme.breakpoints.down(\"sm\")]: {\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n gap: theme.spacing(2),\n padding: theme.spacing(2),\n },\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: \"2rem\",\n fontWeight: 700,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(2),\n \"& svg\": {\n fontSize: \"2rem\",\n color: theme.palette.primary.main,\n },\n },\n orderSelect: {\n minWidth: 220,\n \"& .MuiSelect-select\": {\n paddingTop: 12,\n paddingBottom: 12,\n paddingLeft: 16,\n paddingRight: 40,\n borderRadius: theme.shape.borderRadius,\n fontSize: \"0.95rem\",\n fontWeight: 500,\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.05)\"\n : \"rgba(0,0,0,0.03)\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.1)\"\n : \"rgba(0,0,0,0.05)\",\n },\n \"&:focus\": {\n borderRadius: theme.shape.borderRadius,\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.1)\"\n : \"rgba(0,0,0,0.05)\",\n },\n },\n },\n grid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(220px, 1fr))\",\n gap: theme.spacing(1.5),\n padding: theme.spacing(2),\n flex: 1,\n },\n card: {\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n transition: \"all 0.3s cubic-bezier(.25,.8,.25,1)\",\n borderRadius: theme.shape.borderRadius,\n backgroundColor: theme.palette.type === \"dark\" \n ? \"rgba(30, 41, 59, 0.7)\"\n : \"rgba(255, 255, 255, 0.9)\",\n backdropFilter: \"blur(10px)\",\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 2px 4px rgba(0, 0, 0, 0.2)\"\n : \"0 2px 4px rgba(0, 0, 0, 0.05)\",\n \"&:hover\": {\n transform: \"translateY(-2px)\",\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 4px 8px rgba(0, 0, 0, 0.3)\"\n : \"0 4px 8px rgba(0, 0, 0, 0.1)\",\n },\n },\n cardHeader: {\n padding: theme.spacing(1.5),\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(1),\n borderBottom: `1px solid ${theme.palette.type === \"dark\" \n ? \"rgba(255,255,255,0.1)\" \n : \"rgba(0,0,0,0.06)\"}`,\n },\n avatarContainer: {\n flexShrink: 0,\n position: \"relative\",\n \"&::after\": {\n content: '\"\"',\n position: \"absolute\",\n top: -2,\n left: -2,\n right: -2,\n bottom: -2,\n background: `linear-gradient(45deg, ${theme.palette.primary.main}, ${theme.palette.secondary.main})`,\n borderRadius: \"50%\",\n opacity: 0.3,\n filter: \"blur(4px)\",\n zIndex: -1,\n },\n },\n avatarFile: {\n width: 32,\n height: 32,\n backgroundColor: theme.palette.primary.main,\n boxShadow: `0 0 10px ${theme.palette.primary.main}40`,\n },\n avatarFolder: {\n width: 32,\n height: 32,\n backgroundColor: theme.palette.secondary.main,\n boxShadow: `0 0 10px ${theme.palette.secondary.main}40`,\n },\n contentContainer: {\n flex: 1,\n minWidth: 0,\n },\n fileName: {\n color: theme.palette.text.primary,\n fontSize: \"0.95rem\",\n fontWeight: 500,\n marginBottom: theme.spacing(0.5),\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n fileInfo: {\n color: theme.palette.text.secondary,\n fontSize: \"0.85rem\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(1),\n flexWrap: \"wrap\",\n },\n badge: {\n height: 22,\n borderRadius: 11,\n padding: \"0 10px\",\n backgroundColor: theme.palette.error.main + \"20\",\n color: theme.palette.error.main,\n fontSize: \"0.8rem\",\n fontWeight: 600,\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n },\n cardActions: {\n padding: theme.spacing(1),\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: theme.spacing(0.5),\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(17, 24, 39, 0.4)\"\n : \"rgba(0, 0, 0, 0.02)\",\n marginTop: \"auto\",\n },\n iconButton: {\n padding: 8,\n color: theme.palette.text.secondary,\n backgroundColor: \"transparent\",\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.2s ease\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.1)\"\n : \"rgba(0,0,0,0.05)\",\n color: theme.palette.primary.main,\n },\n },\n emptyState: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: theme.spacing(8),\n textAlign: \"center\",\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(30, 41, 59, 0.5)\"\n : \"rgba(255, 255, 255, 0.8)\",\n borderRadius: theme.shape.borderRadius,\n backdropFilter: \"blur(10px)\",\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 4px 6px -1px rgba(0, 0, 0, 0.2)\"\n : \"0 4px 6px -1px rgba(0, 0, 0, 0.1)\",\n },\n pagination: {\n marginTop: theme.spacing(4),\n padding: theme.spacing(2),\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(30, 41, 59, 0.5)\"\n : \"rgba(255, 255, 255, 0.8)\",\n borderRadius: theme.shape.borderRadius,\n backdropFilter: \"blur(10px)\",\n \"& .MuiPaginationItem-root\": {\n margin: \"0 4px\",\n borderRadius: theme.shape.borderRadius,\n fontWeight: 500,\n fontSize: \"0.95rem\",\n transition: \"all 0.2s ease\",\n \"&:hover\": {\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255,255,255,0.1)\"\n : \"rgba(0,0,0,0.05)\",\n },\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n \"&:hover\": {\n backgroundColor: theme.palette.primary.dark,\n },\n },\n },\n },\n dialog: {\n \"& .MuiDialog-paper\": {\n borderRadius: theme.shape.borderRadius * 1.5,\n padding: theme.spacing(2),\n },\n },\n dialogTitle: {\n fontSize: \"1.25rem\",\n fontWeight: 600,\n },\n dialogContent: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n dialogActions: {\n padding: theme.spacing(1.5),\n },\n fileStats: {\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(1),\n color: theme.palette.text.secondary,\n \"& span\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(0.5),\n \"& svg\": {\n fontSize: \"0.9rem\",\n opacity: 0.7,\n },\n },\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 {t(\"share.createdAtDesc\")}\n {t(\"share.createdAtAsc\")}\n {t(\"share.downloadsDesc\")}\n {t(\"share.downloadsAsc\")}\n {t(\"share.viewsDesc\")}\n {t(\"share.viewsAsc\")}\n \n \n
\n\n {this.state.shareList.length === 0 ? (\n
\n \n
\n ) : (\n
\n {this.state.shareList.map((value) => (\n \n
\n
\n {!value.is_dir ? (\n \n ) : (\n \n \n \n )}\n
\n
\n \n \n {value.source ? value.source.name : t(\"share.sourceNotFound\")}\n \n \n
\n {formatLocalTime(value.create_date)}\n {this.isExpired(value) && (\n \n \n {t(\"share.expired\")}\n \n )}\n
\n \n \n {value.views}\n \n \n \n {value.downloads}\n \n
\n
\n
\n
\n
\n \n this.props.history.push(\n \"/s/\" + value.key + (value.password === \"\" ? \"\" : \"?password=\" + value.password)\n )}\n size=\"small\"\n >\n \n \n \n {value.password !== \"\" && (\n <>\n \n this.changePermission(value.key)}\n size=\"small\"\n >\n \n \n \n \n this.showPwd(value.password)}\n size=\"small\"\n >\n \n \n \n \n )}\n {value.password === \"\" && (\n \n this.changePermission(value.key)}\n size=\"small\"\n >\n \n \n \n )}\n \n this.changePreviewOption(value.key)}\n size=\"small\"\n >\n }\n offIcon={}\n />\n \n \n \n this.removeShare(value.key)}\n size=\"small\"\n >\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}\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\";\nimport {\n Avatar,\n Button,\n Card,\n CardContent,\n Typography,\n withStyles,\n TextField,\n InputAdornment,\n IconButton,\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\";\nimport { Visibility, VisibilityOff, Lock } from \"@material-ui/icons\";\n\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n [theme.breakpoints.up(600 + theme.spacing(6) * 2)]: {\n width: 600,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n padding: theme.spacing(3),\n },\n card: {\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.palette.type === \"dark\" \n ? \"0 0 20px rgba(0, 0, 0, 0.3)\"\n : \"0 0 20px rgba(0, 0, 0, 0.05)\",\n borderRadius: theme.shape.borderRadius * 2,\n transition: \"transform 0.2s ease, box-shadow 0.2s ease\",\n overflow: \"hidden\",\n \"&:hover\": {\n transform: \"translateY(-5px)\",\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 5px 30px rgba(0, 0, 0, 0.4)\"\n : \"0 5px 30px rgba(0, 0, 0, 0.1)\",\n },\n },\n header: {\n padding: theme.spacing(4),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n textAlign: \"center\",\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(0, 0, 0, 0.1)\"\n : \"rgba(0, 0, 0, 0.02)\",\n },\n avatar: {\n width: 80,\n height: 80,\n marginBottom: theme.spacing(2),\n backgroundColor: theme.palette.primary.main,\n boxShadow: \"0 0 20px \" + theme.palette.primary.main + \"40\",\n },\n lockIcon: {\n fontSize: 32,\n color: theme.palette.common.white,\n },\n title: {\n marginBottom: theme.spacing(1),\n },\n subheader: {\n color: theme.palette.text.secondary,\n },\n form: {\n padding: theme.spacing(4),\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing(3),\n },\n textField: {\n \"& .MuiOutlinedInput-root\": {\n borderRadius: theme.shape.borderRadius,\n transition: theme.transitions.create([\"border-color\", \"box-shadow\"]),\n \"&:hover fieldset\": {\n borderColor: theme.palette.primary.main,\n },\n \"&.Mui-focused fieldset\": {\n borderColor: theme.palette.primary.main,\n boxShadow: `0 0 0 2px ${theme.palette.primary.main}20`,\n },\n },\n },\n submitButton: {\n padding: theme.spacing(1.5),\n fontSize: \"1rem\",\n fontWeight: 600,\n borderRadius: theme.shape.borderRadius,\n textTransform: \"none\",\n \"&:hover\": {\n transform: \"translateY(-1px)\",\n },\n transition: \"transform 0.2s ease\",\n },\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 showPassword: false,\n };\n }\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n togglePasswordVisibility = () => {\n this.setState((state) => ({ showPassword: !state.showPassword }));\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 \n \n \n {t(\"share.privateShareTitle\", {\n nick: this.props.share.creator.nick,\n })}\n \n \n {formatLocalTime(this.props.share.create_date)}\n \n
\n
\n \n \n {this.state.showPassword ? (\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 shareInfo: {\n color: theme.palette.text.disabled,\n fontSize: 14,\n marginTop: 12,\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 {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\";\nimport { connect } from \"react-redux\";\nimport { sizeToString, vhCheck } from \"../../utils\";\nimport { isPreviewable } from \"../../config\";\nimport { Button, Typography, withStyles } from \"@material-ui/core\";\nimport Divider from \"@material-ui/core/Divider\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport Auth from \"../../middleware/Auth\";\nimport PurchaseShareDialog from \"../Modals/PurchaseShare\";\nimport { withRouter } from \"react-router-dom\";\nimport Creator from \"./Creator\";\nimport pathHelper from \"../../utils/page\";\nimport Report from \"../Modals/Report\";\nimport {\n openMusicDialog,\n openResaveDialog,\n setSelectedTarget,\n showAudioPreview,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { startDownload } from \"../../redux/explorer/action\";\nimport { trySharePurchase } from \"../../redux/explorer/async\";\nimport { withTranslation } from \"react-i18next\";\nimport EyeIcon from \"@material-ui/icons/Visibility\";\nimport GetAppIcon from \"@material-ui/icons/GetApp\";\nimport SaveIcon from \"@material-ui/icons/Save\";\n\nvhCheck();\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(4),\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(800 + theme.spacing(6))]: {\n width: 800,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n padding: theme.spacing(2),\n [theme.breakpoints.up(\"sm\")]: {\n padding: theme.spacing(3),\n },\n },\n box: {\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.palette.type === \"dark\" \n ? \"0 0 20px rgba(0, 0, 0, 0.3)\"\n : \"0 0 20px rgba(0, 0, 0, 0.05)\",\n borderRadius: theme.shape.borderRadius * 2,\n transition: \"transform 0.2s ease, box-shadow 0.2s ease\",\n overflow: \"hidden\",\n \"&:hover\": {\n transform: \"translateY(-5px)\",\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 5px 30px rgba(0, 0, 0, 0.4)\"\n : \"0 5px 30px rgba(0, 0, 0, 0.1)\",\n },\n },\n boxContent: {\n padding: theme.spacing(4),\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(3),\n [theme.breakpoints.down(\"xs\")]: {\n flexDirection: \"column\",\n textAlign: \"center\",\n padding: theme.spacing(3),\n },\n },\n icon: {\n fontSize: 80,\n color: theme.palette.primary.main,\n [theme.breakpoints.down(\"xs\")]: {\n fontSize: 60,\n },\n },\n fileName: {\n flex: 1,\n minWidth: 0,\n },\n fileSize: {\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(1),\n },\n actions: {\n padding: theme.spacing(2, 4),\n display: \"flex\",\n gap: theme.spacing(2),\n justifyContent: \"flex-end\",\n backgroundColor: theme.palette.type === \"dark\" \n ? \"rgba(0, 0, 0, 0.1)\"\n : \"rgba(0, 0, 0, 0.02)\",\n [theme.breakpoints.down(\"xs\")]: {\n flexDirection: \"column\",\n padding: theme.spacing(2),\n },\n },\n downloadButton: {\n minWidth: 120,\n \"&:hover\": {\n transform: \"scale(1.02)\",\n },\n transition: \"transform 0.2s ease\",\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 openMusicDialog: (first) => {\n dispatch(showAudioPreview(first));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openResave: (key) => {\n dispatch(openResaveDialog(key));\n },\n startDownload: (share, file) => {\n dispatch(startDownload(share, file));\n },\n trySharePurchase: (share) => dispatch(trySharePurchase(share)),\n };\n};\n\nconst Modals = React.lazy(() => import(\"../FileManager/Modals\"));\nconst ImgPreview = React.lazy(() => import(\"../FileManager/ImgPreview\"));\n\nclass SharedFileCompoment extends Component {\n state = {\n anchorEl: null,\n open: false,\n purchaseCallback: null,\n loading: false,\n openReport: false,\n };\n\n downloaded = false;\n\n // TODO merge into react thunk\n preview = () => {\n if (pathHelper.isSharePage(this.props.location.pathname)) {\n const user = Auth.GetUser();\n if (!Auth.Check() && user && !user.group.shareDownload) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"share.pleaseLogin\"),\n \"warning\"\n );\n return;\n }\n }\n\n switch (isPreviewable(this.props.share.source.name)) {\n case \"img\":\n this.props.showImgPreivew({\n key: this.props.share.key,\n name: this.props.share.source.name,\n });\n return;\n case \"msDoc\":\n this.props.history.push(\n this.props.share.key +\n \"/doc?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"audio\":\n this.props.openMusicDialog({\n key: this.props.share.key,\n name: this.props.share.source.name,\n type: \"share\",\n });\n return;\n case \"video\":\n this.props.history.push(\n this.props.share.key +\n \"/video?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"edit\":\n this.props.history.push(\n this.props.share.key +\n \"/text?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"pdf\":\n this.props.history.push(\n this.props.share.key +\n \"/pdf?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"code\":\n this.props.history.push(\n this.props.share.key +\n \"/code?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"epub\":\n this.props.history.push(\n this.props.share.key +\n \"/epub?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n default:\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n this.props.t(\"share.cannotShare\"),\n \"warning\"\n );\n return;\n }\n };\n\n scoreHandler = (callback) => (event) => {\n this.props.trySharePurchase(this.props.share).then(() => callback());\n };\n\n componentWillUnmount() {\n this.props.setSelectedTarget([]);\n }\n\n download = () => {\n this.props.startDownload(this.props.share, null);\n };\n\n render() {\n const { classes, t } = this.props;\n const user = Auth.GetUser();\n const isLogin = Auth.Check();\n\n return (\n
\n \n \n \n this.setState({ openReport: false })}\n />\n
\n \n \n
\n \n
\n \n {this.props.share.creator.nick} 向您分享了此文件\n \n \n {this.props.share.source.name}\n \n \n {sizeToString(this.props.share.source.size)}\n \n
\n
\n \n
\n {this.props.share.preview && (\n }\n >\n {t(\"share.preview\")}\n \n )}\n this.props.openResave(this.props.share.key)}\n disabled={this.state.loading}\n startIcon={}\n className={classes.downloadButton}\n >\n 转存\n \n }\n >\n {t(\"fileManager.download\")}\n {this.props.share.score > 0 &&\n (!isLogin || !user.group.shareFree) &&\n t(\"vas.creditPrice\", {\n num: this.props.share.score,\n })}\n {this.props.share.score > 0 &&\n isLogin &&\n user.group.shareFree &&\n t(\"vas.creditFree\")}\n \n this.setState({ openReport: true })}\n disabled={this.state.loading}\n >\n 举报\n \n
\n
\n \n 文件由用户上传分享,本站仅提供网络存储空间服务,对相关文件概不负责。若本文件含有违法违规等不良信息,请及时联系我们处理。\n \n
\n );\n }\n}\n\nconst SharedFile = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(SharedFileCompoment))));\n\nexport default SharedFile;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Typography, withStyles } from \"@material-ui/core\";\nimport { withRouter } from \"react-router-dom\";\nimport FileManager from \"../FileManager/FileManager\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popover from \"@material-ui/core/Popover\";\nimport Creator from \"./Creator\";\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport pathHelper from \"../../utils/page\";\nimport { withTranslation } from \"react-i18next\";\nimport {\n openMusicDialog,\n openResaveDialog,\n setSelectedTarget,\n setShareUserPopover,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { setShareInfo } from \"../../redux/viewUpdate/action\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\n\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(4),\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(900 + theme.spacing(6))]: {\n width: 900,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: theme.spacing(2),\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing(3),\n },\n managerContainer: {\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.palette.type === \"dark\" \n ? \"0 0 20px rgba(0, 0, 0, 0.3)\"\n : \"0 0 20px rgba(0, 0, 0, 0.05)\",\n borderRadius: theme.shape.borderRadius * 2,\n transition: \"transform 0.2s ease, box-shadow 0.2s ease\",\n overflow: \"hidden\",\n \"&:hover\": {\n transform: \"translateY(-5px)\",\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 5px 30px rgba(0, 0, 0, 0.4)\"\n : \"0 5px 30px rgba(0, 0, 0, 0.1)\",\n },\n },\n header: {\n padding: theme.spacing(3),\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(0, 0, 0, 0.1)\"\n : \"rgba(0, 0, 0, 0.02)\",\n borderBottom: `1px solid ${theme.palette.divider}`,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(2),\n },\n headerIcon: {\n color: theme.palette.primary.main,\n backgroundColor: theme.palette.type === \"dark\"\n ? \"rgba(255, 255, 255, 0.05)\"\n : \"rgba(0, 0, 0, 0.03)\",\n padding: theme.spacing(1),\n borderRadius: theme.shape.borderRadius,\n },\n headerTitle: {\n flex: 1,\n \"& h6\": {\n fontWeight: 600,\n },\n },\n content: {\n padding: theme.spacing(3),\n },\n readme: {\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.palette.type === \"dark\" \n ? \"0 0 20px rgba(0, 0, 0, 0.3)\"\n : \"0 0 20px rgba(0, 0, 0, 0.05)\",\n borderRadius: theme.shape.borderRadius * 2,\n transition: \"transform 0.2s ease, box-shadow 0.2s ease\",\n overflow: \"hidden\",\n \"&:hover\": {\n transform: \"translateY(-5px)\",\n boxShadow: theme.palette.type === \"dark\"\n ? \"0 5px 30px rgba(0, 0, 0, 0.4)\"\n : \"0 5px 30px rgba(0, 0, 0, 0.1)\",\n },\n },\n});\n\nconst ReadMe = React.lazy(() => import(\"./ReadMe\"));\n\nconst mapStateToProps = (state) => {\n return {\n anchorEl: state.viewUpdate.shareUserPopoverAnchorEl,\n fileList: state.explorer.fileList,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openResave: (key) => {\n dispatch(openResaveDialog(key));\n },\n setShareUserPopover: (e) => {\n dispatch(setShareUserPopover(e));\n },\n setShareInfo: (s) => {\n dispatch(setShareInfo(s));\n },\n };\n};\n\nclass SharedFolderComponent extends Component {\n state = {};\n\n UNSAFE_componentWillMount() {\n this.props.setShareInfo(this.props.share);\n }\n\n componentWillUnmount() {\n this.props.setShareInfo(null);\n this.props.setSelectedTarget([]);\n }\n\n handleClickAway = (e) => {\n const ignore = e && e.clientY && e.clientY <= 64;\n if (!pathHelper.isMobile() && !ignore) {\n this.props.setSelectedTarget([]);\n }\n };\n\n render() {\n const { classes, t } = this.props;\n let readmeShowed = false;\n const id = this.props.anchorEl !== null ? \"simple-popover\" : undefined;\n\n return (\n
\n \n \n
\n \n
\n \n {this.props.share.source.name}\n \n \n {this.props.share.creator.nick} 向您分享了此文件夹\n \n
\n
\n
\n \n
\n
\n
\n {this.props.fileList.map((value) => {\n if (\n (value.name.toLowerCase() === \"readme.md\" ||\n value.name.toLowerCase() === \"readme.txt\") &&\n !readmeShowed\n ) {\n readmeShowed = true;\n return (\n
\n \n
\n );\n }\n return null;\n })}\n this.props.setShareUserPopover(null)}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n \n this.props.setShareUserPopover(null)}\n share={this.props.share}\n />\n \n \n \n 文件由用户上传分享,本站仅提供网络存储空间服务,对相关文件概不负责。若本文件含有违法违规等不良信息,请及时联系我们处理。\n \n
\n );\n }\n}\n\nconst SharedFolder = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(withTranslation()(SharedFolderComponent))));\n\nexport default SharedFolder;\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