{"version":3,"sources":["hooks/fileSubtitle.js","component/Placeholder/TextLoading.js","middleware/Api.ts","component/Dial/AutoHidden.js","redux/explorer/reducer.ts","utils/page.ts","services/navigate.ts","services/file.ts","component/Navbar/DarkModeSwitcher.js","component/FileManager/Navigator/SubActions.js","redux/explorer/async.ts","redux/explorer/index.ts","middleware/Auth.ts","component/Uploader/core/utils/pool.ts","component/Uploader/core/utils/validator.ts","component/Uploader/core/utils/request.ts","utils/index.js","component/Navbar/StorageBar.js","component/Navbar/UserAvatarPopover.js","component/Navbar/UserInfo.js","component/Navbar/FileTags.js","component/Modals/OptionSelector.js","component/Dial/Save.js","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","component/Modals/Loading.js","component/Modals/Copy.js","component/Modals/CreateShare.js","component/Modals/Decompress.js","component/Modals/Compress.js","component/FileManager/Modals.js","component/Navbar/UserAvatar.js","component/Navbar/SearchBar.js","component/Viewer/Text.js","component/Viewer/Code.js","i18n.ts","component/Uploader/core/errors/index.ts","component/Common/Snackbar.js","component/Navbar/Navbar.js","component/Uploader/core/utils/helper.ts","component/Uploader/core/utils/index.ts","utils/zip.js","utils/api.ts","redux/explorer/action.ts","component/Navbar/NavbarDownload.js","component/Navbar/UserAvatarDownload.js","component/FileManager/ImgPreview.js","config.ts","redux/viewUpdate/action.ts","utils/datetime.js","component/FileManager/TypeIcon.js","serviceWorker.js","middleware/AuthRoute.js","middleware/NoAuthRoute.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/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/ContextMenu.js","component/FileManager/TableRow.js","component/FileManager/DnD/DropWarpper.js","component/FileManager/DnD/Scrolling.js","component/FileManager/ObjectIcon.js","component/FileManager/Explorer.js","hooks/pagination.js","component/FileManager/Navigator/PathButton.js","component/FileManager/Navigator/DropDownItem.js","component/FileManager/Navigator/DropDown.js","component/FileManager/Navigator/Navigator.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/Placeholder/PageLoading.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/Modals/CreateWebDAVAccount.js","component/Setting/WebDAV.js","component/Setting/Tasks.js","component/Setting/Profile.js","component/Setting/Authn.js","component/Modals/TimeZone.js","component/Setting/UserSetting.js","component/Login/Register.js","component/Login/Activication.js","component/Login/ResetForm.js","component/Login/Reset.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","useStyles","makeStyles","theme","loader","width","padding","breakpoints","down","MyLoader","props","backgroundColor","dark","foregroundColor","className","TextLoading","useTheme","classes","palette","type","baseURL","getBaseURL","getPreviewURL","isShare","shareID","fileID","encodeURIComponent","instance","axios","create","withCredentials","AppError","message","code","error","i18next","exists","ns","t","stack","Error","interceptors","response","use","rawData","data","undefined","Auth","signout","window","href","msg","Promise","reject","AutoHidden","children","enable","hide","element","hidden","setHidden","prev","scrollY","lastUpdate","addEventListener","e","currentTarget","current","scrollTop","handleNavigation","in","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","includes","search","keywords","searchPath","open","currentPolicy","policy","statusHelper","isHomePage","startsWith","isAdminPage","isLoginPage","isMobile","innerWidth","share","a","apiURL","key","API","getDownloadURL","reqURL","downloadPath","put","icon","color","opacity","DarkModeSwitcher","position","useTranslation","ThemeType","useSelector","siteConfig","ToggleThemeMode","toggleDaylightMode","isDayLight","isDark","placement","classNames","onClick","SetPreference","sideButton","marginRight","sortOptions","paginationOption","SubActions","isSmall","inherit","keyPrefix","viewMethod","viewUpdate","explorerViewMethod","shareInfo","pageSize","pagination","OpenLoadingDialog","method","changeViewMethod","ChangeSortMethod","changeSortMethod","SetShareUserPopover","setShareUserPopover","ChangePageSize","changePageSize","anchorSort","setAnchorSort","anchorPagination","setAnchorPagination","selectedIndex","setSelectedIndex","handlePaginationChange","s","toggleViewMethod","newMethod","fontSize","anchorEl","Boolean","onClose","map","option","toString","parseInt","event","0","1","2","3","4","5","6","7","handleMenuItemClick","nick","creator","style","height","src","askForOption","options","getState","resolve","dialog","setOptionModal","callback","actions","reducers","setNavigator","navigatorLoading","navigateTo","navigator","setPagination","page","navigateUp","pathSplit","pop","newPath","join","drawerToggleAction","dragAndDrop","changeContextMenu","menuType","setNavigatorLoadingStatus","status","setNavigatorError","openCreateFolderDialog","openCreateFileDialog","setUserPopover","anchor","openRenameDialog","openResaveDialog","openMoveDialog","openRemoveDialog","openShareDialog","applyThemes","setSessionStatus","openMusicDialog","openRemoteDownloadDialog","openTorrentDownloadDialog","openDecompressDialog","openCompressDialog","openGetSourceDialog","openCopyDialog","openLoadingDialog","text","closeAllModals","toggleSnackbar","vertical","horizontal","setModalsLoading","refreshFileList","searchMyFile","showImgPreivew","showAudioPreview","audioPreviewSetIsOpen","audioPreviewSetPlaying","refreshStorage","saveFile","setSiteConfig","config","isAuthenticated","authenticate","cb","SetUser","GetUser","JSON","parse","localStorage","getItem","newUser","setItem","stringify","Check","anonymous","oldUser","preference","GetPreference","GetPreferenceWithDefault","defaultVal","Pool","limit","queue","processing","uploader","push","check","item","this","v","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","sizeToString","bytes","i","floor","log","pow","toFixed","fixUrlHash","setGetParameter","paramName","paramValue","indexOf","prefix","substring","suffix","history","pushState","changeThemeColor","document","querySelector","setAttribute","bufferDecode","Uint8Array","from","atob","charCodeAt","bufferEncode","btoa","String","fromCharCode","apply","replace","pathBack","folders","substr","filePath","hex2bin","hex","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","documentElement","setProperty","StorageBarCompoment","percent","used","total","showExpand","firstLoad","componentDidMount","isLogin","updateStatus","UNSAFE_componentWillReceiveProps","nextProps","refresh","setState","onMouseEnter","onMouseLeave","stickFooter","storageContainer","iconFix","detail","variant","bar","info","noWrap","Component","StorageBar","connect","storageRefresh","withStyles","marginLeft","secondary","marginTop","textFix","display","textAlign","marginBottom","overflow","textOverflow","background","paper","withRouter","withTranslation","UserAvatarPopoverCompoment","handleClose","openURL","sigOut","delete","reload","user","anchorOrigin","transformOrigin","visitorMenu","registerEnabled","header","largeAvatarContainer","largeAvatar","nickname","user_name","badge","group","label","UserAvatarPopover","userPopoverAnchorEl","avatar","UserInfoCompoment","showUserInfo","userNav","flexAvatar","avatarImg","storageCircle","nickName","component","groupName","UserInfo","primary","main","backgroundImage","light","backgroundSize","border","borderRadius","boxShadow","justifyContent","alignItems","ExpansionPanel","root","maxWidth","borderBottom","margin","expanded","MuiExpansionPanel","ExpansionPanelSummary","minHeight","content","MuiExpansionPanelSummary","ExpansionPanelDetails","spacing","MuiExpansionPanelDetails","expand","transition","transform","hiddenButton","subMenu","overFlow","whiteSpace","icons","Circle","CircleOutline","Heart","HeartOutline","Hexagon","HexagonOutline","Hexagram","HexagramOutline","Rhombus","RhombusOutline","Square","SquareOutline","Triangle","TriangleOutline","FolderHeartOutline","AddTag","React","lazy","FileTag","useLocation","useHistory","tagOpen","setTagOpen","addTagModal","setAddTagModal","tagHover","setTagHover","tags","setTags","SearchMyFile","k","p","NavigateTo","ToggleSnackbar","fallback","onSuccess","tag","newTags","square","onChange","aria-controls","button","iconVideo","iconImg","iconAudio","iconDoc","expression","IconComponent","getIcon","edge","aria-label","minWidth","OptionSelector","modals","aria-labelledby","dividers","o","description","fab","top","right","bottom","left","zIndex","fabProgress","green","wrapper","buttonSuccess","SaveButton","buttonClassname","clsx","disabled","PolicyType","TaskType","Status","Logger","level","allowLevel","args","console","getPrintPrefix","warn","createUploadSession","req","cancel","cancelToken","res","CreateUploadSessionError","DeleteUploadSessionError","localUploadChunk","sessionID","chunk","onProgress","headers","onUploadProgress","progressEvent","loaded","LocalChunkUploadError","slaveUploadChunk","credential","Authorization","SlaveChunkUploadError","oneDriveUploadChunk","range","OneDriveChunkError","finishOneDriveUpload","OneDriveFinishUploadError","s3LikeUploadChunk","responseType","S3LikeChunkError","etag","s3LikeFinishUpload","isOss","chunks","body","part","PartNumber","ETag","OBJtoXML","validateStatus","S3LikeFinishUploadError","qiniuDriveUploadChunk","upToken","authorization","QiniuChunkError","qiniuFinishUpload","parts","partNumber","QiniuFinishUploadError","cosFormUploadChunk","keyTime","ak","bodyFormData","FormData","append","COSUploadError","cosUploadCallback","COSUploadCallbackError","upyunFormUploadChunk","UpyunUploadError","s3LikeUploadCallback","S3LikeUploadCallbackError","resumePolicy","local","remote","qiniu","oss","onedrive","s3","Base","manager","child","added","logger","subscriber","progress","lastTime","Date","now","startTime","subscribe","handlers","start","transit","initialized","setError","queued","pool","enqueue","preparing","cachedInfo","utils","policy_id","last_modified","lastModified","token","session","resumed","chunkProgress","upload","afterUpload","finished","cancelUploadSession","canceled","reset","setTimeout","deleteUploadSession","finally","onTransition","newStatus","onError","onMsg","UploaderError","Retryable","fromCache","SelectType","Chunk","initBeforeUploadChunks","updateLocalCache","uploadChunk","chunkSize","notifyResumeProgress","getProgressInfoItem","Local","chunkInfo","updateChunkProgress","Remote","uploadURLs","OneDrive","OneDriveEmptyFileSelected","rangeEnd","sendRange","innererror","alignChunkOffset","end","chunkOffset","rangeStatus","expectedStart","nextExpectedRanges","newChunkOffset","finishing","OSS","completeURL","Qiniu","chunkRes","COS","Upyun","ResumeHint","resumable","UploadManager","fileInput","directoryInput","currentPath","changeConcurrentLimit","newLimit","select","File","UploaderErrorName","NoPolicySelected","onchange","ev","fileSelectCallback","click","resumeTasks","tasks","listResumeCtx","dispatchUploader","resumeHint","cleanupSessions","cleanupResumeCtx","files","Event","Array","getDirectoryUploadDst","onFileDroppedIn","dataTransfer","types","onDropLeave","getAllFileEntries","items","uploaders","onDropFileAdded","logLevel","concurrentLimit","getFileInput","dropZone","isFileDrop","preventDefault","onDropOver","cos","upyun","S3","UnknownPolicyError","acceptVal","removeAttribute","UploadButton","setOpen","setQueued","OpenNewFolderDialog","OpenNewFileDialog","Queued","uploadClicked","openFileList","selectFile","circularProgress","useMemo","totalSize","CircularProgress","processedSize","taskListOpen","Badge","badgeContent","invisible","Backdrop","SpeedDial","tooltipTitle","SpeedDialIcon","openIcon","FabProps","onOpen","ariaLabel","SpeedDialAction","tooltipOpen","Directory","infoTitle","fontWeight","infoValue","wordBreak","TaskDetail","navigateToDst","Link","Trans","i18nKey","components","datetime","expires","locale","Grid","container","xs","progressContent","progressContainer","listAction","successStatus","success","errorStatus","warning","up","disabledBadge","dstLink","fileNameContainer","paddingLeft","paddingRight","paddingTop","paddingBottom","default","getSpeedText","speed","speedAvg","useSpeedAvg","displayedSpeed","getErrMsg","errMsg","Message","UploadTask","useAvgSpeed","onCancel","onRefresh","taskHover","setTaskHover","setExpanded","startLoadedRef","useRef","setStatus","setProgress","duration","durationTotal","resAvg","retry","useUpload","fullScreen","useMediaQuery","loading","setLoading","statusText","parent","uploaded","percentage","Tooltip","resumeLabel","Chip","continueLabel","progressBar","lighten","darken","taskDetail","u","stopRipple","stopPropagation","secondaryAction","show","Grow","IconButton","onMouseDown","onTouchStart","fileIcon","TypeIcon","fileName","isUpload","newExpanded","onMouseOver","ListItem","ListItemText","Divider","ConcurrentOptionDialog","onSave","count","setCount","Dialog","fullWidth","DialogTitle","DialogContent","FormControl","InputLabel","htmlFor","Input","inputProps","min","step","DialogActions","Button","MoreActions","uploadManager","deleteTask","setUseAvgSpeed","setFilter","sorter","setSorter","cleanFinished","concurrentDialog","setConcurrentDialog","RefreshStorage","listItems","tooltip","Icon","divider","ClearAll","Menu","enterNextDelay","MenuItem","dense","next","ListItemIcon","val","Transition","forwardRef","ref","Slide","direction","rootOverwrite","appBar","flex","popup","inset","paddingZero","dialogContent","maxHeight","virtualList","expandIcon","transitions","shortest","expandIconExpanded","toolbar","sorters","b","reverse","filters","ongoing","TaskList","taskList","setUploaders","setAnchorEl","refreshList","setRefreshList","close","reason","Fade","currentList","sort","Nothing","increaseViewportBy","itemContent","r","classnames","TransitionComponent","disableEnforceFocus","hideBackdrop","disableBackdropClick","disableScrollLock","Accordion","isExpanded","AppBar","Toolbar","disableGutters","Typography","MoreHoriz","AccordionDetails","createStyles","backdrop","drawer","flexDirection","DropFileBackground","totalProgressCollector","lastProgressStart","Uploader","setTaskListOpen","dropBgOpen","setDropBgOpen","processed","totalProgress","setTotalProgress","fileSelectCounter","openFileSelector","folderSelectCounter","openFolderSelector","RefreshFileList","enableUploader","taskAdded","original","onToast","setPolicy","unfinished","setInterval","blue","loadingContainer","LoadingDialog","loadingText","DialogContentText","contentFix","buttonProgress","CopyDialog","selectedPath","setSelectedPath","selectedPathName","setSelectedPathName","SetModalsLoading","PathSelector","presentPath","onSelect","folder","values","dirs","post","src_dir","modalsLoading","widthAnimation","shareUrl","flexCenter","noFlex","scoreCalc","CreatShare","lastSubmit","shareURL","setShareURL","password","downloads","showPassword","setValues","expire","preview","shareOption","setShareOption","handleChange","prop","handleExpand","panel","handleCheck","List","ListItemSecondaryAction","Checkbox","checked","OutlinedInput","endAdornment","InputAdornment","on","onIcon","Visibility","offIcon","VisibilityOff","labelWidth","Select","labelId","num","TextField","onFocus","autoFocus","readonly","link","clipboard","writeText","submitFormBody","is_dir","DecompressDialog","SubmitDecompressTask","submitDecompressTask","CompressDialog","setFileName","SubmitCompressTask","submitCompressTask","ModalsCompoment","newFolderName","newFileName","newName","secretShare","sharePwd","downloadURL","remoteDownloadPathSelect","purchaseCallback","handleInputChange","newNameSuffix","dndSignale","modalsStatus","rename","dragMove","scoreHandler","Download","downloaded","submitRemove","submitMove","patch","DragSelectedPath","doMove","submitRename","new_name","submitCreateNewFolder","submitCreateNewFile","submitTorrentDownload","submitDownload","failed","details","setMoveTarget","remoteDownloadNext","copySource","getSource","multiline","createNewFolder","onSubmit","createNewFile","copy","move","remove","remoteDownload","placeholder","torrentDownload","decompress","compress","Modals","UserAvatarCompoment","returnHome","loginCheck","mobileHidden","UserAvatar","configure","ignoreTags","keyMap","SEARCH","SearchBarCompoment","searchShare","blur","input","cancelSuggest","searchIcon","inputRoot","inputInput","onBlur","suggestBox","TransitionProps","timeout","SearchBar","shape","fade","common","white","pointerEvents","layout","player","overflowX","TextViewer","setContent","useRouteMatch","$vm","createRef","URLSearchParams","useParams","requestURL","textdata","Buffer","toBase64","reader","FileReader","readAsDataURL","onload","onerror","save","addImg","$file","$img2Url","elevation","language","h1","h2","h3","h4","img","undo","redo","subfield","MonacoEditor","editor","formControl","toobar","CodeViewer","setSuffix","wordWrap","setWordWrap","extension","codePreviewSuffix","control","Set","keys","readOnly","extraEditorClassName","i18n","Backend","LanguageDetector","initReactI18next","init","fallbackLng","debug","load","defaultNS","interpolation","escapeValue","lng","languages","displayName","RETRY_ERROR_LIST","FailedCreateUploadSession","HTTPRequestFailed","LocalChunkUploadFailed","SlaveChunkUploadFailed","RequestCanceled","ProcessingTaskDuplicated","FailedTransformResponse","RETRY_CODE_LIST","field","InvalidFile","supported","UnknownPolicyType","APIError","FailedDeleteUploadSession","axiosErr","chunkIndex","OneDriveChunkUploadFailed","OneDriveEmptyFile","FailedFinishOneDriveUpload","S3LikeChunkUploadFailed","getElementsByTagName","innerHTML","QiniuChunkUploadFailed","FailedFinishQiniuUpload","COSPostUploadFailed","COSUploadCallbackFailed","UpyunPostUploadFailed","S3LikeUploadCallbackFailed","parseError","variantIcon","CheckCircleIcon","WarningIcon","ErrorIcon","InfoIcon","MySnackbarContentWrapper","iconVariant","aria-describedby","SnackbarCompoment","snackbar","toggle","autoHideDuration","AlertBar","NavbarCompoment","handleDrawerToggle","mobileOpen","openDownload","startDownload","archiveDownload","startBatchDownload","signOut","UploaderRef","unlisten","listen","upDrawer","minStickDrawer","webdav","process","browser","test","menuButton","handleDesktopToggle","desktopOpen","menuButtonDesktop","menuIcon","setSelectedTarget","subTitle","grow","sectionForFile","isPreviewable","openPreview","disableClickAway","audioPreviewPlayingName","audioPreviewOpen","smUp","implementation","drawerPaper","disableDiscovery","ModalProps","keepMounted","xsDown","drawerPaperDesktop","drawerOpen","drawerClose","Navbar","loadUploader","audioPreviewIsOpen","withTheme","flexShrink","drawerDesktop","mixins","easing","sharp","enteringScreen","leavingScreen","flexGrow","nested","extendedIcon","addButton","fabButton","badgeFix","dividerFix","folderShareIcon","verticalAlign","shareInfoContainer","textDecoration","shareAvatar","ownerInfo","overflowY","getChunks","chunkByteSize","ceil","sumChunk","reduce","getResumeCtxKey","setResumeCtx","ctxKey","WriteCtxFailed","removeResumeCtx","removeItem","RemoveCtxFailed","getResumeCtx","localInfoString","ReadCtxFailed","localInfo","InvalidCtxData","CtxExpired","len","obj","xml","isArray","array","isFolder","createElement","multiple","appendChild","pathJoin","sep","RegExp","trimPrefix","relPath","webkitRelativePath","fsPath","readEntriesPromise","directoryReader","readEntries","readFilePromise","fileReader","readAllDirectoryEntries","entries","dataTransferItemList","fileEntries","webkitGetAsEntry","getAsFile","entry","shift","isFile","fullPath","isDirectory","createReader","Crc32","crc","table","offset","prototype","j","getDataHelper","byteLength","uint8","view","DataView","buffer","ZIP","underlyingSource","ctrl","activeZipObject","closed","filenames","encoder","TextEncoder","activeZipIndex","processNextChunk","closeZip","zipWriter","fileLike","TypeError","trim","directory","endsWith","nameBuf","encode","zipObject","comment","compressedLength","uncompressedLength","writeHeader","setUint16","setUint32","getHours","getMinutes","getSeconds","getFullYear","getMonth","getDate","set","writeFooter","footer","indexFilename","setUint8","zipObj","read","done","outputData","stream","getReader","ReadableStream","pull","getPreviewPath","walk","f","objects","subs","setFileList","setDirList","setSortMethod","setSideBar","setCurrentPolicy","removeSelectedTargets","addSelectedTargets","setLastSelect","setShiftSelectedIds","sortMethodFuncs","sizePos","sizeRes","namePos","localeCompare","numeric","ignorePunctuation","nameRev","timePos","timeRev","modifyTimePos","modifyTimeRev","selectAll","updateFileList","sortMethod","x","sortFunc","toggleObjectInfoSidebar","closeContextMenu","serverSideBatchDownload","router","postBody","shareDownload","allowArchiveDownload","fileStream","streamSaver","createWriteStream","readableZipStream","previewPath","fetch","cache","WritableStream","pipeTo","getViewerURL","viewer","openViewer","fileIndex","ctrlKey","metaKey","shiftKey","isMacbook","all","begin","newShiftSelected","encodings","encoding","encodingRequired","allOptions","batchGetSource","sourceBatch","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","torrent","zip","excute","android","python","epub","isTorrent","isCompressFile","taskStatus","taskType","taskProgress","getTaskStatus","getTaskType","getTaskProgress","setSubtitle","setShareInfo","selectLanguage","changeLanguage","dayjs","extend","utc","timezone","userTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","preferTimeZone","refreshTimeZone","formatLocalTime","time","tz","toDate","formatParams","year","month","day","hour","minute","second","validateTimeZone","format","AudioIcon","VideoIcon","ImageIcon","PdfIcon","FileWordBox","FilePowerpointBox","FileExcelBox","ScriptText","MagnetOn","ZipBox","WindowRestore","Android","FileShowIcon","LanguagePhp","LanguageGo","LanguagePython","LanguageC","LanguageCpp","LanguageJavascript","MenuBook","fileSuffix","getColor","getColorValue","iconClassName","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","isLocalhost","hostname","AuthRoute","rest","render","to","NoAuthRoute","emptyContainer","emptyInfoBig","Notice","primaryColor","secondaryColor","y","rx","ry","captchaPlacholder","NormalCaptcha","captchaRef","useStyle","captcha","setCaptcha","captchaData","setCaptchaData","refreshCaptcha","captchaCode","captchaContainer","required","autoComplete","captchaImageContainer","captchaImage","alt","ReCAPTCHA","handleExpired","bind","handleErrored","handleRecaptchaRef","grecaptcha","_widgetId","getResponse","execute","_executeRequested","onExpired","onErrored","sitekey","tabindex","stoken","hl","explicitRender","delayOfCaptchaIframeRemoving","temporaryNode","firstChild","removeChild","elem","childProps","defaultProps","makeAsyncScriptLoader","callbackName","globalName","Recaptcha","reCaptchaKey","captcha_ReCaptchaKey","ReCaptcha","TCaptcha","isValidateRef","submitRef","appid","tcaptcha_captcha_app_id","onLoad","TencentCaptcha","ret","ticket","randstr","isValidate","submit","cursor","defaultValidate","useCaptcha","captchaType","captcha_type","captchaLoading","setCaptchaLoading","captchaRefreshRef","normal","captchaParamsRef","CaptchaRender","useNormalCaptcha","recaptcha","useRecaptcha","tcaptcha","useTCaptcha","form","buttonContainer","authnLink","LoginForm","email","setEmail","pwd","setPwd","useAuthn","setUseAuthn","twoFA","setTwoFA","faCode","setFACode","loginCaptcha","authn","ApplyThemes","SetSessionStatus","afterLogin","Paper","Avatar","login","userName","Password","credentials","credentialRequestOptions","publicKey","challenge","allowCredentials","listItem","assertion","authData","authenticatorData","clientDataJSON","rawId","sig","signature","userHandle","RouterLink","Fingerprint","VpnKey","highlight","FileName","highlightClassName","searchWords","autoEscape","textToHighlight","SmallIconCompoment","nextState","nextContext","isSelectedCurrent","isSelectedNext","isSelected","ButtonBase","focusRipple","notSelected","onIconClick","iconSelected","iconNotSelected","Folder","checkIcon","folderName","folderNameSelected","folderNameNotSelected","SmallIcon","boxSizing","FileIconCompoment","showPicIcon","pic","picPreview","noDrag","afterLoad","beforeLoad","loadingAnimation","previewIcon","iconBig","fileInfo","shareFix","FileIcon","objectFit","userDrag","active","isActive","dragging","cardDragged","diliverIcon","object","Preview","card","layerStyles","getItemStyles","initialOffset","currentOffset","pointerOffset","WebkitTransform","CustomDragLayer","useDragLayer","monitor","itemType","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getInitialClientOffset","isDragging","StyledListItemIcon","ContextMenuCompoment","X","Y","setPoint","clientY","clientX","openArchiveDownload","enterFolder","renderMenuItems","visibleCount","condition","allowRemoteDownload","menuOpen","anchorReference","anchorPosition","Unarchive","Archive","InfoOutlined","propover","ContextMenu","contextType","contextOpen","TableRowCompoment","tableIcon","TableRow","pref","onContextMenu","contextMenu","handleClick","onDoubleClick","handleDoubleClick","selectedShared","TableCell","dref","scope","tableRow","hideAuto","TableItem","hover","userSelect","FolderDropWarpper","isListView","useDrop","accept","drop","collect","isOver","canDrop","useDragScrolling","isScrolling","goDown","isScrollEnd","offsetHeight","scrollHeight","requestAnimationFrame","goUp","throttleOnDragOver","throttle","isMouseOnTop","isMouseOnDown","addEventListenerForWindow","removeEventListenerForWindow","removeEventListener","fixFlex","ObjectIcon","navigatorPath","SetSelectedTarget","NavitateTo","DragAndDrop","OpenPreview","StartDownload","SelectFile","handleIconClick","useDrag","dropResult","getDropResult","canDrag","drag","getEmptyImage","captureDraggingState","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","Table","TableHead","TableSortLabel","TableBody","normalView","data-clickAway","dataset","clickaway","allowChanges","expandMore","textTransform","PathButton","inputRef","more","last","DropDownItem","setActiveStatus","DropDown","timer","clearTimeout","shouldClose","NavigatorComponent","currentID","hiddenFolders","hiddenMode","anchorHidden","URL","searchParams","renderPath","onpopstate","navigateToPath","max_size","file_type","checkOverFlow","redresh","componentDidUpdate","prevProps","prevStates","ms","drawerDesktopOpen","force","overflowInitLock","hasOverflowingChildren","offsetWidth","scrollWidth","showHiddenPath","performAction","newTarget","presentFolderMenu","disableAutoFocusItem","roundBorder","navigatorContainer","nav","rightIcon","optionContainer","Navigator","ListLoading","drawerContainer","placeContent","fileIconSVG","folderIcon","closeIcon","placeSelf","propsContainer","propsLabel","propsTime","propsValue","SideDrawer","SetSideBar","setTarget","setDetails","propsItem","d","toLocaleString","child_folder_num","child_file_num","updated_at","created_at","query_date","Hidden","Clear","Drawer","gutterBottom","CustomPaginationItem","PaginationItem","PaginationFooter","SetPagination","Pagination","renderItem","FileManager","DndProvider","backend","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","flip","setting","playbackRate","aspectRatio","hotkey","fullscreen","fullscreenWeb","whitelist","moreVideoAttr","playsInline","lang","getInstance","startIcon","Subtitles","PlaylistPlay","Launch","sub","cardContainer","shareTitle","avatarFile","avatarFolder","gird","loadMore","orderSelect","cardAction","SearchResult","tGlobal","setPage","setTotal","shareList","setShareList","orderBy","setOrderBy","order","sm","Card","CardHeader","subheader","MyShareCompoment","showPwd","loadList","removeShare","oldList","changePermission","newPwd","shareIndex","changePreviewOption","handlePageChange","handleOrderChange","isExpired","remain_downloads","md","CardActions","disableActionSpacing","MyShare","SelectFileDialog","FormGroup","row","FormControlLabel","filesCopy","iconContainer","borderInlineStart","contentSide","iconMultiple","subFileName","subFileIcon","scroll","bitmap","DownloadingCard","canvasRef","setTask","selectDialogOpen","setSelectDialogOpen","selectFileOption","setSelectFileOption","bitfield","str","canvas","context","getContext","clearRect","strokeStyle","bit","round","numPieces","beginPath","moveTo","lineTo","stroke","getPercent","completed","activeFiles","getDownloadName","bittorrent","mode","gid","indexes","CardContent","LinearProgress","completedLength","newIndex","newFiles","deleteFile","HighlightOff","update","uploadLength","uploadSpeed","infoHash","numSeeders","seeder","pieceLength","FinishedCard","task_status","getTaskError","task_error","RemoteDownloadButton","OpenRemoteDownloadDialog","Fab","Add","DownloadComponent","interval","previousDownloading","downloading","finishedList","continue","loadDownloading","PageLoading","LockedFileCompoment","setPassowrd","LockedFile","marginRottom","boxHeader","shareDes","Creator","userProfile","views","ImgPreview","SharedFileCompoment","scoreHandle","download","box","boxContent","fileSize","boxFooter","actionLeft","downloadButton","SharedFile","openResave","fileCotainer","buttonCotainer","ReadMe","SharedFolderComponent","handleClickAway","ignore","readmeShowed","ClickAwayListener","onClickAway","managerContainer","Popover","SharedFolder","shareUserPopoverAnchorEl","SharePreload","setShare","setPassword","locked","withPassword","DocViewer","setURL","formGroup","formIcon","CreateWebDAVAccount","setValue","pathSelectDialog","setPathSelectDialog","formContainer","LabelOutlined","FolderOpenOutlined","cardContent","tableContainer","WebDAV","tab","setTab","setCreate","accounts","setAccounts","account","ID","CreatedAt","Name","Root","Tabs","indicatorColor","textColor","newValue","Tab","Alert","severity","origin","TableContainer","align","accountCopy","deleteAccount","Tasks","setTasks","nowrap","getError","ProfileCompoment","listType","loadNext","loadPrev","avatarContainer","centered","infoContainer","infoItem","mobileHide","th","tableLink","Profile","backgroundPosition","borderRaidus","pageInfo","sectionTitle","desenList","flexContainer","Authn","setSelected","confirm","setConfirm","deleteCredential","fingerprint","credentialCreationOptions","excludeCredentials","attestationObject","add","TimeZoneDialog","timeZoneValue","setTimeZoneValue","UserSettingCompoment","avatarModal","nickModal","changePassword","oldPwd","webdavPwd","newPwdRepeat","twoFactor","authCode","changeTheme","chosenTheme","showWebDavUrl","showWebDavUserName","changeWebDavPwd","groupBackModal","changePolicy","changeTimeZone","settings","uid","group_expires","qq","homepage","two_factor","two_fa_secret","prefer_theme","themes","changeView","loadSetting","useGravatar","changeNick","uploadAvatar","formData","handleToggle","changhePwd","old","new","changheWebdavPwd","init2FA","handleAlignment","toggleThemeMode","newMode","ListItemAvatar","infoTextWithIcon","rightIconWithText","infoText","Switch","firstColor","secondColor","Brightness3","ListAlt","Schedule","GitHub","Translate","uploadFromFile","userGravatar","paddingText","textField","flexContainerResponse","qrcode","desText","ToggleButtonGroup","exclusive","ToggleButton","themeBlock","UserSetting","yellow","policySelected","avatarSuccess","Register","password_repeat","setInput","emailActive","setEmailActive","regCaptcha","Activation","setSuccess","ResetForm","secret","Reset","forgetCaptcha","MusicPlayerComponent","currentIndex","currentTime","progressText","looptype","myAudioRef","newItem","handleItemClick","backgroundPlay","bindEvents","ele","readyPlay","loopnext","timeUpdate","unbindEvents","play","formatTime","isNaN","playOrPaues","isPlay","changeLoopType","lt","handleProgress","idx","Slider","slider_root","justify","Repeat","RepeatOne","Shuffle","MusicPlayer","ReactReader","m","EpubViewer","currentLocation","setLocation","fileUrl","locationChanged","epubcifi","epubInitOptions","openAs","showToc","PDFViewer","App","themeConfig","prefersDarkMode","prefer","createMuiTheme","overrides","MuiButton","MuiTab","Fragment","ThemeProvider","CssBaseline","exact","NavbarDownload","Text","Code","initUserConfig","store","defaultTheme","preferListMethod","share_view_method","home_view_method","music","resave","doNavigate","currntPath","defaultStatus","rawStore","configCache","InitSiteConfig","siteICPId","QQLogin","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","getElementById","emptyInfoSmall","PathSelectorCompoment","selectedTarget","toBeLoad","back","paths","api","unshift","handleSelect","selector","primaryTypographyProps","buttonIcon","iconWhite"],"mappings":"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","file":"static/js/main.1b877a49.chunk.js","sourcesContent":["import { useDispatch } from \"react-redux\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { changeSubTitle } from \"../redux/viewUpdate/action\";\r\nimport pathHelper from \"../utils/page\";\r\n\r\nexport default function UseFileSubTitle(query, math, location) {\r\n const dispatch = useDispatch();\r\n const [title, setTitle] = useState(\"\");\r\n const [path, setPath] = useState(\"\");\r\n const SetSubTitle = useCallback(\r\n (title) => dispatch(changeSubTitle(title)),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n if (!pathHelper.isSharePage(location.pathname)) {\r\n const path = query.get(\"p\").split(\"/\");\r\n setPath(query.get(\"p\"));\r\n SetSubTitle(path[path.length - 1]);\r\n setTitle(path[path.length - 1]);\r\n } else {\r\n SetSubTitle(query.get(\"name\"));\r\n setTitle(query.get(\"name\"));\r\n setPath(query.get(\"share_path\"));\r\n }\r\n // eslint-disable-next-line\r\n }, [math.params[0], location]);\r\n\r\n return { title, path };\r\n}\r\n","import React from \"react\";\r\nimport { Code } from \"react-content-loader\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n loader: {\r\n width: \"70%\",\r\n padding: 40,\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n padding: 10,\r\n },\r\n },\r\n}));\r\n\r\nconst MyLoader = (props) => (\r\n \r\n);\r\n\r\nfunction TextLoading() {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default TextLoading;\r\n","import axios from \"axios\";\r\nimport Auth from \"./Auth\";\r\nimport i18next from \"../i18n\";\r\n\r\nexport const baseURL = \"/api/v3\";\r\n\r\nexport const getBaseURL = () => {\r\n return baseURL;\r\n};\r\n\r\nexport const getPreviewURL = (\r\n isShare: boolean,\r\n shareID: any,\r\n fileID: any,\r\n path: any\r\n): string => {\r\n return (\r\n getBaseURL() +\r\n (isShare\r\n ? \"/share/preview/\" +\r\n shareID +\r\n (path !== \"\" ? \"?path=\" + encodeURIComponent(path) : \"\")\r\n : \"/file/preview/\" + fileID)\r\n );\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-ignore\r\n// @ts-ignore\r\nconst instance = axios.create({\r\n baseURL: getBaseURL(),\r\n withCredentials: true,\r\n});\r\n\r\nclass AppError extends Error {\r\n constructor(message: string | undefined, public code: any, error: any) {\r\n super(message);\r\n this.code = code;\r\n if (i18next.exists(`errors.${code}`, { ns: \"common\" })) {\r\n this.message = i18next.t(`errors.${code}`, {\r\n ns: \"common\",\r\n message,\r\n });\r\n } else {\r\n this.message =\r\n message || i18next.t(\"unknownError\", { ns: \"common\" });\r\n }\r\n\r\n this.message += error ? ` (${error})` : \"\";\r\n this.stack = new Error().stack;\r\n }\r\n}\r\n\r\ninstance.interceptors.response.use(\r\n function (response: any) {\r\n response.rawData = response.data;\r\n response.data = response.data.data;\r\n if (\r\n response.rawData.code !== undefined &&\r\n response.rawData.code !== 0 &&\r\n response.rawData.code !== 203\r\n ) {\r\n // Login expired\r\n if (response.rawData.code === 401) {\r\n Auth.signout();\r\n window.location.href = \"/login\";\r\n }\r\n\r\n // Non-admin\r\n if (response.rawData.code === 40008) {\r\n window.location.href = \"/home\";\r\n }\r\n throw new AppError(\r\n response.rawData.msg,\r\n response.rawData.code,\r\n response.rawData.error\r\n );\r\n }\r\n return response;\r\n },\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport Zoom from \"@material-ui/core/Zoom\";\r\n\r\nfunction AutoHidden({ children, enable, hide = false, element = null }) {\r\n const [hidden, setHidden] = useState(false);\r\n let prev = window.scrollY;\r\n let lastUpdate = window.scrollY;\r\n const show = 50;\r\n\r\n useEffect(() => {\r\n const handleNavigation = (e) => {\r\n const window = e.currentTarget;\r\n const current = element ? element.scrollTop : window.scrollY;\r\n\r\n if (prev > current) {\r\n if (lastUpdate - current > show) {\r\n lastUpdate = current;\r\n setHidden(false);\r\n }\r\n } else if (prev < current) {\r\n if (current - lastUpdate > show) {\r\n lastUpdate = current;\r\n setHidden(true);\r\n }\r\n }\r\n prev = current;\r\n };\r\n if (enable) {\r\n const target = element ? element : window;\r\n target.addEventListener(\"scroll\", (e) => handleNavigation(e));\r\n }\r\n // eslint-disable-next-line\r\n }, [enable]);\r\n\r\n return {children};\r\n}\r\n\r\nexport default AutoHidden;\r\n","/* eslint-disable no-case-declarations */\r\nimport { AnyAction } from \"redux\";\r\nimport { CloudreveFile } from \"../../types\";\r\nimport { Policy } from \"../../component/Uploader/core/types\";\r\n\r\ninterface SelectProps {\r\n isMultiple: boolean;\r\n withFolder: boolean;\r\n withFile: boolean;\r\n withSourceEnabled: boolean;\r\n}\r\n\r\nexport interface ExplorerState {\r\n dndSignal: boolean;\r\n dndTarget: any;\r\n dndSource: any;\r\n fileList: CloudreveFile[];\r\n dirList: CloudreveFile[];\r\n selected: CloudreveFile[];\r\n selectProps: SelectProps;\r\n lastSelect: {\r\n file: CloudreveFile;\r\n index: number;\r\n };\r\n shiftSelectedIds: string[];\r\n imgPreview: {\r\n first: CloudreveFile;\r\n other: [];\r\n };\r\n audioPreview: {\r\n first: CloudreveFile;\r\n other: [];\r\n playingName: any;\r\n paused: boolean;\r\n isOpen: boolean;\r\n };\r\n search?: {\r\n keywords: string;\r\n searchPath: string;\r\n };\r\n fileSave: boolean;\r\n sideBarOpen: boolean;\r\n currentPolicy?: Policy;\r\n}\r\n\r\nexport const initState: ExplorerState = {\r\n dndSignal: false,\r\n dndTarget: null,\r\n dndSource: null,\r\n fileList: [],\r\n dirList: [],\r\n selected: [],\r\n selectProps: {\r\n isMultiple: false,\r\n withFolder: false,\r\n withFile: false,\r\n withSourceEnabled: false,\r\n },\r\n lastSelect: {\r\n file: {\r\n id: \"\",\r\n name: \"\",\r\n size: 0,\r\n type: \"file\",\r\n date: \"\",\r\n path: \"\",\r\n create_date: \"\",\r\n },\r\n index: -1,\r\n },\r\n shiftSelectedIds: [],\r\n imgPreview: {\r\n first: {\r\n id: \"\",\r\n name: \"\",\r\n size: 0,\r\n type: \"file\",\r\n date: \"\",\r\n path: \"\",\r\n create_date: \"\",\r\n },\r\n other: [],\r\n },\r\n audioPreview: {\r\n first: {\r\n id: \"\",\r\n name: \"\",\r\n size: 0,\r\n type: \"file\",\r\n date: \"\",\r\n path: \"\",\r\n create_date: \"\",\r\n },\r\n other: [],\r\n playingName: null,\r\n paused: false,\r\n isOpen: false,\r\n },\r\n fileSave: false,\r\n sideBarOpen: false,\r\n};\r\n\r\nconst checkSelectedProps = (selected: CloudreveFile[]): SelectProps => {\r\n const isMultiple = selected.length > 1;\r\n let withFolder = false;\r\n let withFile = false;\r\n let withSourceEnabled = false;\r\n selected.forEach((value) => {\r\n if (value.type === \"dir\") {\r\n withFolder = true;\r\n withSourceEnabled = true;\r\n } else if (value.type === \"file\") {\r\n withFile = true;\r\n if (value.source_enabled) {\r\n withSourceEnabled = true;\r\n }\r\n }\r\n });\r\n return {\r\n isMultiple,\r\n withFolder,\r\n withFile,\r\n withSourceEnabled,\r\n };\r\n};\r\n\r\nconst explorer = (\r\n state: ExplorerState = initState,\r\n action: AnyAction\r\n): ExplorerState => {\r\n switch (action.type) {\r\n case \"DRAG_AND_DROP\":\r\n return Object.assign({}, state, {\r\n dndSignal: !state.dndSignal,\r\n dndTarget: action.target,\r\n dndSource: action.source,\r\n });\r\n case \"SET_FILE_LIST\":\r\n return Object.assign({}, state, {\r\n fileList: action.list,\r\n });\r\n case \"SET_DIR_LIST\":\r\n return Object.assign({}, state, {\r\n dirList: action.list,\r\n });\r\n case \"ADD_SELECTED_TARGETS\":\r\n const addedSelected = [...state.selected, ...action.targets];\r\n return Object.assign({}, state, {\r\n selected: addedSelected,\r\n selectProps: checkSelectedProps(addedSelected),\r\n });\r\n case \"SET_SELECTED_TARGET\":\r\n const newSelected = action.targets;\r\n return Object.assign({}, state, {\r\n selected: newSelected,\r\n selectProps: checkSelectedProps(newSelected),\r\n });\r\n case \"RMOVE_SELECTED_TARGETS\":\r\n const { fileIds } = action;\r\n const filteredSelected = state.selected.filter((file) => {\r\n return !fileIds.includes(file.id);\r\n });\r\n return Object.assign({}, state, {\r\n selected: filteredSelected,\r\n selectProps: checkSelectedProps(filteredSelected),\r\n });\r\n case \"REFRESH_FILE_LIST\":\r\n return Object.assign({}, state, {\r\n selected: [],\r\n selectProps: {\r\n isMultiple: false,\r\n withFolder: false,\r\n withFile: false,\r\n withSourceEnabled: false,\r\n },\r\n });\r\n case \"SEARCH_MY_FILE\":\r\n return Object.assign({}, state, {\r\n selected: [],\r\n selectProps: {\r\n isMultiple: false,\r\n withFolder: false,\r\n withFile: false,\r\n withSourceEnabled: false,\r\n },\r\n search: {\r\n keywords: action.keywords,\r\n searchPath: action.path,\r\n },\r\n });\r\n case \"SHOW_IMG_PREIVEW\":\r\n return Object.assign({}, state, {\r\n imgPreview: {\r\n first: action.first,\r\n other: state.fileList,\r\n },\r\n });\r\n case \"SHOW_AUDIO_PREVIEW\":\r\n return Object.assign({}, state, {\r\n audioPreview: {\r\n ...state.audioPreview,\r\n first: action.first,\r\n other: state.fileList,\r\n },\r\n });\r\n case \"AUDIO_PREVIEW_SET_IS_OPEN\":\r\n return Object.assign({}, state, {\r\n audioPreview: {\r\n ...state.audioPreview,\r\n isOpen: action.isOpen,\r\n },\r\n });\r\n case \"AUDIO_PREVIEW_SET_PLAYING\":\r\n return Object.assign({}, state, {\r\n audioPreview: {\r\n ...state.audioPreview,\r\n playingName: action.playingName,\r\n paused: action.paused,\r\n },\r\n });\r\n case \"SAVE_FILE\":\r\n return {\r\n ...state,\r\n fileSave: !state.fileSave,\r\n };\r\n case \"SET_LAST_SELECT\":\r\n const { file, index } = action;\r\n return {\r\n ...state,\r\n lastSelect: {\r\n file,\r\n index,\r\n },\r\n };\r\n case \"SET_SHIFT_SELECTED_IDS\":\r\n const { shiftSelectedIds } = action;\r\n return {\r\n ...state,\r\n shiftSelectedIds,\r\n };\r\n case \"SET_NAVIGATOR\":\r\n return {\r\n ...state,\r\n selected: [],\r\n selectProps: {\r\n isMultiple: false,\r\n withFolder: false,\r\n withFile: false,\r\n withSourceEnabled: false,\r\n },\r\n search: undefined,\r\n };\r\n case \"SET_SIDE_BAR\":\r\n return {\r\n ...state,\r\n sideBarOpen: action.open,\r\n };\r\n case \"SET_CURRENT_POLICY\":\r\n return {\r\n ...state,\r\n currentPolicy: action.policy,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default explorer;\r\n","const statusHelper = {\r\n isHomePage(path: string) {\r\n return path === \"/home\";\r\n },\r\n isSharePage(path: string) {\r\n return path && path.startsWith(\"/s/\");\r\n },\r\n isAdminPage(path: string) {\r\n return path && path.startsWith(\"/admin\");\r\n },\r\n isLoginPage(path: string) {\r\n return path && path.startsWith(\"/login\");\r\n },\r\n isMobile() {\r\n return window.innerWidth < 600;\r\n },\r\n};\r\nexport default statusHelper;\r\n","import API from \"../middleware/Api\";\r\n\r\nexport async function list(\r\n path: string,\r\n share: any,\r\n keywords: string,\r\n searchPath: string\r\n): Promise {\r\n let apiURL = \"\";\r\n if (share) {\r\n if (keywords === \"\") {\r\n apiURL = \"/share/list/\" + share.key;\r\n } else {\r\n apiURL = `/share/search/${share.key}/`;\r\n }\r\n } else {\r\n if (keywords === \"\") {\r\n apiURL = \"/directory\";\r\n } else {\r\n apiURL = \"/file/search/\";\r\n }\r\n }\r\n\r\n path = keywords === \"\" ? path : keywords;\r\n apiURL = apiURL + encodeURIComponent(path);\r\n if (searchPath) {\r\n apiURL = `${apiURL}?path=${encodeURIComponent(searchPath)}`;\r\n }\r\n return API.get(apiURL);\r\n}\r\n","import API from \"../middleware/Api\";\r\n\r\nexport async function getDownloadURL(file: any): Promise {\r\n let reqURL = \"\";\r\n if (file.key) {\r\n const downloadPath =\r\n file.path === \"/\"\r\n ? file.path + file.name\r\n : file.path + \"/\" + file.name;\r\n reqURL =\r\n \"/share/download/\" +\r\n file.key +\r\n \"?path=\" +\r\n encodeURIComponent(downloadPath);\r\n } else {\r\n reqURL = \"/file/download/\" + file.id;\r\n }\r\n\r\n return API.put(reqURL);\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { IconButton, makeStyles } from \"@material-ui/core\";\r\nimport DayIcon from \"@material-ui/icons/Brightness7\";\r\nimport NightIcon from \"@material-ui/icons/Brightness4\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport classNames from \"classnames\";\r\nimport { toggleDaylightMode } from \"../../redux/explorer\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n icon: {\r\n color: \"rgb(255, 255, 255)\",\r\n opacity: \"0.54\",\r\n },\r\n}));\r\n\r\nconst DarkModeSwitcher = ({ position }) => {\r\n const { t } = useTranslation();\r\n const ThemeType = useSelector(\r\n (state) => state.siteConfig.theme.palette.type\r\n );\r\n const dispatch = useDispatch();\r\n const ToggleThemeMode = useCallback(() => dispatch(toggleDaylightMode()), [\r\n dispatch,\r\n ]);\r\n const isDayLight = (ThemeType && ThemeType === \"light\") || !ThemeType;\r\n const isDark = ThemeType && ThemeType === \"dark\";\r\n const toggleMode = () => {\r\n Auth.SetPreference(\"theme_mode\", isDayLight ? \"dark\" : \"light\");\r\n ToggleThemeMode();\r\n };\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n {isDayLight && }\r\n {isDark && }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DarkModeSwitcher;\r\n","import React, { useCallback, useState } from \"react\";\r\nimport { IconButton, makeStyles, Menu, MenuItem } from \"@material-ui/core\";\r\nimport ViewListIcon from \"@material-ui/icons/ViewList\";\r\nimport ViewSmallIcon from \"@material-ui/icons/ViewComfy\";\r\nimport ViewModuleIcon from \"@material-ui/icons/ViewModule\";\r\nimport TextTotateVerticalIcon from \"@material-ui/icons/TextRotateVertical\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Auth from \"../../../middleware/Auth\";\r\nimport { changeViewMethod, setShareUserPopover } from \"../../../redux/explorer\";\r\nimport { changeSortMethod } from \"../../../redux/explorer/action\";\r\nimport { FormatPageBreak } from \"mdi-material-ui\";\r\nimport pathHelper from \"../../../utils/page\";\r\nimport { changePageSize } from \"../../../redux/viewUpdate/action\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n sideButton: {\r\n padding: \"8px\",\r\n marginRight: \"5px\",\r\n },\r\n}));\r\n\r\nconst sortOptions = [\r\n \"A-Z\",\r\n \"Z-A\",\r\n \"oldestUploaded\",\r\n \"newestUploaded\",\r\n \"oldestModified\",\r\n \"newestModified\",\r\n \"smallest\",\r\n \"largest\",\r\n];\r\n\r\nconst paginationOption = [\"50\", \"100\", \"200\", \"500\", \"1000\"];\r\n\r\nexport default function SubActions({ isSmall, inherit }) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"fileManager\" });\r\n const { t: vasT } = useTranslation(\"application\", { keyPrefix: \"vas\" });\r\n const dispatch = useDispatch();\r\n const viewMethod = useSelector(\r\n (state) => state.viewUpdate.explorerViewMethod\r\n );\r\n const share = useSelector((state) => state.viewUpdate.shareInfo);\r\n const pageSize = useSelector((state) => state.viewUpdate.pagination.size);\r\n const OpenLoadingDialog = useCallback(\r\n (method) => dispatch(changeViewMethod(method)),\r\n [dispatch]\r\n );\r\n const ChangeSortMethod = useCallback(\r\n (method) => dispatch(changeSortMethod(method)),\r\n [dispatch]\r\n );\r\n const SetShareUserPopover = useCallback(\r\n (e) => dispatch(setShareUserPopover(e)),\r\n [dispatch]\r\n );\r\n const ChangePageSize = useCallback((e) => dispatch(changePageSize(e)), [\r\n dispatch,\r\n ]);\r\n const [anchorSort, setAnchorSort] = useState(null);\r\n const [anchorPagination, setAnchorPagination] = useState(null);\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n const showSortOptions = (e) => {\r\n setAnchorSort(e.currentTarget);\r\n };\r\n const showPaginationOptions = (e) => {\r\n setAnchorPagination(e.currentTarget);\r\n };\r\n const handleMenuItemClick = (e, index) => {\r\n setSelectedIndex(index);\r\n const optionsTable = {\r\n 0: \"namePos\",\r\n 1: \"nameRev\",\r\n 2: \"timePos\",\r\n 3: \"timeRev\",\r\n 4: \"modifyTimePos\",\r\n 5: \"modifyTimeRev\",\r\n 6: \"sizePos\",\r\n 7: \"sizeRes\",\r\n };\r\n ChangeSortMethod(optionsTable[index]);\r\n setAnchorSort(null);\r\n };\r\n const handlePaginationChange = (s) => {\r\n ChangePageSize(s);\r\n setAnchorPagination(null);\r\n };\r\n\r\n const toggleViewMethod = () => {\r\n const newMethod =\r\n viewMethod === \"icon\"\r\n ? \"list\"\r\n : viewMethod === \"list\"\r\n ? \"smallIcon\"\r\n : \"icon\";\r\n Auth.SetPreference(\"view_method\", newMethod);\r\n OpenLoadingDialog(newMethod);\r\n };\r\n const isMobile = pathHelper.isMobile();\r\n\r\n const classes = useStyles();\r\n return (\r\n <>\r\n {viewMethod === \"icon\" && (\r\n \r\n \r\n \r\n )}\r\n {viewMethod === \"list\" && (\r\n \r\n \r\n \r\n )}\r\n\r\n {viewMethod === \"smallIcon\" && (\r\n \r\n \r\n \r\n )}\r\n\r\n {!isMobile && (\r\n \r\n \r\n \r\n )}\r\n setAnchorPagination(null)}\r\n >\r\n {paginationOption.map((option, index) => (\r\n handlePaginationChange(parseInt(option))}\r\n >\r\n {t(\"paginationOption\", { option })}\r\n \r\n ))}\r\n handlePaginationChange(-1)}\r\n >\r\n {t(\"noPagination\")}\r\n \r\n \r\n\r\n \r\n \r\n \r\n setAnchorSort(null)}\r\n >\r\n {sortOptions.map((option, index) => (\r\n handleMenuItemClick(event, index)}\r\n >\r\n {t(\"sortMethods.\" + option)}\r\n \r\n ))}\r\n \r\n {share && (\r\n SetShareUserPopover(e.currentTarget)}\r\n style={{ padding: 5 }}\r\n >\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { ThunkAction } from \"redux-thunk\";\r\nimport { setOptionModal } from \"../viewUpdate/action\";\r\nimport i18next from \"../../i18n\";\r\n\r\nexport const askForOption = (\r\n options: any,\r\n title: string\r\n): ThunkAction => {\r\n return async (dispatch, getState): Promise => {\r\n return new Promise((resolve, reject) => {\r\n const dialog = {\r\n open: true,\r\n title: title,\r\n options: options,\r\n };\r\n dispatch(\r\n setOptionModal({\r\n ...dialog,\r\n onClose: () => {\r\n dispatch(setOptionModal({ ...dialog, open: false }));\r\n reject(i18next.t(\"fileManager.userDenied\"));\r\n },\r\n callback: (option: any) => {\r\n resolve(option);\r\n dispatch(setOptionModal({ ...dialog, open: false }));\r\n },\r\n })\r\n );\r\n });\r\n };\r\n};\r\n","import * as actions from \"./action\";\r\nimport * as reducers from \"./reducer\";\r\nimport { setPagination } from \"../viewUpdate/action\";\r\n\r\nexport default {\r\n actions,\r\n reducers,\r\n};\r\nexport { selectFile } from \"./action\";\r\nexport { openPreview } from \"./action\";\r\nexport { setShiftSelectedIds } from \"./action\";\r\nexport { setLastSelect } from \"./action\";\r\nexport { setSelectedTarget } from \"./action\";\r\nexport { addSelectedTargets } from \"./action\";\r\nexport { removeSelectedTargets } from \"./action\";\r\nexport const setNavigator = (path: any, navigatorLoading: any) => {\r\n return {\r\n type: \"SET_NAVIGATOR\",\r\n path,\r\n navigatorLoading,\r\n };\r\n};\r\nexport const navigateTo = (path: any) => {\r\n return (dispatch: any, getState: any) => {\r\n const state = getState();\r\n const navigatorLoading = path !== state.navigator.path;\r\n if (navigatorLoading) {\r\n dispatch(\r\n setPagination({\r\n ...state.viewUpdate.pagination,\r\n page: 1,\r\n })\r\n );\r\n }\r\n dispatch(setNavigator(path, navigatorLoading));\r\n };\r\n};\r\nexport const navigateUp = () => {\r\n return (dispatch, getState) => {\r\n const state = getState();\r\n const pathSplit = state.navigator.path.split(\"/\");\r\n pathSplit.pop();\r\n const newPath = pathSplit.length === 1 ? \"/\" : pathSplit.join(\"/\");\r\n const navigatorLoading = newPath !== state.navigator.path;\r\n if (navigatorLoading) {\r\n dispatch(\r\n setPagination({\r\n ...state.viewUpdate.pagination,\r\n page: 1,\r\n })\r\n );\r\n }\r\n dispatch(setNavigator(newPath, navigatorLoading));\r\n };\r\n};\r\nexport const drawerToggleAction = (open) => {\r\n return {\r\n type: \"DRAWER_TOGGLE\",\r\n open: open,\r\n };\r\n};\r\nexport const dragAndDrop = (source, target) => {\r\n return {\r\n type: \"DRAG_AND_DROP\",\r\n source: source,\r\n target: target,\r\n };\r\n};\r\nexport const changeViewMethod = (method) => {\r\n return {\r\n type: \"CHANGE_VIEW_METHOD\",\r\n method: method,\r\n };\r\n};\r\nexport const toggleDaylightMode = () => {\r\n return {\r\n type: \"TOGGLE_DAYLIGHT_MODE\",\r\n };\r\n};\r\n// Deprecated\r\nexport const changeContextMenu = (type, open) => {\r\n return {\r\n type: \"CHANGE_CONTEXT_MENU\",\r\n menuType: type,\r\n open: open,\r\n };\r\n};\r\nexport const setNavigatorLoadingStatus = (status) => {\r\n return {\r\n type: \"SET_NAVIGATOR_LOADING_STATUE\",\r\n status: status,\r\n };\r\n};\r\nexport const setNavigatorError = (status, msg) => {\r\n return {\r\n type: \"SET_NAVIGATOR_ERROR\",\r\n status: status,\r\n msg: msg,\r\n };\r\n};\r\nexport const openCreateFolderDialog = () => {\r\n return {\r\n type: \"OPEN_CREATE_FOLDER_DIALOG\",\r\n };\r\n};\r\nexport const openCreateFileDialog = () => {\r\n return {\r\n type: \"OPEN_CREATE_FILE_DIALOG\",\r\n };\r\n};\r\nexport const setUserPopover = (anchor) => {\r\n return {\r\n type: \"SET_USER_POPOVER\",\r\n anchor: anchor,\r\n };\r\n};\r\nexport const setShareUserPopover = (anchor) => {\r\n return {\r\n type: \"SET_SHARE_USER_POPOVER\",\r\n anchor: anchor,\r\n };\r\n};\r\nexport const openRenameDialog = () => {\r\n return {\r\n type: \"OPEN_RENAME_DIALOG\",\r\n };\r\n};\r\nexport const openResaveDialog = (key) => {\r\n return {\r\n type: \"OPEN_RESAVE_DIALOG\",\r\n key: key,\r\n };\r\n};\r\nexport const openMoveDialog = () => {\r\n return {\r\n type: \"OPEN_MOVE_DIALOG\",\r\n };\r\n};\r\nexport const openRemoveDialog = () => {\r\n return {\r\n type: \"OPEN_REMOVE_DIALOG\",\r\n };\r\n};\r\nexport const openShareDialog = () => {\r\n return {\r\n type: \"OPEN_SHARE_DIALOG\",\r\n };\r\n};\r\nexport const applyThemes = (theme) => {\r\n return {\r\n type: \"APPLY_THEME\",\r\n theme: theme,\r\n };\r\n};\r\nexport const setSessionStatus = (status) => {\r\n return {\r\n type: \"SET_SESSION_STATUS\",\r\n status: status,\r\n };\r\n};\r\nexport const openMusicDialog = () => {\r\n return {\r\n type: \"OPEN_MUSIC_DIALOG\",\r\n };\r\n};\r\nexport const openRemoteDownloadDialog = () => {\r\n return {\r\n type: \"OPEN_REMOTE_DOWNLOAD_DIALOG\",\r\n };\r\n};\r\nexport const openTorrentDownloadDialog = () => {\r\n return {\r\n type: \"OPEN_TORRENT_DOWNLOAD_DIALOG\",\r\n };\r\n};\r\nexport const openDecompressDialog = () => {\r\n return {\r\n type: \"OPEN_DECOMPRESS_DIALOG\",\r\n };\r\n};\r\nexport const openCompressDialog = () => {\r\n return {\r\n type: \"OPEN_COMPRESS_DIALOG\",\r\n };\r\n};\r\nexport const openRelocateDialog = () => {\r\n return {\r\n type: \"OPEN_RELOCATE_DIALOG\",\r\n };\r\n};\r\nexport const openGetSourceDialog = (source) => {\r\n return {\r\n type: \"OPEN_GET_SOURCE_DIALOG\",\r\n source,\r\n };\r\n};\r\nexport const openCopyDialog = () => {\r\n return {\r\n type: \"OPEN_COPY_DIALOG\",\r\n };\r\n};\r\n// Deprecated\r\nexport const openLoadingDialog = (text) => {\r\n return {\r\n type: \"OPEN_LOADING_DIALOG\",\r\n text: text,\r\n };\r\n};\r\n// Deprecated\r\nexport const closeAllModals = () => {\r\n return {\r\n type: \"CLOSE_ALL_MODALS\",\r\n };\r\n};\r\nexport const toggleSnackbar = (vertical, horizontal, msg, color) => {\r\n return {\r\n type: \"TOGGLE_SNACKBAR\",\r\n vertical: vertical,\r\n horizontal: horizontal,\r\n msg: msg,\r\n color: color,\r\n };\r\n};\r\nexport const setModalsLoading = (status) => {\r\n return {\r\n type: \"SET_MODALS_LOADING\",\r\n status: status,\r\n };\r\n};\r\nexport const refreshFileList = () => {\r\n return {\r\n type: \"REFRESH_FILE_LIST\",\r\n };\r\n};\r\nexport const searchMyFile = (keywords, path) => {\r\n return {\r\n type: \"SEARCH_MY_FILE\",\r\n keywords: keywords,\r\n path: path,\r\n };\r\n};\r\nexport const showImgPreivew = (first) => {\r\n return {\r\n type: \"SHOW_IMG_PREIVEW\",\r\n first: first,\r\n };\r\n};\r\nexport const showAudioPreview = (first) => {\r\n return {\r\n type: \"SHOW_AUDIO_PREVIEW\",\r\n first: first,\r\n };\r\n};\r\nexport const audioPreviewSetIsOpen = (isOpen) => {\r\n return {\r\n type: \"AUDIO_PREVIEW_SET_IS_OPEN\",\r\n isOpen,\r\n };\r\n};\r\nexport const audioPreviewSetPlaying = (playingName, paused) => {\r\n return {\r\n type: \"AUDIO_PREVIEW_SET_PLAYING\",\r\n playingName, //the playing content name\r\n paused,\r\n };\r\n};\r\nexport const refreshStorage = () => {\r\n return {\r\n type: \"REFRESH_STORAGE\",\r\n };\r\n};\r\nexport const saveFile = () => {\r\n return {\r\n type: \"SAVE_FILE\",\r\n };\r\n};\r\n\r\nexport const setSiteConfig = (config) => {\r\n return {\r\n type: \"SET_SITE_CONFIG\",\r\n config: config,\r\n };\r\n};\r\n","const Auth = {\r\n isAuthenticated: false,\r\n authenticate(cb: any) {\r\n Auth.SetUser(cb);\r\n Auth.isAuthenticated = true;\r\n },\r\n GetUser() {\r\n return JSON.parse(localStorage.getItem(\"user\") || \"null\");\r\n },\r\n SetUser(newUser: any) {\r\n localStorage.setItem(\"user\", JSON.stringify(newUser));\r\n },\r\n Check(): boolean {\r\n if (Auth.isAuthenticated) {\r\n return true;\r\n }\r\n if (localStorage.getItem(\"user\") !== null) {\r\n return !Auth.GetUser().anonymous;\r\n }\r\n return false;\r\n },\r\n signout() {\r\n Auth.isAuthenticated = false;\r\n const oldUser = Auth.GetUser();\r\n oldUser.id = 0;\r\n localStorage.setItem(\"user\", JSON.stringify(oldUser));\r\n },\r\n SetPreference(key: string, value: any) {\r\n let preference = JSON.parse(\r\n localStorage.getItem(\"user_preference\") || \"{}\"\r\n );\r\n preference = preference == null ? {} : preference;\r\n preference[key] = value;\r\n localStorage.setItem(\"user_preference\", JSON.stringify(preference));\r\n },\r\n GetPreference(key: string): any | null {\r\n const preference = JSON.parse(\r\n localStorage.getItem(\"user_preference\") || \"{}\"\r\n );\r\n if (preference && preference[key] !== undefined) {\r\n return preference[key];\r\n }\r\n return null;\r\n },\r\n GetPreferenceWithDefault(key: string, defaultVal: any): any {\r\n return Auth.GetPreference(key) !== null\r\n ? Auth.GetPreference(key)\r\n : defaultVal;\r\n },\r\n};\r\n\r\nexport default Auth;\r\n","import Base from \"../uploader/base\";\r\nimport { ProcessingTaskDuplicatedError } from \"../errors\";\r\n\r\nexport interface QueueContent {\r\n uploader: Base;\r\n resolve: () => void;\r\n reject: (err?: any) => void;\r\n}\r\n\r\nexport class Pool {\r\n queue: Array = [];\r\n processing: Array = [];\r\n\r\n constructor(public limit: number) {}\r\n\r\n enqueue(uploader: Base) {\r\n return new Promise((resolve, reject) => {\r\n this.queue.push({\r\n uploader,\r\n resolve,\r\n reject,\r\n });\r\n this.check();\r\n });\r\n }\r\n\r\n release(item: QueueContent) {\r\n this.processing = this.processing.filter((v) => v !== item);\r\n this.check();\r\n }\r\n\r\n run(item: QueueContent) {\r\n this.queue = this.queue.filter((v) => v !== item);\r\n if (\r\n this.processing.findIndex(\r\n (v) =>\r\n v.uploader.task.dst == item.uploader.task.dst &&\r\n v.uploader.task.file.name == item.uploader.task.name\r\n ) > -1\r\n ) {\r\n // 找到重名任务\r\n item.reject(new ProcessingTaskDuplicatedError());\r\n this.release(item);\r\n return;\r\n }\r\n\r\n this.processing.push(item);\r\n item.uploader.run().then(\r\n () => {\r\n item.resolve();\r\n this.release(item);\r\n },\r\n (err) => {\r\n item.reject(err);\r\n this.release(item);\r\n }\r\n );\r\n }\r\n\r\n check() {\r\n const processingNum = this.processing.length;\r\n const availableNum = Math.max(0, this.limit - processingNum);\r\n this.queue.slice(0, availableNum).forEach((item) => {\r\n this.run(item);\r\n });\r\n }\r\n}\r\n","import { Policy } from \"../types\";\r\nimport { FileValidateError } from \"../errors\";\r\n\r\ninterface Validator {\r\n (file: File, policy: Policy): void;\r\n}\r\n\r\n// validators\r\nconst checkers: Array = [\r\n function checkExt(file: File, policy: Policy) {\r\n if (\r\n policy.allowedSuffix != undefined &&\r\n policy.allowedSuffix.length > 0\r\n ) {\r\n const ext = file?.name.split(\".\").pop();\r\n if (ext === null || !ext || !policy.allowedSuffix.includes(ext))\r\n throw new FileValidateError(\r\n \"File suffix not allowed in policy.\",\r\n \"suffix\",\r\n policy\r\n );\r\n }\r\n },\r\n\r\n function checkSize(file: File, policy: Policy) {\r\n if (policy.maxSize > 0) {\r\n if (file.size > policy.maxSize) {\r\n throw new FileValidateError(\r\n \"File size exceeds maximum limit.\",\r\n \"size\",\r\n policy\r\n );\r\n }\r\n }\r\n },\r\n];\r\n\r\n/* 将每个 Validator 执行\r\n 失败返回 Error\r\n */\r\nexport function validate(file: File, policy: Policy) {\r\n checkers.forEach((c) => c(file, policy));\r\n}\r\n","import axios, { AxiosRequestConfig } from \"axios\";\r\nimport { Response } from \"../types\";\r\nimport {\r\n HTTPError,\r\n RequestCanceledError,\r\n TransformResponseError,\r\n} from \"../errors\";\r\n\r\nexport const { CancelToken } = axios;\r\nexport { CancelTokenSource } from \"axios\";\r\n\r\nconst baseConfig = {\r\n transformResponse: [\r\n (response: any) => {\r\n try {\r\n return JSON.parse(response);\r\n } catch (e) {\r\n throw new TransformResponseError(response, e);\r\n }\r\n },\r\n ],\r\n};\r\n\r\nconst cdBackendConfig = {\r\n ...baseConfig,\r\n baseURL: \"/api/v3\",\r\n withCredentials: true,\r\n};\r\n\r\nexport function request(url: string, config?: AxiosRequestConfig) {\r\n return axios\r\n .request({ ...baseConfig, ...config, url })\r\n .catch((err) => {\r\n if (axios.isCancel(err)) {\r\n throw new RequestCanceledError();\r\n }\r\n\r\n if (err instanceof TransformResponseError) {\r\n throw err;\r\n }\r\n\r\n throw new HTTPError(err, url);\r\n });\r\n}\r\n\r\nexport function requestAPI(url: string, config?: AxiosRequestConfig) {\r\n return request>(url, { ...cdBackendConfig, ...config });\r\n}\r\n","export const sizeToString = (bytes) => {\r\n if (bytes === 0 || bytes === \"0\") return \"0 B\";\r\n const k = 1024;\r\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return (bytes / Math.pow(k, i)).toFixed(1) + \" \" + sizes[i];\r\n};\r\n\r\nexport const fixUrlHash = (path) => {\r\n return path;\r\n};\r\n\r\nexport const setCookie = (name, value, days) => {\r\n if (days) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n }\r\n document.cookie = name + \"=\" + (value || \"\") + \"; path=/\";\r\n};\r\n\r\nexport const setGetParameter = (paramName, paramValue) => {\r\n let url = window.location.href;\r\n\r\n if (url.indexOf(paramName + \"=\") >= 0) {\r\n const prefix = url.substring(0, url.indexOf(paramName));\r\n let suffix = url.substring(url.indexOf(paramName));\r\n suffix = suffix.substring(suffix.indexOf(\"=\") + 1);\r\n suffix =\r\n suffix.indexOf(\"&\") >= 0\r\n ? suffix.substring(suffix.indexOf(\"&\"))\r\n : \"\";\r\n url = prefix + paramName + \"=\" + paramValue + suffix;\r\n } else {\r\n if (url.indexOf(\"?\") < 0) url += \"?\" + paramName + \"=\" + paramValue;\r\n else url += \"&\" + paramName + \"=\" + paramValue;\r\n }\r\n if (url === window.location.href) {\r\n return;\r\n }\r\n window.history.pushState(null, null, url);\r\n};\r\n\r\nexport const checkGetParameters = (field) => {\r\n const url = window.location.href;\r\n if (url.indexOf(\"?\" + field + \"=\") !== -1) return true;\r\n else if (url.indexOf(\"&\" + field + \"=\") !== -1) return true;\r\n return false;\r\n};\r\n\r\nexport const changeThemeColor = (color) => {\r\n const metaThemeColor = window.document.querySelector(\r\n \"meta[name=theme-color]\"\r\n );\r\n metaThemeColor.setAttribute(\"content\", color);\r\n};\r\n\r\nexport function bufferDecode(value) {\r\n return Uint8Array.from(atob(value), (c) => c.charCodeAt(0));\r\n}\r\n\r\n// ArrayBuffer to URLBase64\r\nexport function bufferEncode(value) {\r\n return btoa(String.fromCharCode.apply(null, new Uint8Array(value)))\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\")\r\n .replace(/=/g, \"\");\r\n}\r\n\r\nexport function pathBack(path) {\r\n const folders =\r\n path !== null\r\n ? path.substr(1).split(\"/\")\r\n : this.props.path.substr(1).split(\"/\");\r\n return \"/\" + folders.slice(0, folders.length - 1).join(\"/\");\r\n}\r\n\r\nexport function filePath(file) {\r\n return file.path === \"/\"\r\n ? file.path + file.name\r\n : file.path + \"/\" + file.name;\r\n}\r\n\r\nexport function hex2bin(hex) {\r\n return parseInt(hex, 16).toString(2).padStart(8, \"0\");\r\n}\r\n\r\nexport function pathJoin(parts, sep) {\r\n const separator = sep || \"/\";\r\n parts = parts.map((part, index) => {\r\n if (index) {\r\n part = part.replace(new RegExp(\"^\" + separator), \"\");\r\n }\r\n if (index !== parts.length - 1) {\r\n part = part.replace(new RegExp(separator + \"$\"), \"\");\r\n }\r\n return part;\r\n });\r\n return parts.join(separator);\r\n}\r\n\r\nexport function basename(path) {\r\n if (!path) {\r\n return \"\";\r\n }\r\n const pathList = path.split(\"/\");\r\n pathList.pop();\r\n return pathList.join(\"/\") === \"\" ? \"/\" : pathList.join(\"/\");\r\n}\r\n\r\nexport function filename(path) {\r\n const pathList = path.split(\"/\");\r\n return pathList.pop();\r\n}\r\n\r\nexport function fileNameNoExt(filename) {\r\n return filename.substring(0, filename.lastIndexOf(\".\")) || filename;\r\n}\r\n\r\nexport function randomStr(length) {\r\n let result = \"\";\r\n const characters =\r\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n const charactersLength = characters.length;\r\n for (let i = 0; i < length; i++) {\r\n result += characters.charAt(\r\n Math.floor(Math.random() * charactersLength)\r\n );\r\n }\r\n return result;\r\n}\r\n\r\nexport function getNumber(base, conditions) {\r\n conditions.forEach((v) => {\r\n if (v) {\r\n base++;\r\n }\r\n });\r\n return base;\r\n}\r\n\r\nexport const isMac = () => {\r\n return navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0;\r\n};\r\n\r\nexport const isMobileSafari = () => {\r\n const ua = window.navigator.userAgent;\r\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\r\n const webkit = !!ua.match(/WebKit/i);\r\n return iOS && webkit && !ua.match(/CriOS/i);\r\n};\r\n\r\nexport function vhCheck() {\r\n const vh = window.innerHeight;\r\n document.documentElement.style.setProperty(\"--vh\", `${vh}px`);\r\n}\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport StorageIcon from \"@material-ui/icons/Storage\";\r\nimport { connect } from \"react-redux\";\r\nimport API from \"../../middleware/Api\";\r\nimport { sizeToString } from \"../../utils\";\r\n\r\nimport {\r\n Divider,\r\n LinearProgress,\r\n Tooltip,\r\n Typography,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport ButtonBase from \"@material-ui/core/ButtonBase\";\r\nimport { withRouter } from \"react-router\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport { Link as RouterLink } from \"react-router-dom\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n refresh: state.viewUpdate.storageRefresh,\r\n isLogin: state.viewUpdate.isLogin,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n };\r\n};\r\n\r\nconst styles = (theme) => ({\r\n iconFix: {\r\n marginLeft: \"32px\",\r\n marginRight: \"17px\",\r\n color: theme.palette.text.secondary,\r\n marginTop: \"2px\",\r\n },\r\n textFix: {\r\n padding: \" 0 0 0 16px\",\r\n },\r\n storageContainer: {\r\n display: \"flex\",\r\n marginTop: \"15px\",\r\n textAlign: \"left\",\r\n marginBottom: \"11px\",\r\n },\r\n detail: {\r\n width: \"100%\",\r\n marginRight: \"35px\",\r\n },\r\n info: {\r\n width: \"131px\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"162px\",\r\n },\r\n marginTop: \"5px\",\r\n },\r\n bar: {\r\n marginTop: \"5px\",\r\n },\r\n stickFooter: {\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n});\r\n\r\n// TODO 使用 hooks 重构\r\nclass StorageBarCompoment extends Component {\r\n state = {\r\n percent: 0,\r\n used: null,\r\n total: null,\r\n showExpand: false,\r\n };\r\n\r\n firstLoad = true;\r\n\r\n componentDidMount = () => {\r\n if (this.firstLoad && this.props.isLogin) {\r\n this.firstLoad = !this.firstLoad;\r\n this.updateStatus();\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n this.firstLoad = false;\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps = (nextProps) => {\r\n if (\r\n (this.props.isLogin && this.props.refresh !== nextProps.refresh) ||\r\n (this.props.isLogin !== nextProps.isLogin && nextProps.isLogin)\r\n ) {\r\n this.updateStatus();\r\n }\r\n };\r\n\r\n updateStatus = () => {\r\n let percent = 0;\r\n API.get(\"/user/storage\")\r\n .then((response) => {\r\n if (response.data.used / response.data.total >= 1) {\r\n percent = 100;\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"navbar.exceedQuota\"),\r\n \"warning\"\r\n );\r\n } else {\r\n percent = (response.data.used / response.data.total) * 100;\r\n }\r\n this.setState({\r\n percent: percent,\r\n used: sizeToString(response.data.used),\r\n total: sizeToString(response.data.total),\r\n });\r\n })\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n .catch(() => {});\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n return (\r\n this.setState({ showExpand: true })}\r\n onMouseLeave={() => this.setState({ showExpand: false })}\r\n className={classes.stickFooter}\r\n >\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {t(\"navbar.storage\")}\r\n \r\n \r\n
\r\n \r\n \r\n {this.state.used === null\r\n ? \" -- \"\r\n : this.state.used}\r\n {\" / \"}\r\n {this.state.total === null\r\n ? \" -- \"\r\n : this.state.total}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nStorageBarCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst StorageBar = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(StorageBarCompoment))));\r\n\r\nexport default StorageBar;\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n AccountArrowRight,\r\n AccountPlus,\r\n DesktopMacDashboard,\r\n HomeAccount,\r\n LogoutVariant,\r\n} from \"mdi-material-ui\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport {\r\n Avatar,\r\n Chip,\r\n Divider,\r\n ListItemIcon,\r\n MenuItem,\r\n Popover,\r\n Typography,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport API from \"../../middleware/Api\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport {\r\n setSessionStatus,\r\n setUserPopover,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n anchorEl: state.viewUpdate.userPopoverAnchorEl,\r\n registerEnabled: state.siteConfig.registerEnabled,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n setUserPopover: (anchor) => {\r\n dispatch(setUserPopover(anchor));\r\n },\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n setSessionStatus: (status) => {\r\n dispatch(setSessionStatus(status));\r\n },\r\n };\r\n};\r\nconst styles = () => ({\r\n avatar: {\r\n width: \"30px\",\r\n height: \"30px\",\r\n },\r\n header: {\r\n display: \"flex\",\r\n padding: \"20px 20px 20px 20px\",\r\n },\r\n largeAvatar: {\r\n height: \"90px\",\r\n width: \"90px\",\r\n },\r\n info: {\r\n marginLeft: \"10px\",\r\n width: \"139px\",\r\n },\r\n badge: {\r\n marginTop: \"10px\",\r\n },\r\n visitorMenu: {\r\n width: 200,\r\n },\r\n});\r\n\r\nclass UserAvatarPopoverCompoment extends Component {\r\n handleClose = () => {\r\n this.props.setUserPopover(null);\r\n };\r\n\r\n openURL = (url) => {\r\n window.location.href = url;\r\n };\r\n\r\n sigOut = () => {\r\n API.delete(\"/user/session/\")\r\n .then(() => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n \"您已退出登录\",\r\n \"success\"\r\n );\r\n Auth.signout();\r\n window.location.reload();\r\n this.props.setSessionStatus(false);\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"warning\"\r\n );\r\n })\r\n .then(() => {\r\n this.handleClose();\r\n });\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const user = Auth.GetUser();\r\n const isAdminPage = pathHelper.isAdminPage(\r\n this.props.location.pathname\r\n );\r\n\r\n return (\r\n \r\n {!Auth.Check() && (\r\n
\r\n \r\n this.props.history.push(\"/login\")}\r\n >\r\n \r\n \r\n \r\n {t(\"login.signIn\")}\r\n \r\n {this.props.registerEnabled && (\r\n \r\n this.props.history.push(\"/signup\")\r\n }\r\n >\r\n \r\n \r\n \r\n {t(\"login.signUp\")}\r\n \r\n )}\r\n
\r\n )}\r\n {Auth.Check() && (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {user.nickname}\r\n \r\n {user.user_name}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {!isAdminPage && (\r\n {\r\n this.handleClose();\r\n this.props.history.push(\r\n \"/profile/\" + user.id\r\n );\r\n }}\r\n >\r\n \r\n \r\n \r\n {t(\"navbar.myProfile\")}\r\n \r\n )}\r\n {user.group.id === 1 && (\r\n {\r\n this.handleClose();\r\n this.props.history.push(\"/admin/home\");\r\n }}\r\n >\r\n \r\n \r\n \r\n {t(\"navbar.dashboard\")}\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n {t(\"login.logout\")}\r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nUserAvatarPopoverCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst UserAvatarPopover = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(\r\n withStyles(styles)(\r\n withRouter(withTranslation()(UserAvatarPopoverCompoment))\r\n )\r\n);\r\n\r\nexport default UserAvatarPopover;\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport { Typography, withStyles } from \"@material-ui/core\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport { setUserPopover } from \"../../redux/explorer\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n isLogin: state.viewUpdate.isLogin,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n setUserPopover: (anchor) => {\r\n dispatch(setUserPopover(anchor));\r\n },\r\n };\r\n};\r\n\r\nconst styles = (theme) => ({\r\n userNav: {\r\n height: \"170px\",\r\n backgroundColor: theme.palette.primary.main,\r\n padding: \"20px 20px 2em\",\r\n backgroundImage:\r\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 900'%3E%3Cpolygon fill='\" +\r\n theme.palette.primary.light.replace(\"#\", \"%23\") +\r\n \"' points='957 450 539 900 1396 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\r\n \"' points='957 450 872.9 900 1396 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\r\n \"' points='-60 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\r\n \"' points='337 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\r\n \"' points='1203 546 1552 900 876 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\r\n \"' points='1203 546 1552 900 1162 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\r\n \"' points='641 695 886 900 367 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.primary.main.replace(\"#\", \"%23\") +\r\n \"' points='587 900 641 695 886 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\r\n \"' points='1710 900 1401 632 1096 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\r\n \"' points='1710 900 1401 632 1365 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\r\n \"' points='1210 900 971 687 725 900'/%3E%3Cpolygon fill='\" +\r\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\r\n \"' points='943 900 1210 900 971 687'/%3E%3C/svg%3E\\\")\",\r\n backgroundSize: \"cover\",\r\n },\r\n avatar: {\r\n display: \"block\",\r\n width: \"70px\",\r\n height: \"70px\",\r\n border: \" 2px solid #fff\",\r\n borderRadius: \"50%\",\r\n overflow: \"hidden\",\r\n boxShadow:\r\n \"0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12)\",\r\n },\r\n avatarImg: {\r\n width: \"66px\",\r\n height: \"66px\",\r\n },\r\n nickName: {\r\n color: \"#fff\",\r\n marginTop: \"15px\",\r\n fontSize: \"17px\",\r\n },\r\n flexAvatar: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n },\r\n groupName: {\r\n color: \"#ffffff\",\r\n opacity: \"0.54\",\r\n },\r\n storageCircle: {\r\n width: \"200px\",\r\n },\r\n});\r\n\r\nclass UserInfoCompoment extends Component {\r\n showUserInfo = (e) => {\r\n this.props.setUserPopover(e.currentTarget);\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const isLogin = Auth.Check(this.props.isLogin);\r\n const user = Auth.GetUser(this.props.isLogin);\r\n\r\n return (\r\n
\r\n
\r\n {/* eslint-disable-next-line */}\r\n \r\n {isLogin && (\r\n \r\n )}\r\n {!isLogin && (\r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n \r\n {isLogin ? user.nickname : t(\"navbar.notLoginIn\")}\r\n \r\n \r\n {isLogin ? user.group.name : t(\"navbar.visitor\")}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nUserInfoCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst UserInfo = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withTranslation()(UserInfoCompoment)));\r\n\r\nexport default UserInfo;\r\n","import React, { Suspense, useCallback, useState } from \"react\";\r\nimport {\r\n Divider,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n makeStyles,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport { Clear, KeyboardArrowRight } from \"@material-ui/icons\";\r\nimport classNames from \"classnames\";\r\nimport FolderShared from \"@material-ui/icons/FolderShared\";\r\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\r\nimport VideoIcon from \"@material-ui/icons/VideoLibraryOutlined\";\r\nimport ImageIcon from \"@material-ui/icons/CollectionsOutlined\";\r\nimport MusicIcon from \"@material-ui/icons/LibraryMusicOutlined\";\r\nimport DocIcon from \"@material-ui/icons/FileCopyOutlined\";\r\nimport { useHistory, useLocation } from \"react-router\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\r\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\r\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport {\r\n Circle,\r\n CircleOutline,\r\n FolderHeartOutline,\r\n Heart,\r\n HeartOutline,\r\n Hexagon,\r\n HexagonOutline,\r\n Hexagram,\r\n HexagramOutline,\r\n Rhombus,\r\n RhombusOutline,\r\n Square,\r\n SquareOutline,\r\n TagPlus,\r\n Triangle,\r\n TriangleOutline,\r\n} from \"mdi-material-ui\";\r\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport API from \"../../middleware/Api\";\r\nimport { navigateTo, searchMyFile, toggleSnackbar } from \"../../redux/explorer\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst ExpansionPanel = withStyles({\r\n root: {\r\n maxWidth: \"100%\",\r\n boxShadow: \"none\",\r\n \"&:not(:last-child)\": {\r\n borderBottom: 0,\r\n },\r\n \"&:before\": {\r\n display: \"none\",\r\n },\r\n \"&$expanded\": { margin: 0 },\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanel);\r\n\r\nconst ExpansionPanelSummary = withStyles({\r\n root: {\r\n minHeight: 0,\r\n padding: 0,\r\n\r\n \"&$expanded\": {\r\n minHeight: 0,\r\n },\r\n },\r\n content: {\r\n maxWidth: \"100%\",\r\n margin: 0,\r\n display: \"block\",\r\n \"&$expanded\": {\r\n margin: \"0\",\r\n },\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanelSummary);\r\n\r\nconst ExpansionPanelDetails = withStyles((theme) => ({\r\n root: {\r\n display: \"block\",\r\n padding: theme.spacing(0),\r\n },\r\n}))(MuiExpansionPanelDetails);\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n expand: {\r\n display: \"none\",\r\n transition: \".15s all ease-in-out\",\r\n },\r\n expanded: {\r\n display: \"block\",\r\n transform: \"rotate(90deg)\",\r\n },\r\n iconFix: {\r\n marginLeft: \"16px\",\r\n },\r\n hiddenButton: {\r\n display: \"none\",\r\n },\r\n subMenu: {\r\n marginLeft: theme.spacing(2),\r\n },\r\n overFlow: {\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n },\r\n}));\r\n\r\nconst icons = {\r\n Circle: Circle,\r\n CircleOutline: CircleOutline,\r\n Heart: Heart,\r\n HeartOutline: HeartOutline,\r\n Hexagon: Hexagon,\r\n HexagonOutline: HexagonOutline,\r\n Hexagram: Hexagram,\r\n HexagramOutline: HexagramOutline,\r\n Rhombus: Rhombus,\r\n RhombusOutline: RhombusOutline,\r\n Square: Square,\r\n SquareOutline: SquareOutline,\r\n Triangle: Triangle,\r\n TriangleOutline: TriangleOutline,\r\n FolderHeartOutline: FolderHeartOutline,\r\n};\r\n\r\nconst AddTag = React.lazy(() => import(\"../Modals/AddTag\"));\r\n\r\nexport default function FileTag() {\r\n const classes = useStyles();\r\n const { t } = useTranslation();\r\n\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n const isHomePage = pathHelper.isHomePage(location.pathname);\r\n\r\n const [tagOpen, setTagOpen] = useState(true);\r\n const [addTagModal, setAddTagModal] = useState(false);\r\n const [tagHover, setTagHover] = useState(null);\r\n const [tags, setTags] = useState(\r\n Auth.GetUser().tags ? Auth.GetUser().tags : []\r\n );\r\n\r\n const dispatch = useDispatch();\r\n const SearchMyFile = useCallback((k, p) => dispatch(searchMyFile(k, p)), [\r\n dispatch,\r\n ]);\r\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\r\n\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n const getIcon = (icon, color) => {\r\n if (icons[icon]) {\r\n const IconComponent = icons[icon];\r\n return (\r\n \r\n );\r\n }\r\n return ;\r\n };\r\n\r\n const submitSuccess = (tag) => {\r\n const newTags = [...tags, tag];\r\n setTags(newTags);\r\n const user = Auth.GetUser();\r\n user.tags = newTags;\r\n Auth.SetUser(user);\r\n };\r\n\r\n const submitDelete = (id) => {\r\n API.delete(\"/tag/\" + id)\r\n .then(() => {\r\n const newTags = tags.filter((v) => {\r\n return v.id !== id;\r\n });\r\n setTags(newTags);\r\n const user = Auth.GetUser();\r\n user.tags = newTags;\r\n Auth.SetUser(user);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n \r\n setAddTagModal(false)}\r\n />\r\n \r\n isHomePage && setTagOpen(!tagOpen)}\r\n >\r\n \r\n \r\n !isHomePage && history.push(\"/home?path=%2F\")\r\n }\r\n >\r\n \r\n \r\n {!(tagOpen && isHomePage) && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n setTagHover(null)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {[\r\n {\r\n key: t(\"navbar.videos\"),\r\n id: \"video\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n key: t(\"navbar.photos\"),\r\n id: \"image\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n key: t(\"navbar.music\"),\r\n id: \"audio\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n key: t(\"navbar.documents\"),\r\n id: \"doc\",\r\n icon: (\r\n \r\n ),\r\n },\r\n ].map((v) => (\r\n \r\n SearchMyFile(v.id + \"/internal\", \"\")\r\n }\r\n >\r\n \r\n {v.icon}\r\n \r\n \r\n \r\n ))}\r\n {tags.map((v) => (\r\n setTagHover(v.id)}\r\n onClick={() => {\r\n if (v.type === 0) {\r\n SearchMyFile(\"tag/\" + v.id, \"\");\r\n } else {\r\n NavigateTo(v.expression);\r\n }\r\n }}\r\n >\r\n \r\n {getIcon(\r\n v.type === 0\r\n ? v.icon\r\n : \"FolderHeartOutline\",\r\n v.type === 0 ? v.color : null\r\n )}\r\n \r\n \r\n\r\n {tagHover === v.id && (\r\n submitDelete(v.id)}\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n ))}\r\n\r\n setAddTagModal(true)}>\r\n \r\n \r\n \r\n \r\n \r\n {\" \"}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n makeStyles,\r\n} from \"@material-ui/core\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n content: {\r\n minWidth: 250,\r\n },\r\n}));\r\n\r\nexport default function OptionSelector() {\r\n const { t } = useTranslation(\"common\");\r\n const classes = useStyles();\r\n const option = useSelector((state) => state.viewUpdate.modals.option);\r\n\r\n return (\r\n \r\n \r\n {option && option.title}\r\n \r\n \r\n \r\n {option &&\r\n option.options.map((o) => (\r\n option && option.callback(o)}\r\n button\r\n >\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport SaveIcon from \"@material-ui/icons/Save\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\nimport AutoHidden from \"./AutoHidden\";\r\nimport statusHelper from \"../../utils/page\";\r\nimport Fab from \"@material-ui/core/Fab\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport { green } from \"@material-ui/core/colors\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n fab: {\r\n margin: 0,\r\n top: \"auto\",\r\n right: 20,\r\n bottom: 20,\r\n left: \"auto\",\r\n zIndex: 5,\r\n position: \"fixed\",\r\n },\r\n badge: {\r\n position: \"absolute\",\r\n bottom: 26,\r\n top: \"auto\",\r\n zIndex: 9999,\r\n right: 7,\r\n },\r\n fabProgress: {\r\n color: green[500],\r\n position: \"absolute\",\r\n top: -6,\r\n left: -6,\r\n zIndex: 1,\r\n },\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: \"relative\",\r\n },\r\n buttonSuccess: {\r\n backgroundColor: green[500],\r\n \"&:hover\": {\r\n backgroundColor: green[700],\r\n },\r\n },\r\n}));\r\n\r\nexport default function SaveButton(props) {\r\n const classes = useStyles();\r\n const buttonClassname = clsx({\r\n [classes.buttonSuccess]: props.status === \"success\",\r\n });\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n {props.status === \"success\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {props.status === \"loading\" && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { ChunkProgress } from \"./uploader/chunk\";\r\n\r\nexport enum PolicyType {\r\n local = \"local\",\r\n remote = \"remote\",\r\n oss = \"oss\",\r\n qiniu = \"qiniu\",\r\n onedrive = \"onedrive\",\r\n cos = \"cos\",\r\n upyun = \"upyun\",\r\n s3 = \"s3\",\r\n}\r\n\r\nexport interface Policy {\r\n id: number;\r\n name: string;\r\n allowedSuffix: Nullable;\r\n maxSize: number;\r\n type: PolicyType;\r\n}\r\n\r\nexport enum TaskType {\r\n file,\r\n resumeHint,\r\n}\r\n\r\nexport interface Task {\r\n type: TaskType;\r\n name: string;\r\n size: number;\r\n policy: Policy;\r\n dst: string;\r\n file: File;\r\n child?: Task[];\r\n session?: UploadCredential;\r\n chunkProgress: ChunkProgress[];\r\n resumed: boolean;\r\n}\r\n\r\ntype Nullable = T | null;\r\n\r\nexport interface Response {\r\n code: number;\r\n data: T;\r\n msg: string;\r\n error: string;\r\n}\r\n\r\nexport interface UploadSessionRequest {\r\n path: string;\r\n size: number;\r\n name: string;\r\n policy_id: number;\r\n last_modified?: number;\r\n}\r\n\r\nexport interface UploadCredential {\r\n sessionID: string;\r\n expires: number;\r\n chunkSize: number;\r\n uploadURLs: string[];\r\n credential: string;\r\n uploadID: string;\r\n callback: string;\r\n policy: string;\r\n ak: string;\r\n keyTime: string;\r\n path: string;\r\n completeURL: string;\r\n}\r\n\r\nexport interface OneDriveError {\r\n error: {\r\n code: string;\r\n message: string;\r\n innererror?: {\r\n code: string;\r\n };\r\n };\r\n}\r\n\r\nexport interface OneDriveChunkResponse {\r\n expirationDateTime: string;\r\n nextExpectedRanges: string[];\r\n}\r\n\r\nexport interface QiniuChunkResponse {\r\n etag: string;\r\n md5: string;\r\n}\r\n\r\nexport interface QiniuError {\r\n error: string;\r\n}\r\n\r\nexport interface QiniuPartsInfo {\r\n etag: string;\r\n partNumber: number;\r\n}\r\n\r\nexport interface QiniuFinishUploadRequest {\r\n parts: QiniuPartsInfo[];\r\n}\r\n\r\nexport interface UpyunError {\r\n message: string;\r\n code: number;\r\n}\r\n\r\nexport interface S3Part {\r\n ETag: string;\r\n PartNumber: number;\r\n}\r\n","// 所有 Uploader 的基类\r\nimport { PolicyType, Task } from \"../types\";\r\nimport UploadManager from \"../index\";\r\nimport Logger from \"../logger\";\r\nimport { validate } from \"../utils/validator\";\r\nimport { CancelToken } from \"../utils/request\";\r\nimport axios, { CancelTokenSource } from \"axios\";\r\nimport { createUploadSession, deleteUploadSession } from \"../api\";\r\nimport * as utils from \"../utils\";\r\nimport { RequestCanceledError, UploaderError } from \"../errors\";\r\n\r\nexport enum Status {\r\n added,\r\n resumable,\r\n initialized,\r\n queued,\r\n preparing,\r\n processing,\r\n finishing,\r\n finished,\r\n error,\r\n canceled,\r\n}\r\n\r\nexport interface UploadHandlers {\r\n onTransition: (newStatus: Status) => void;\r\n onError: (err: Error) => void;\r\n onProgress: (data: UploadProgress) => void;\r\n onMsg: (msg: string, color: string) => void;\r\n}\r\n\r\nexport interface UploadProgress {\r\n total: ProgressCompose;\r\n chunks?: ProgressCompose[];\r\n}\r\n\r\nexport interface ProgressCompose {\r\n size: number;\r\n loaded: number;\r\n percent: number;\r\n fromCache?: boolean;\r\n}\r\n\r\nexport interface Progress {\r\n total: number;\r\n loaded: number;\r\n}\r\n\r\nconst resumePolicy = [\r\n PolicyType.local,\r\n PolicyType.remote,\r\n PolicyType.qiniu,\r\n PolicyType.oss,\r\n PolicyType.onedrive,\r\n PolicyType.s3,\r\n];\r\nconst deleteUploadSessionDelay = 500;\r\n\r\nexport default abstract class Base {\r\n public child?: Base[];\r\n public status: Status = Status.added;\r\n public error?: Error;\r\n\r\n public id = ++Base.id;\r\n private static id = 0;\r\n\r\n protected logger: Logger;\r\n protected subscriber: UploadHandlers;\r\n // 用于取消请求\r\n protected cancelToken: CancelTokenSource = CancelToken.source();\r\n protected progress: UploadProgress;\r\n\r\n public lastTime = Date.now();\r\n public startTime = Date.now();\r\n\r\n constructor(public task: Task, protected manager: UploadManager) {\r\n this.logger = new Logger(\r\n this.manager.logger.level,\r\n \"UPLOADER\",\r\n this.id\r\n );\r\n this.logger.info(\"Initialize new uploader for task: \", task);\r\n this.subscriber = {\r\n /* eslint-disable @typescript-eslint/no-empty-function */\r\n onTransition: (newStatus: Status) => {},\r\n onError: (err: Error) => {},\r\n onProgress: (data: UploadProgress) => {},\r\n onMsg: (msg, color: string) => {},\r\n /* eslint-enable @typescript-eslint/no-empty-function */\r\n };\r\n }\r\n\r\n public subscribe = (handlers: UploadHandlers) => {\r\n this.subscriber = handlers;\r\n };\r\n\r\n public start = async () => {\r\n this.logger.info(\"Activate uploading task\");\r\n this.transit(Status.initialized);\r\n this.lastTime = this.startTime = Date.now();\r\n\r\n try {\r\n validate(this.task.file, this.task.policy);\r\n } catch (e) {\r\n this.logger.error(\"File validate failed with error:\", e);\r\n this.setError(e);\r\n return;\r\n }\r\n\r\n this.logger.info(\"Enqueued in manager pool\");\r\n this.transit(Status.queued);\r\n this.manager.pool.enqueue(this).catch((e) => {\r\n this.logger.info(\"Upload task failed with error:\", e);\r\n this.setError(e);\r\n });\r\n };\r\n\r\n public run = async () => {\r\n this.logger.info(\"Start upload task, create upload session...\");\r\n this.transit(Status.preparing);\r\n const cachedInfo = utils.getResumeCtx(this.task, this.logger);\r\n if (cachedInfo == null) {\r\n this.task.session = await createUploadSession(\r\n {\r\n path: this.task.dst,\r\n size: this.task.file.size,\r\n name: this.task.file.name,\r\n policy_id: this.task.policy.id,\r\n last_modified: this.task.file.lastModified,\r\n },\r\n this.cancelToken.token\r\n );\r\n this.logger.info(\"Upload session created:\", this.task.session);\r\n } else {\r\n this.task.session = cachedInfo.session;\r\n this.task.resumed = true;\r\n this.task.chunkProgress = cachedInfo.chunkProgress;\r\n this.logger.info(\"Resume upload from cached ctx:\", cachedInfo);\r\n }\r\n\r\n this.transit(Status.processing);\r\n await this.upload();\r\n await this.afterUpload();\r\n utils.removeResumeCtx(this.task, this.logger);\r\n this.transit(Status.finished);\r\n this.logger.info(\"Upload task completed\");\r\n };\r\n\r\n public abstract async upload(): Promise;\r\n protected async afterUpload(): Promise {\r\n return;\r\n }\r\n\r\n public cancel = async () => {\r\n if (this.status === Status.finished) {\r\n return;\r\n }\r\n\r\n this.cancelToken.cancel();\r\n await this.cancelUploadSession();\r\n this.transit(Status.canceled);\r\n };\r\n\r\n public reset = () => {\r\n this.cancelToken = axios.CancelToken.source();\r\n this.progress = {\r\n total: {\r\n size: 0,\r\n loaded: 0,\r\n percent: 0,\r\n },\r\n };\r\n };\r\n\r\n protected setError(e: Error) {\r\n if (\r\n !(e instanceof UploaderError && e.Retryable()) ||\r\n !resumePolicy.includes(this.task.policy.type)\r\n ) {\r\n this.logger.warn(\"Non-resume error occurs, clean resume ctx cache\");\r\n this.cancelUploadSession();\r\n }\r\n\r\n if (!(e instanceof RequestCanceledError)) {\r\n this.status = Status.error;\r\n this.error = e;\r\n this.subscriber.onError(e);\r\n }\r\n }\r\n\r\n protected cancelUploadSession = (): Promise => {\r\n return new Promise((resolve) => {\r\n utils.removeResumeCtx(this.task, this.logger);\r\n if (this.task.session) {\r\n setTimeout(() => {\r\n deleteUploadSession(this.task.session!?.sessionID)\r\n .catch((e) => {\r\n this.logger.warn(\r\n \"Failed to cancel upload session: \",\r\n e\r\n );\r\n })\r\n .finally(() => {\r\n resolve();\r\n });\r\n }, deleteUploadSessionDelay);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n };\r\n\r\n protected transit(status: Status) {\r\n this.status = status;\r\n this.subscriber.onTransition(status);\r\n }\r\n\r\n public getProgressInfoItem(\r\n loaded: number,\r\n size: number,\r\n fromCache?: boolean\r\n ): ProgressCompose {\r\n return {\r\n size,\r\n loaded,\r\n percent: (loaded / size) * 100,\r\n ...(fromCache == null ? {} : { fromCache }),\r\n };\r\n }\r\n\r\n public key(): string {\r\n return utils.getResumeCtxKey(this.task);\r\n }\r\n}\r\n","export type LogLevel = \"INFO\" | \"WARN\" | \"ERROR\" | \"OFF\";\r\n\r\nexport default class Logger {\r\n constructor(\r\n public level: LogLevel = \"OFF\",\r\n private prefix = \"UPLOAD\",\r\n private id: number = 1\r\n ) {}\r\n\r\n private getPrintPrefix(level: LogLevel) {\r\n return `Cloudreve-Uploader [${level}][${this.prefix}#${this.id}]:`;\r\n }\r\n\r\n info(...args: unknown[]) {\r\n const allowLevel: LogLevel[] = [\"INFO\"];\r\n if (allowLevel.includes(this.level)) {\r\n // eslint-disable-next-line no-console\r\n console.log(this.getPrintPrefix(\"INFO\"), ...args);\r\n }\r\n }\r\n\r\n warn(...args: unknown[]) {\r\n const allowLevel: LogLevel[] = [\"INFO\", \"WARN\"];\r\n if (allowLevel.includes(this.level)) {\r\n // eslint-disable-next-line no-console\r\n console.warn(this.getPrintPrefix(\"WARN\"), ...args);\r\n }\r\n }\r\n\r\n error(...args: unknown[]) {\r\n const allowLevel: LogLevel[] = [\"INFO\", \"WARN\", \"ERROR\"];\r\n if (allowLevel.includes(this.level)) {\r\n // eslint-disable-next-line no-console\r\n console.error(this.getPrintPrefix(\"ERROR\"), ...args);\r\n }\r\n }\r\n}\r\n","import {\r\n OneDriveChunkResponse,\r\n QiniuChunkResponse,\r\n QiniuFinishUploadRequest,\r\n QiniuPartsInfo,\r\n S3Part,\r\n UploadCredential,\r\n UploadSessionRequest,\r\n} from \"../types\";\r\nimport { OBJtoXML, request, requestAPI } from \"../utils\";\r\nimport {\r\n COSUploadCallbackError,\r\n COSUploadError,\r\n CreateUploadSessionError,\r\n DeleteUploadSessionError,\r\n HTTPError,\r\n LocalChunkUploadError,\r\n OneDriveChunkError,\r\n OneDriveFinishUploadError,\r\n QiniuChunkError,\r\n QiniuFinishUploadError,\r\n S3LikeChunkError,\r\n S3LikeFinishUploadError,\r\n S3LikeUploadCallbackError,\r\n SlaveChunkUploadError,\r\n UpyunUploadError,\r\n} from \"../errors\";\r\nimport { ChunkInfo, ChunkProgress } from \"../uploader/chunk\";\r\nimport { Progress } from \"../uploader/base\";\r\nimport { CancelToken } from \"axios\";\r\n\r\nexport async function createUploadSession(\r\n req: UploadSessionRequest,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await requestAPI(\"file/upload\", {\r\n method: \"put\",\r\n data: req,\r\n cancelToken: cancel,\r\n });\r\n\r\n if (res.data.code != 0) {\r\n throw new CreateUploadSessionError(res.data);\r\n }\r\n\r\n return res.data.data;\r\n}\r\n\r\nexport async function deleteUploadSession(id: string): Promise {\r\n const res = await requestAPI(`file/upload/${id}`, {\r\n method: \"delete\",\r\n });\r\n\r\n if (res.data.code != 0) {\r\n throw new DeleteUploadSessionError(res.data);\r\n }\r\n\r\n return res.data.data;\r\n}\r\n\r\nexport async function localUploadChunk(\r\n sessionID: string,\r\n chunk: ChunkInfo,\r\n onProgress: (p: Progress) => void,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await requestAPI(\r\n `file/upload/${sessionID}/${chunk.index}`,\r\n {\r\n method: \"post\",\r\n headers: { \"content-type\": \"application/octet-stream\" },\r\n data: chunk.chunk,\r\n onUploadProgress: (progressEvent) => {\r\n onProgress({\r\n loaded: progressEvent.loaded,\r\n total: progressEvent.total,\r\n });\r\n },\r\n cancelToken: cancel,\r\n }\r\n );\r\n\r\n if (res.data.code != 0) {\r\n throw new LocalChunkUploadError(res.data, chunk.index);\r\n }\r\n\r\n return res.data.data;\r\n}\r\n\r\nexport async function slaveUploadChunk(\r\n url: string,\r\n credential: string,\r\n chunk: ChunkInfo,\r\n onProgress: (p: Progress) => void,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await request(`${url}?chunk=${chunk.index}`, {\r\n method: \"post\",\r\n headers: {\r\n \"content-type\": \"application/octet-stream\",\r\n Authorization: credential,\r\n },\r\n data: chunk.chunk,\r\n onUploadProgress: (progressEvent) => {\r\n onProgress({\r\n loaded: progressEvent.loaded,\r\n total: progressEvent.total,\r\n });\r\n },\r\n cancelToken: cancel,\r\n });\r\n\r\n if (res.data.code != 0) {\r\n throw new SlaveChunkUploadError(res.data, chunk.index);\r\n }\r\n\r\n return res.data.data;\r\n}\r\n\r\nexport async function oneDriveUploadChunk(\r\n url: string,\r\n range: string, // if range is empty, this will be an request to query the session status\r\n chunk: ChunkInfo,\r\n onProgress: (p: Progress) => void,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await request(url, {\r\n method: range === \"\" ? \"get\" : \"put\",\r\n headers: {\r\n \"content-type\": \"application/octet-stream\",\r\n ...(range !== \"\" && { \"content-range\": range }),\r\n },\r\n data: chunk.chunk,\r\n onUploadProgress: (progressEvent) => {\r\n onProgress({\r\n loaded: progressEvent.loaded,\r\n total: progressEvent.total,\r\n });\r\n },\r\n cancelToken: cancel,\r\n }).catch((e) => {\r\n if (e instanceof HTTPError && e.response) {\r\n throw new OneDriveChunkError(e.response.data);\r\n }\r\n\r\n throw e;\r\n });\r\n\r\n return res.data;\r\n}\r\n\r\nexport async function finishOneDriveUpload(\r\n sessionID: string,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await requestAPI(\r\n `callback/onedrive/finish/${sessionID}`,\r\n {\r\n method: \"post\",\r\n data: \"{}\",\r\n cancelToken: cancel,\r\n }\r\n );\r\n\r\n if (res.data.code != 0) {\r\n throw new OneDriveFinishUploadError(res.data);\r\n }\r\n\r\n return res.data.data;\r\n}\r\n\r\nexport async function s3LikeUploadChunk(\r\n url: string,\r\n chunk: ChunkInfo,\r\n onProgress: (p: Progress) => void,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await request(url, {\r\n method: \"put\",\r\n headers: {\r\n \"content-type\": \"application/octet-stream\",\r\n },\r\n data: chunk.chunk,\r\n onUploadProgress: (progressEvent) => {\r\n onProgress({\r\n loaded: progressEvent.loaded,\r\n total: progressEvent.total,\r\n });\r\n },\r\n cancelToken: cancel,\r\n responseType: \"document\",\r\n transformResponse: undefined,\r\n }).catch((e) => {\r\n if (e instanceof HTTPError && e.response) {\r\n throw new S3LikeChunkError(e.response.data);\r\n }\r\n\r\n throw e;\r\n });\r\n\r\n return res.headers.etag;\r\n}\r\n\r\nexport async function s3LikeFinishUpload(\r\n url: string,\r\n isOss: boolean,\r\n chunks: ChunkProgress[],\r\n cancel: CancelToken\r\n): Promise {\r\n let body = \"\";\r\n if (!isOss) {\r\n body += \"\";\r\n chunks.forEach((chunk) => {\r\n body += \"\";\r\n const part: S3Part = {\r\n PartNumber: chunk.index + 1,\r\n ETag: chunk.etag!,\r\n };\r\n body += OBJtoXML(part);\r\n body += \"\";\r\n });\r\n body += \"\";\r\n }\r\n\r\n const res = await request(url, {\r\n method: \"post\",\r\n cancelToken: cancel,\r\n responseType: \"document\",\r\n transformResponse: undefined,\r\n data: body,\r\n headers: isOss\r\n ? {\r\n \"content-type\": \"application/octet-stream\",\r\n \"x-oss-forbid-overwrite\": \"true\",\r\n \"x-oss-complete-all\": \"yes\",\r\n }\r\n : {\r\n \"content-type\": \"application/xhtml+xml\",\r\n },\r\n validateStatus: function (status) {\r\n return status == 200;\r\n },\r\n }).catch((e) => {\r\n if (e instanceof HTTPError && e.response) {\r\n throw new S3LikeFinishUploadError(e.response.data);\r\n }\r\n\r\n throw e;\r\n });\r\n\r\n return res.data;\r\n}\r\n\r\nexport async function qiniuDriveUploadChunk(\r\n url: string,\r\n upToken: string,\r\n chunk: ChunkInfo,\r\n onProgress: (p: Progress) => void,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await request(`${url}/${chunk.index + 1}`, {\r\n method: \"put\",\r\n headers: {\r\n \"content-type\": \"application/octet-stream\",\r\n authorization: \"UpToken \" + upToken,\r\n },\r\n data: chunk.chunk,\r\n onUploadProgress: (progressEvent) => {\r\n onProgress({\r\n loaded: progressEvent.loaded,\r\n total: progressEvent.total,\r\n });\r\n },\r\n cancelToken: cancel,\r\n }).catch((e) => {\r\n if (e instanceof HTTPError && e.response) {\r\n throw new QiniuChunkError(e.response.data);\r\n }\r\n\r\n throw e;\r\n });\r\n\r\n return res.data;\r\n}\r\n\r\nexport async function qiniuFinishUpload(\r\n url: string,\r\n upToken: string,\r\n chunks: ChunkProgress[],\r\n cancel: CancelToken\r\n): Promise {\r\n const content: QiniuFinishUploadRequest = {\r\n parts: chunks.map(\r\n (chunk): QiniuPartsInfo => {\r\n return {\r\n etag: chunk.etag!,\r\n partNumber: chunk.index + 1,\r\n };\r\n }\r\n ),\r\n };\r\n\r\n const res = await request(`${url}`, {\r\n method: \"post\",\r\n headers: {\r\n \"content-type\": \"application/json\",\r\n authorization: \"UpToken \" + upToken,\r\n },\r\n data: content,\r\n cancelToken: cancel,\r\n }).catch((e) => {\r\n if (e instanceof HTTPError && e.response) {\r\n throw new QiniuFinishUploadError(e.response.data);\r\n }\r\n\r\n throw e;\r\n });\r\n\r\n return res.data;\r\n}\r\n\r\nexport async function cosFormUploadChunk(\r\n url: string,\r\n file: File,\r\n policy: string,\r\n path: string,\r\n callback: string,\r\n sessionID: string,\r\n keyTime: string,\r\n credential: string,\r\n ak: string,\r\n onProgress: (p: Progress) => void,\r\n cancel: CancelToken\r\n): Promise {\r\n const bodyFormData = new FormData();\r\n bodyFormData.append(\"policy\", policy);\r\n bodyFormData.append(\"key\", path);\r\n bodyFormData.append(\"x-cos-meta-callback\", callback);\r\n bodyFormData.append(\"x-cos-meta-key\", sessionID);\r\n bodyFormData.append(\"q-sign-algorithm\", \"sha1\");\r\n bodyFormData.append(\"q-key-time\", keyTime);\r\n bodyFormData.append(\"q-ak\", ak);\r\n bodyFormData.append(\"q-signature\", credential);\r\n bodyFormData.append(\"name\", file.name);\r\n // File must be the last element in the form\r\n bodyFormData.append(\"file\", file);\r\n\r\n const res = await request(`${url}`, {\r\n method: \"post\",\r\n headers: {\r\n \"content-type\": \"multipart/form-data\",\r\n },\r\n data: bodyFormData,\r\n onUploadProgress: (progressEvent) => {\r\n onProgress({\r\n loaded: progressEvent.loaded,\r\n total: progressEvent.total,\r\n });\r\n },\r\n cancelToken: cancel,\r\n responseType: \"document\",\r\n transformResponse: undefined,\r\n }).catch((e) => {\r\n if (e instanceof HTTPError && e.response) {\r\n throw new COSUploadError(e.response.data);\r\n }\r\n\r\n throw e;\r\n });\r\n\r\n return res.data;\r\n}\r\n\r\nexport async function cosUploadCallback(\r\n sessionID: string,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await requestAPI(`callback/cos/${sessionID}`, {\r\n method: \"get\",\r\n data: \"{}\",\r\n cancelToken: cancel,\r\n });\r\n\r\n if (res.data.code != 0) {\r\n throw new COSUploadCallbackError(res.data);\r\n }\r\n\r\n return res.data.data;\r\n}\r\n\r\nexport async function upyunFormUploadChunk(\r\n url: string,\r\n file: File,\r\n policy: string,\r\n credential: string,\r\n onProgress: (p: Progress) => void,\r\n cancel: CancelToken\r\n): Promise {\r\n const bodyFormData = new FormData();\r\n bodyFormData.append(\"policy\", policy);\r\n bodyFormData.append(\"authorization\", credential);\r\n // File must be the last element in the form\r\n bodyFormData.append(\"file\", file);\r\n\r\n const res = await request(`${url}`, {\r\n method: \"post\",\r\n headers: {\r\n \"content-type\": \"multipart/form-data\",\r\n },\r\n data: bodyFormData,\r\n onUploadProgress: (progressEvent) => {\r\n onProgress({\r\n loaded: progressEvent.loaded,\r\n total: progressEvent.total,\r\n });\r\n },\r\n cancelToken: cancel,\r\n }).catch((e) => {\r\n if (e instanceof HTTPError && e.response) {\r\n throw new UpyunUploadError(e.response.data);\r\n }\r\n\r\n throw e;\r\n });\r\n\r\n return res.data;\r\n}\r\n\r\nexport async function s3LikeUploadCallback(\r\n sessionID: string,\r\n cancel: CancelToken\r\n): Promise {\r\n const res = await requestAPI(`callback/s3/${sessionID}`, {\r\n method: \"get\",\r\n data: \"{}\",\r\n cancelToken: cancel,\r\n });\r\n\r\n if (res.data.code != 0) {\r\n throw new S3LikeUploadCallbackError(res.data);\r\n }\r\n\r\n return res.data.data;\r\n}\r\n","import { Policy, PolicyType, Task, TaskType } from \"./types\";\r\nimport Logger, { LogLevel } from \"./logger\";\r\nimport { UnknownPolicyError, UploaderError, UploaderErrorName } from \"./errors\";\r\nimport Base from \"./uploader/base\";\r\nimport Local from \"./uploader/local\";\r\nimport { Pool } from \"./utils/pool\";\r\nimport {\r\n cleanupResumeCtx,\r\n getAllFileEntries,\r\n getDirectoryUploadDst,\r\n getFileInput,\r\n isFileDrop,\r\n listResumeCtx,\r\n} from \"./utils\";\r\nimport Remote from \"./uploader/remote\";\r\nimport OneDrive from \"./uploader/onedrive\";\r\nimport OSS from \"./uploader/oss\";\r\nimport Qiniu from \"./uploader/qiniu\";\r\nimport COS from \"./uploader/cos\";\r\nimport Upyun from \"./uploader/upyun\";\r\nimport S3 from \"./uploader/s3\";\r\nimport ResumeHint from \"./uploader/placeholder\";\r\n\r\nexport interface Option {\r\n logLevel: LogLevel;\r\n concurrentLimit: number;\r\n dropZone?: HTMLElement;\r\n onDropOver?: (e: DragEvent) => void;\r\n onDropLeave?: (e: DragEvent) => void;\r\n onToast: (type: string, msg: string) => void;\r\n onDropFileAdded?: (uploaders: Base[]) => void;\r\n}\r\n\r\nexport enum SelectType {\r\n File,\r\n Directory,\r\n}\r\n\r\nexport default class UploadManager {\r\n public logger: Logger;\r\n public pool: Pool;\r\n private static id = 0;\r\n private policy?: Policy;\r\n private fileInput: HTMLInputElement;\r\n private directoryInput: HTMLInputElement;\r\n private id = ++UploadManager.id;\r\n // used for proactive upload (drop, paste)\r\n private currentPath = \"/\";\r\n\r\n constructor(private o: Option) {\r\n this.logger = new Logger(o.logLevel, \"MANAGER\");\r\n this.logger.info(`Initialized with log level: ${o.logLevel}`);\r\n\r\n this.pool = new Pool(o.concurrentLimit);\r\n this.fileInput = getFileInput(this.id, false);\r\n this.directoryInput = getFileInput(this.id, true);\r\n\r\n if (o.dropZone) {\r\n this.logger.info(`Drag and drop container set to:`, o.dropZone);\r\n o.dropZone.addEventListener(\"dragenter\", (e) => {\r\n if (isFileDrop(e)) {\r\n e.preventDefault();\r\n if (o.onDropOver) {\r\n o.onDropOver(e);\r\n }\r\n }\r\n });\r\n\r\n o.dropZone.addEventListener(\"dragleave\", (e) => {\r\n if (isFileDrop(e)) {\r\n e.preventDefault();\r\n if (o.onDropLeave) {\r\n o.onDropLeave(e);\r\n }\r\n }\r\n });\r\n\r\n o.dropZone.addEventListener(\"drop\", this.onFileDroppedIn);\r\n }\r\n }\r\n\r\n changeConcurrentLimit = (newLimit: number) => {\r\n this.pool.limit = newLimit;\r\n };\r\n\r\n dispatchUploader(task: Task): Base {\r\n if (task.type == TaskType.resumeHint) {\r\n return new ResumeHint(task, this);\r\n }\r\n\r\n switch (task.policy.type) {\r\n case PolicyType.local:\r\n return new Local(task, this);\r\n case PolicyType.remote:\r\n return new Remote(task, this);\r\n case PolicyType.onedrive:\r\n return new OneDrive(task, this);\r\n case PolicyType.oss:\r\n return new OSS(task, this);\r\n case PolicyType.qiniu:\r\n return new Qiniu(task, this);\r\n case PolicyType.cos:\r\n return new COS(task, this);\r\n case PolicyType.upyun:\r\n return new Upyun(task, this);\r\n case PolicyType.s3:\r\n return new S3(task, this);\r\n default:\r\n throw new UnknownPolicyError(\r\n \"Unknown policy type.\",\r\n task.policy\r\n );\r\n }\r\n }\r\n\r\n // 设定当前存储策略\r\n public setPolicy(p: Policy, path: string) {\r\n this.policy = p;\r\n this.currentPath = path;\r\n if (p == undefined) {\r\n this.logger.info(`Currently no policy selected`);\r\n return;\r\n }\r\n\r\n this.logger.info(`Switching policy to:`, p);\r\n\r\n if (p.allowedSuffix != undefined && p.allowedSuffix.length > 0) {\r\n const acceptVal = p.allowedSuffix\r\n .map((v) => {\r\n return \".\" + v;\r\n })\r\n .join(\",\");\r\n this.logger.info(`Set allowed file suffix to ${acceptVal}`);\r\n this.fileInput.setAttribute(\"accept\", acceptVal);\r\n } else {\r\n this.logger.info(`Set allowed file suffix to *`);\r\n this.fileInput.removeAttribute(\"accept\");\r\n }\r\n }\r\n\r\n // 选择文件\r\n public select = (dst: string, type = SelectType.File): Promise => {\r\n return new Promise((resolve) => {\r\n if (this.policy == undefined) {\r\n this.logger.warn(\r\n `Calling file selector while no policy is set`\r\n );\r\n throw new UploaderError(\r\n UploaderErrorName.NoPolicySelected,\r\n \"No policy selected.\"\r\n );\r\n }\r\n\r\n this.fileInput.onchange = (ev: Event) =>\r\n this.fileSelectCallback(ev, dst, resolve);\r\n this.directoryInput.onchange = (ev: Event) =>\r\n this.fileSelectCallback(ev, dst, resolve);\r\n this.fileInput.value = \"\";\r\n this.directoryInput.value = \"\";\r\n type == SelectType.File\r\n ? this.fileInput.click()\r\n : this.directoryInput.click();\r\n });\r\n };\r\n\r\n public resumeTasks = (): Base[] => {\r\n const tasks = listResumeCtx(this.logger);\r\n if (tasks.length > 0) {\r\n this.logger.info(\r\n `Resumed ${tasks.length} unfinished task(s) from local storage:`,\r\n tasks\r\n );\r\n }\r\n return tasks\r\n .filter(\r\n (t) =>\r\n t.chunkProgress.length > 0 && t.chunkProgress[0].loaded > 0\r\n )\r\n .map((t) =>\r\n this.dispatchUploader({ ...t, type: TaskType.resumeHint })\r\n );\r\n };\r\n\r\n public cleanupSessions = () => {\r\n cleanupResumeCtx(this.logger);\r\n };\r\n\r\n private fileSelectCallback = (\r\n ev: Event | File[],\r\n dst: string,\r\n resolve: (value?: Base[] | PromiseLike | undefined) => void\r\n ) => {\r\n let files: File[] = [];\r\n if (ev instanceof Event) {\r\n const target = ev.target as HTMLInputElement;\r\n if (!ev || !target || !target.files) return;\r\n if (target.files.length > 0) {\r\n files = Array.from(target.files);\r\n }\r\n } else {\r\n files = ev as File[];\r\n }\r\n\r\n if (files.length > 0) {\r\n resolve(\r\n files.map(\r\n (file): Base =>\r\n this.dispatchUploader({\r\n type: TaskType.file,\r\n policy: this.policy as Policy,\r\n dst: getDirectoryUploadDst(dst, file),\r\n file: file,\r\n size: file.size,\r\n name: file.name,\r\n chunkProgress: [],\r\n resumed: false,\r\n })\r\n )\r\n );\r\n }\r\n };\r\n\r\n private onFileDroppedIn = async (e: DragEvent) => {\r\n const containFile =\r\n e.dataTransfer && e.dataTransfer.types.includes(\"Files\");\r\n if (containFile) {\r\n this.o.onDropLeave && this.o.onDropLeave(e);\r\n const items = await getAllFileEntries(e.dataTransfer!.items);\r\n console.log(items);\r\n const uploaders = await new Promise((resolve) =>\r\n this.fileSelectCallback(items, this.currentPath, resolve)\r\n );\r\n this.o.onDropFileAdded && this.o.onDropFileAdded(uploaders);\r\n }\r\n };\r\n}\r\n","import Base, { Status, UploadProgress } from \"./base\";\r\nimport * as utils from \"../utils\";\r\nimport { Task, TaskType } from \"../types\";\r\nimport UploadManager from \"../index\";\r\nimport Logger from \"../logger\";\r\n\r\nexport interface ChunkProgress {\r\n loaded: number;\r\n index: number;\r\n etag?: string;\r\n}\r\n\r\nexport interface ChunkInfo {\r\n chunk: Blob;\r\n index: number;\r\n}\r\n\r\nexport default abstract class Chunk extends Base {\r\n protected chunks: Blob[];\r\n\r\n public upload = async () => {\r\n this.logger.info(\"Preparing uploading file chunks.\");\r\n this.initBeforeUploadChunks();\r\n\r\n this.logger.info(\"Starting uploading file chunks:\", this.chunks);\r\n this.updateLocalCache();\r\n for (let i = 0; i < this.chunks.length; i++) {\r\n if (\r\n this.task.chunkProgress[i].loaded < this.chunks[i].size ||\r\n this.chunks[i].size == 0\r\n ) {\r\n await this.uploadChunk({ chunk: this.chunks[i], index: i });\r\n this.logger.info(`Chunk [${i}] uploaded.`);\r\n this.updateLocalCache();\r\n }\r\n }\r\n };\r\n\r\n private initBeforeUploadChunks() {\r\n this.chunks = utils.getChunks(\r\n this.task.file,\r\n this.task.session?.chunkSize\r\n );\r\n const cachedInfo = utils.getResumeCtx(this.task, this.logger);\r\n if (cachedInfo == null) {\r\n this.task.chunkProgress = this.chunks.map(\r\n (value, index): ChunkProgress => ({\r\n loaded: 0,\r\n index,\r\n })\r\n );\r\n }\r\n\r\n this.notifyResumeProgress();\r\n }\r\n\r\n protected abstract async uploadChunk(chunkInfo: ChunkInfo): Promise;\r\n\r\n protected updateChunkProgress(loaded: number, index: number) {\r\n this.task.chunkProgress[index].loaded = loaded;\r\n this.notifyResumeProgress();\r\n }\r\n\r\n private notifyResumeProgress() {\r\n this.progress = {\r\n total: this.getProgressInfoItem(\r\n utils.sumChunk(this.task.chunkProgress),\r\n this.task.file.size + 1\r\n ),\r\n chunks: this.chunks.map((chunk, index) => {\r\n return this.getProgressInfoItem(\r\n this.task.chunkProgress[index].loaded,\r\n chunk.size,\r\n false\r\n );\r\n }),\r\n };\r\n this.subscriber.onProgress(this.progress);\r\n }\r\n\r\n private updateLocalCache() {\r\n utils.setResumeCtx(this.task, this.logger);\r\n }\r\n}\r\n","import Chunk, { ChunkInfo } from \"./chunk\";\r\nimport { localUploadChunk } from \"../api\";\r\n\r\nexport default class Local extends Chunk {\r\n protected async uploadChunk(chunkInfo: ChunkInfo) {\r\n return localUploadChunk(\r\n this.task.session?.sessionID!,\r\n chunkInfo,\r\n (p) => {\r\n this.updateChunkProgress(p.loaded, chunkInfo.index);\r\n },\r\n this.cancelToken.token\r\n );\r\n }\r\n}\r\n","import Chunk, { ChunkInfo } from \"./chunk\";\r\nimport { slaveUploadChunk } from \"../api\";\r\n\r\nexport default class Remote extends Chunk {\r\n protected async uploadChunk(chunkInfo: ChunkInfo) {\r\n return slaveUploadChunk(\r\n `${this.task.session?.uploadURLs[0]!}`,\r\n this.task.session?.credential!,\r\n chunkInfo,\r\n (p) => {\r\n this.updateChunkProgress(p.loaded, chunkInfo.index);\r\n },\r\n this.cancelToken.token\r\n );\r\n }\r\n}\r\n","import Chunk, { ChunkInfo } from \"./chunk\";\r\nimport { finishOneDriveUpload, oneDriveUploadChunk } from \"../api\";\r\nimport { OneDriveChunkError, OneDriveEmptyFileSelected } from \"../errors\";\r\nimport { Status } from \"./base\";\r\n\r\nexport default class OneDrive extends Chunk {\r\n protected async uploadChunk(chunkInfo: ChunkInfo) {\r\n if (chunkInfo.chunk.size === 0) {\r\n throw new OneDriveEmptyFileSelected();\r\n }\r\n\r\n const rangeEnd = this.progress.total.loaded + chunkInfo.chunk.size - 1;\r\n return this.sendRange(\r\n chunkInfo,\r\n this.progress.total.loaded,\r\n rangeEnd,\r\n 0\r\n ).catch((e) => {\r\n if (\r\n e instanceof OneDriveChunkError &&\r\n e.response.error.innererror &&\r\n e.response.error.innererror.code == \"fragmentOverlap\"\r\n ) {\r\n return this.alignChunkOffset(chunkInfo);\r\n }\r\n\r\n throw e;\r\n });\r\n }\r\n\r\n private async sendRange(\r\n chunkInfo: ChunkInfo,\r\n start: number,\r\n end: number,\r\n chunkOffset: number\r\n ) {\r\n const range = `bytes ${start}-${end}/${this.task.file.size}`;\r\n return oneDriveUploadChunk(\r\n `${this.task.session?.uploadURLs[0]!}`,\r\n range,\r\n chunkInfo,\r\n (p) => {\r\n this.updateChunkProgress(\r\n chunkOffset + p.loaded,\r\n chunkInfo.index\r\n );\r\n },\r\n this.cancelToken.token\r\n );\r\n }\r\n\r\n private async alignChunkOffset(chunkInfo: ChunkInfo) {\r\n this.logger.info(\r\n `Chunk [${chunkInfo.index}] overlapped, checking next expected range...`\r\n );\r\n const rangeStatus = await oneDriveUploadChunk(\r\n `${this.task.session?.uploadURLs[0]!}`,\r\n \"\",\r\n chunkInfo,\r\n (p) => {\r\n return null;\r\n },\r\n this.cancelToken.token\r\n );\r\n const expectedStart = parseInt(\r\n rangeStatus.nextExpectedRanges[0].split(\"-\")[0]\r\n );\r\n this.logger.info(\r\n `Next expected range start from OneDrive is ${expectedStart}.`\r\n );\r\n\r\n if (expectedStart >= this.progress.total.loaded) {\r\n this.logger.info(`This whole chunk is overlapped, skipping...`);\r\n this.updateChunkProgress(chunkInfo.chunk.size, chunkInfo.index);\r\n return;\r\n } else {\r\n this.updateChunkProgress(0, chunkInfo.index);\r\n const rangeEnd =\r\n this.progress.total.loaded + chunkInfo.chunk.size - 1;\r\n const newChunkOffset = expectedStart - this.progress.total.loaded;\r\n chunkInfo.chunk = chunkInfo.chunk.slice(newChunkOffset);\r\n this.updateChunkProgress(newChunkOffset, chunkInfo.index);\r\n return this.sendRange(\r\n chunkInfo,\r\n expectedStart,\r\n rangeEnd,\r\n newChunkOffset\r\n );\r\n }\r\n }\r\n\r\n protected async afterUpload(): Promise {\r\n this.logger.info(`Finishing upload...`);\r\n this.transit(Status.finishing);\r\n return finishOneDriveUpload(\r\n this.task.session!.sessionID,\r\n this.cancelToken.token\r\n );\r\n }\r\n}\r\n","import Chunk, { ChunkInfo } from \"./chunk\";\r\nimport { s3LikeFinishUpload, s3LikeUploadChunk } from \"../api\";\r\nimport { Status } from \"./base\";\r\n\r\nexport default class OSS extends Chunk {\r\n protected async uploadChunk(chunkInfo: ChunkInfo) {\r\n return s3LikeUploadChunk(\r\n this.task.session?.uploadURLs[chunkInfo.index]!,\r\n chunkInfo,\r\n (p) => {\r\n this.updateChunkProgress(p.loaded, chunkInfo.index);\r\n },\r\n this.cancelToken.token\r\n );\r\n }\r\n\r\n protected async afterUpload(): Promise {\r\n this.logger.info(`Finishing multipart upload...`);\r\n this.transit(Status.finishing);\r\n return s3LikeFinishUpload(\r\n this.task.session!.completeURL,\r\n true,\r\n this.task.chunkProgress,\r\n this.cancelToken.token\r\n );\r\n }\r\n}\r\n","import Chunk, { ChunkInfo } from \"./chunk\";\r\nimport { qiniuDriveUploadChunk, qiniuFinishUpload } from \"../api\";\r\nimport { Status } from \"./base\";\r\n\r\nexport default class Qiniu extends Chunk {\r\n protected async uploadChunk(chunkInfo: ChunkInfo) {\r\n const chunkRes = await qiniuDriveUploadChunk(\r\n this.task.session?.uploadURLs[0]!,\r\n this.task.session?.credential!,\r\n chunkInfo,\r\n (p) => {\r\n this.updateChunkProgress(p.loaded, chunkInfo.index);\r\n },\r\n this.cancelToken.token\r\n );\r\n\r\n this.task.chunkProgress[chunkInfo.index].etag = chunkRes.etag;\r\n }\r\n\r\n protected async afterUpload(): Promise {\r\n this.logger.info(`Finishing multipart upload...`);\r\n this.transit(Status.finishing);\r\n return qiniuFinishUpload(\r\n this.task.session?.uploadURLs[0]!,\r\n this.task.session?.credential!,\r\n this.task.chunkProgress,\r\n this.cancelToken.token\r\n );\r\n }\r\n}\r\n","import Base, { Status } from \"./base\";\r\nimport { cosFormUploadChunk, cosUploadCallback } from \"../api\";\r\n\r\nexport default class COS extends Base {\r\n public upload = async () => {\r\n this.logger.info(\"Starting uploading file stream:\", this.task.file);\r\n await cosFormUploadChunk(\r\n this.task.session?.uploadURLs[0]!,\r\n this.task.file,\r\n this.task.session?.policy!,\r\n this.task.session?.path!,\r\n this.task.session?.callback!,\r\n this.task.session?.sessionID!,\r\n this.task.session?.keyTime!,\r\n this.task.session?.credential!,\r\n this.task.session?.ak!,\r\n (p) => {\r\n this.subscriber.onProgress({\r\n total: this.getProgressInfoItem(p.loaded, p.total),\r\n });\r\n },\r\n this.cancelToken.token\r\n );\r\n };\r\n\r\n protected async afterUpload(): Promise {\r\n this.transit(Status.finishing);\r\n this.logger.info(`Sending COS upload callback...`);\r\n try {\r\n await cosUploadCallback(\r\n this.task.session!.sessionID,\r\n this.cancelToken.token\r\n );\r\n } catch (e) {\r\n this.logger.warn(`Failed to finish COS upload:`, e);\r\n }\r\n }\r\n}\r\n","import Base from \"./base\";\r\nimport { upyunFormUploadChunk } from \"../api\";\r\n\r\nexport default class Upyun extends Base {\r\n public upload = async () => {\r\n this.logger.info(\"Starting uploading file stream:\", this.task.file);\r\n await upyunFormUploadChunk(\r\n this.task.session?.uploadURLs[0]!,\r\n this.task.file,\r\n this.task.session?.policy!,\r\n this.task.session?.credential!,\r\n (p) => {\r\n this.subscriber.onProgress({\r\n total: this.getProgressInfoItem(p.loaded, p.total),\r\n });\r\n },\r\n this.cancelToken.token\r\n );\r\n };\r\n}\r\n","import Chunk, { ChunkInfo } from \"./chunk\";\r\nimport {\r\n s3LikeFinishUpload,\r\n s3LikeUploadCallback,\r\n s3LikeUploadChunk,\r\n} from \"../api\";\r\nimport { Status } from \"./base\";\r\n\r\nexport default class OSS extends Chunk {\r\n protected async uploadChunk(chunkInfo: ChunkInfo) {\r\n const etag = await s3LikeUploadChunk(\r\n this.task.session?.uploadURLs[chunkInfo.index]!,\r\n chunkInfo,\r\n (p) => {\r\n this.updateChunkProgress(p.loaded, chunkInfo.index);\r\n },\r\n this.cancelToken.token\r\n );\r\n\r\n this.task.chunkProgress[chunkInfo.index].etag = etag;\r\n }\r\n\r\n protected async afterUpload(): Promise {\r\n this.logger.info(`Finishing multipart upload...`);\r\n this.transit(Status.finishing);\r\n await s3LikeFinishUpload(\r\n this.task.session!.completeURL,\r\n false,\r\n this.task.chunkProgress,\r\n this.cancelToken.token\r\n );\r\n\r\n this.logger.info(`Sending S3-like upload callback...`);\r\n return s3LikeUploadCallback(\r\n this.task.session!.sessionID,\r\n this.cancelToken.token\r\n );\r\n }\r\n}\r\n","import Chunk, { ChunkInfo } from \"./chunk\";\r\nimport { qiniuDriveUploadChunk, qiniuFinishUpload } from \"../api\";\r\nimport { Status } from \"./base\";\r\nimport { Task } from \"../types\";\r\nimport UploadManager from \"../index\";\r\nimport * as utils from \"../utils\";\r\n\r\nexport default class ResumeHint extends Chunk {\r\n constructor(task: Task, manager: UploadManager) {\r\n super(task, manager);\r\n this.status = Status.resumable;\r\n this.progress = {\r\n total: this.getProgressInfoItem(\r\n utils.sumChunk(this.task.chunkProgress),\r\n this.task.size + 1\r\n ),\r\n };\r\n this.subscriber.onProgress(this.progress);\r\n }\r\n\r\n protected async uploadChunk(chunkInfo: ChunkInfo) {\r\n return null;\r\n }\r\n}\r\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { Badge, CircularProgress, makeStyles } from \"@material-ui/core\";\r\nimport SpeedDial from \"@material-ui/lab/SpeedDial\";\r\nimport SpeedDialIcon from \"@material-ui/lab/SpeedDialIcon\";\r\nimport SpeedDialAction from \"@material-ui/lab/SpeedDialAction\";\r\nimport CreateNewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\r\nimport PublishIcon from \"@material-ui/icons/Publish\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport AutoHidden from \"./AutoHidden\";\r\nimport statusHelper from \"../../utils/page\";\r\nimport Backdrop from \"@material-ui/core/Backdrop\";\r\nimport { FilePlus, FolderUpload } from \"mdi-material-ui\";\r\nimport { green } from \"@material-ui/core/colors\";\r\nimport { SelectType } from \"../Uploader/core\";\r\nimport {\r\n openCreateFileDialog,\r\n openCreateFolderDialog,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n fab: {\r\n margin: 0,\r\n top: \"auto\",\r\n right: 20,\r\n bottom: 20,\r\n left: \"auto\",\r\n zIndex: 5,\r\n position: \"fixed\",\r\n },\r\n badge: {\r\n position: \"absolute\",\r\n bottom: 26,\r\n top: \"auto\",\r\n zIndex: 9999,\r\n right: 7,\r\n },\r\n \"@global\": {\r\n \".MuiSpeedDialAction-staticTooltipLabel\": {\r\n whiteSpace: \"nowrap\",\r\n },\r\n },\r\n fabProgress: {\r\n color: green[500],\r\n position: \"absolute\",\r\n bottom: -6,\r\n left: -6,\r\n zIndex: 1,\r\n },\r\n buttonSuccess: {\r\n backgroundColor: green[500],\r\n \"&:hover\": {\r\n backgroundColor: green[700],\r\n },\r\n },\r\n}));\r\n\r\nexport default function UploadButton(props) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"fileManager\" });\r\n const [open, setOpen] = useState(false);\r\n const [queued, setQueued] = useState(5);\r\n const path = useSelector((state) => state.navigator.path);\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const OpenNewFolderDialog = useCallback(\r\n () => dispatch(openCreateFolderDialog()),\r\n [dispatch]\r\n );\r\n const OpenNewFileDialog = useCallback(\r\n () => dispatch(openCreateFileDialog()),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n setQueued(props.Queued);\r\n }, [props.Queued]);\r\n\r\n const uploadClicked = () => {\r\n if (open) {\r\n if (queued !== 0) {\r\n props.openFileList();\r\n } else {\r\n props.selectFile(path);\r\n }\r\n }\r\n };\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const circularProgress = useMemo(() => {\r\n if (props.progress.totalSize > 0) {\r\n return (\r\n \r\n );\r\n }\r\n }, [classes, props.progress]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport { sizeToString } from \"../../../utils\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport TimeAgo from \"timeago-react\";\r\nimport { Status } from \"../core/uploader/base\";\r\nimport { Trans, useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n infoTitle: {\r\n fontWeight: 700,\r\n },\r\n infoValue: {\r\n color: theme.palette.text.secondary,\r\n wordBreak: \"break-all\",\r\n },\r\n}));\r\n\r\nexport default function TaskDetail({ uploader, navigateToDst, error }) {\r\n const { t } = useTranslation();\r\n const classes = useStyles();\r\n const items = [\r\n {\r\n name: t(\"uploader.fileName\"),\r\n value: uploader.task.name,\r\n },\r\n {\r\n name: t(\"uploader.fileSize\"),\r\n value: `${sizeToString(uploader.task.size)} ${\r\n uploader.task.session && uploader.task.session.chunkSize > 0\r\n ? t(\"uploader.chunkDescription\", {\r\n total: uploader.task.chunkProgress.length,\r\n size: sizeToString(uploader.task.session.chunkSize),\r\n })\r\n : t(\"uploader.noChunks\")\r\n }`,\r\n },\r\n {\r\n name: t(\"fileManager.storagePolicy\"),\r\n value: uploader.task.policy.name,\r\n },\r\n {\r\n name: t(\"uploader.destination\"),\r\n value: (\r\n navigateToDst(uploader.task.dst)}\r\n >\r\n {uploader.task.dst === \"/\"\r\n ? t(\"uploader.rootFolder\")\r\n : uploader.task.dst}\r\n \r\n ),\r\n },\r\n uploader.task.session\r\n ? {\r\n name: t(\"uploader.uploadSession\"),\r\n value: (\r\n <>\r\n ,\r\n ]}\r\n />\r\n \r\n ),\r\n }\r\n : null,\r\n uploader.status === Status.error\r\n ? {\r\n name: t(\"uploader.errorDetails\"),\r\n value: error,\r\n }\r\n : null,\r\n ];\r\n return (\r\n \r\n {items.map((i) => (\r\n <>\r\n {i && (\r\n \r\n \r\n {i.name}\r\n \r\n \r\n {i.value}\r\n \r\n \r\n )}\r\n \r\n ))}\r\n \r\n );\r\n}\r\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport {\r\n Divider,\r\n Grow,\r\n IconButton,\r\n ListItem,\r\n ListItemText,\r\n makeStyles,\r\n Tooltip,\r\n} from \"@material-ui/core\";\r\nimport TypeIcon from \"../../FileManager/TypeIcon\";\r\nimport { useUpload } from \"../UseUpload\";\r\nimport { Status } from \"../core/uploader/base\";\r\nimport { UploaderError } from \"../core/errors\";\r\nimport { filename, sizeToString } from \"../../../utils\";\r\nimport { darken, lighten } from \"@material-ui/core/styles/colorManipulator\";\r\nimport { useTheme } from \"@material-ui/core/styles\";\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport PlayArrow from \"@material-ui/icons/PlayArrow\";\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\r\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\r\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\r\nimport TaskDetail from \"./TaskDetail\";\r\nimport { SelectType } from \"../core\";\r\nimport { navigateTo } from \"../../../redux/explorer\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n progressContent: {\r\n position: \"relative\",\r\n zIndex: 9,\r\n },\r\n progress: {\r\n transition: \"width .4s linear\",\r\n zIndex: 1,\r\n height: \"100%\",\r\n position: \"absolute\",\r\n left: 0,\r\n top: 0,\r\n },\r\n progressContainer: {\r\n position: \"relative\",\r\n },\r\n listAction: {\r\n marginLeft: 20,\r\n marginRight: 20,\r\n },\r\n wordBreak: {\r\n wordBreak: \"break-all\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n },\r\n successStatus: {\r\n color: theme.palette.success.main,\r\n },\r\n errorStatus: {\r\n color: theme.palette.warning.main,\r\n wordBreak: \"break-all\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n },\r\n },\r\n disabledBadge: {\r\n marginLeft: theme.spacing(1),\r\n height: 18,\r\n },\r\n delete: {\r\n zIndex: 9,\r\n },\r\n dstLink: {\r\n color: theme.palette.success.main,\r\n fontWeight: 600,\r\n },\r\n fileNameContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n}));\r\n\r\nconst ExpansionPanel = withStyles({\r\n root: {\r\n maxWidth: \"100%\",\r\n boxShadow: \"none\",\r\n \"&:not(:last-child)\": {\r\n borderBottom: 0,\r\n },\r\n \"&:before\": {\r\n display: \"none\",\r\n },\r\n \"&$expanded\": {\r\n margin: 0,\r\n },\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanel);\r\n\r\nconst ExpansionPanelSummary = withStyles({\r\n root: {\r\n minHeight: 0,\r\n padding: 0,\r\n display: \"block\",\r\n \"&$expanded\": {},\r\n },\r\n content: {\r\n margin: 0,\r\n display: \"block\",\r\n \"&$expanded\": {\r\n margin: \"0\",\r\n },\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanelSummary);\r\n\r\nconst ExpansionPanelDetails = withStyles((theme) => ({\r\n root: {\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n display: \"block\",\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n}))(MuiExpansionPanelDetails);\r\n\r\nconst getSpeedText = (speed, speedAvg, useSpeedAvg) => {\r\n let displayedSpeed = speedAvg;\r\n if (!useSpeedAvg) {\r\n displayedSpeed = speed;\r\n }\r\n\r\n return `${sizeToString(displayedSpeed ? displayedSpeed : 0)} /s`;\r\n};\r\n\r\nconst getErrMsg = (error) => {\r\n let errMsg = error.message;\r\n if (error instanceof UploaderError) {\r\n errMsg = error.Message(\"\");\r\n }\r\n\r\n return errMsg;\r\n};\r\n\r\nexport default function UploadTask({\r\n uploader,\r\n useAvgSpeed,\r\n onCancel,\r\n onClose,\r\n selectFile,\r\n onRefresh,\r\n}) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"uploader\" });\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [taskHover, setTaskHover] = useState(false);\r\n const [expanded, setExpanded] = useState(false);\r\n const { status, error, progress, speed, speedAvg, retry } = useUpload(\r\n uploader\r\n );\r\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const [loading, setLoading] = useState(false);\r\n const dispatch = useDispatch();\r\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\r\n const navigateToDst = (path) => {\r\n onClose(null, \"backdropClick\");\r\n NavigateTo(path);\r\n };\r\n\r\n const toggleDetail = (event, newExpanded) => {\r\n setExpanded(!!newExpanded);\r\n };\r\n\r\n useEffect(() => {\r\n if (status >= Status.finished) {\r\n onRefresh();\r\n }\r\n }, [status]);\r\n\r\n const statusText = useMemo(() => {\r\n const parent = filename(uploader.task.dst);\r\n switch (status) {\r\n case Status.added:\r\n case Status.initialized:\r\n case Status.queued:\r\n return
{t(\"pendingInQueue\")}
;\r\n case Status.preparing:\r\n return
{t(\"preparing\")}
;\r\n case Status.error:\r\n return (\r\n
\r\n {getErrMsg(error)}\r\n
\r\n
\r\n );\r\n case Status.finishing:\r\n return
{t(\"processing\")}
;\r\n case Status.resumable:\r\n return (\r\n
\r\n {t(\"progressDescription\", {\r\n uploaded: sizeToString(progress.total.loaded),\r\n total: sizeToString(progress.total.size),\r\n percentage: progress.total.percent.toFixed(2),\r\n })}\r\n
\r\n );\r\n case Status.processing:\r\n if (progress) {\r\n return (\r\n
\r\n {t(\"progressDescriptionFull\", {\r\n speed: getSpeedText(\r\n speed,\r\n speedAvg,\r\n useAvgSpeed\r\n ),\r\n uploaded: sizeToString(progress.total.loaded),\r\n total: sizeToString(progress.total.size),\r\n percentage: progress.total.percent.toFixed(2),\r\n })}\r\n
\r\n );\r\n }\r\n return
{t(\"progressDescriptionPlaceHolder\")}
;\r\n case Status.finished:\r\n return (\r\n
\r\n {t(\"uploadedTo\")}\r\n \r\n navigateToDst(uploader.task.dst)}\r\n >\r\n {parent === \"\" ? t(\"rootFolder\") : parent}\r\n \r\n \r\n
\r\n
\r\n );\r\n default:\r\n return
{t(\"unknownStatus\")}
;\r\n }\r\n }, [status, error, progress, speed, speedAvg, useAvgSpeed]);\r\n\r\n const resumeLabel = useMemo(\r\n () =>\r\n uploader.task.resumed && !fullScreen ? (\r\n \r\n ) : null,\r\n [status, fullScreen]\r\n );\r\n\r\n const continueLabel = useMemo(\r\n () =>\r\n status === Status.resumable && !fullScreen ? (\r\n \r\n ) : null,\r\n [status, fullScreen]\r\n );\r\n\r\n const progressBar = useMemo(\r\n () =>\r\n (status === Status.processing ||\r\n status === Status.finishing ||\r\n status === Status.resumable) &&\r\n progress ? (\r\n \r\n ) : null,\r\n [status, progress, theme]\r\n );\r\n\r\n const taskDetail = useMemo(() => {\r\n return (\r\n \r\n );\r\n }, [uploader, expanded]);\r\n\r\n const cancel = () => {\r\n setLoading(true);\r\n uploader.cancel().then(() => {\r\n setLoading(false);\r\n onCancel((u) => u.id != uploader.id);\r\n });\r\n };\r\n\r\n const stopRipple = (e) => {\r\n e.stopPropagation();\r\n };\r\n\r\n const secondaryAction = useMemo(() => {\r\n if (!taskHover && !fullScreen) {\r\n return <>;\r\n }\r\n\r\n const actions = [\r\n {\r\n show: status === Status.error,\r\n title: t(\"retry\"),\r\n click: retry,\r\n icon: ,\r\n loading: false,\r\n },\r\n {\r\n show: true,\r\n title:\r\n status === Status.finished\r\n ? t(\"deleteTask\")\r\n : t(\"cancelAndDelete\"),\r\n click: cancel,\r\n icon: ,\r\n loading: loading,\r\n },\r\n {\r\n show: status === Status.resumable,\r\n title: t(\"selectAndResume\"),\r\n click: () =>\r\n selectFile(uploader.task.dst, SelectType.File, uploader),\r\n icon: ,\r\n loading: false,\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {actions.map((a) => (\r\n <>\r\n {a.show && (\r\n \r\n \r\n {\r\n e.stopPropagation();\r\n a.click();\r\n }}\r\n >\r\n {a.icon}\r\n \r\n \r\n \r\n )}\r\n \r\n ))}\r\n \r\n );\r\n }, [status, loading, taskHover, fullScreen, uploader]);\r\n\r\n const fileIcon = useMemo(() => {\r\n if (!fullScreen) {\r\n return ;\r\n }\r\n }, [uploader, fullScreen]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n setTaskHover(false)}\r\n onMouseOver={() => setTaskHover(true)}\r\n >\r\n {progressBar}\r\n \r\n {fileIcon}\r\n \r\n
\r\n {uploader.task.name}\r\n
\r\n
{resumeLabel}
\r\n
{continueLabel}
\r\n \r\n }\r\n secondary={\r\n
\r\n {statusText}\r\n
\r\n }\r\n />\r\n {secondaryAction}\r\n
\r\n \r\n \r\n {taskDetail}\r\n
\r\n \r\n \r\n );\r\n}\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\n\r\nexport function useUpload(uploader) {\r\n const startLoadedRef = useRef(0);\r\n const [status, setStatus] = useState(uploader.status);\r\n const [error, setError] = useState(uploader.error);\r\n const [progress, setProgress] = useState(uploader.progress);\r\n const dispatch = useDispatch();\r\n\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n /* eslint-disable @typescript-eslint/no-empty-function */\r\n uploader.subscribe({\r\n onTransition: (newStatus) => {\r\n setStatus(newStatus);\r\n },\r\n onError: (err) => {\r\n setError(err);\r\n setStatus(uploader.status);\r\n },\r\n onProgress: (data) => {\r\n setProgress(data);\r\n },\r\n onMsg: (msg, color) => {\r\n ToggleSnackbar(\"top\", \"right\", msg, color);\r\n },\r\n });\r\n }, []);\r\n\r\n // 获取上传速度\r\n const [speed, speedAvg] = React.useMemo(() => {\r\n if (\r\n progress == null ||\r\n progress.total == null ||\r\n progress.total.loaded == null\r\n )\r\n return [0, 0];\r\n const duration = (Date.now() - (uploader.lastTime || 0)) / 1000;\r\n const durationTotal = (Date.now() - (uploader.startTime || 0)) / 1000;\r\n const res =\r\n progress.total.loaded > startLoadedRef.current\r\n ? Math.floor(\r\n (progress.total.loaded - startLoadedRef.current) /\r\n duration\r\n )\r\n : 0;\r\n const resAvg =\r\n progress.total.loaded > 0\r\n ? Math.floor(progress.total.loaded / durationTotal)\r\n : 0;\r\n\r\n startLoadedRef.current = progress.total.loaded;\r\n uploader.lastTime = Date.now();\r\n return [res, resAvg];\r\n }, [progress]);\r\n\r\n const retry = () => {\r\n uploader.reset();\r\n uploader.start();\r\n };\r\n\r\n return { status, error, progress, speed, speedAvg, retry };\r\n}\r\n","import React, { useState } from \"react\";\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Input,\r\n InputLabel,\r\n makeStyles,\r\n} from \"@material-ui/core\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({}));\r\n\r\nexport default function ConcurrentOptionDialog({ open, onClose, onSave }) {\r\n const { t } = useTranslation();\r\n const [count, setCount] = useState(\r\n Auth.GetPreferenceWithDefault(\"concurrent_limit\", \"5\")\r\n );\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {t(\"uploader.setConcurrent\")}\r\n \r\n\r\n \r\n \r\n \r\n {t(\"uploader.concurrentTaskNumber\")}\r\n \r\n setCount(e.target.value)}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n
\r\n onSave(count)}\r\n >\r\n {t(\"ok\", { ns: \"common\" })}\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import {\r\n Icon,\r\n ListItemIcon,\r\n makeStyles,\r\n Menu,\r\n MenuItem,\r\n Tooltip,\r\n} from \"@material-ui/core\";\r\nimport React, { useCallback, useMemo, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport API from \"../../../middleware/Api\";\r\nimport { TaskType } from \"../core/types\";\r\nimport { refreshStorage, toggleSnackbar } from \"../../../redux/explorer\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\nimport { DeleteEmpty } from \"mdi-material-ui\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport ConcurrentOptionDialog from \"../../Modals/ConcurrentOption\";\r\nimport Auth from \"../../../middleware/Auth\";\r\nimport { ClearAll } from \"@material-ui/icons\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icon: {\r\n minWidth: 38,\r\n },\r\n}));\r\n\r\nexport default function MoreActions({\r\n anchorEl,\r\n onClose,\r\n uploadManager,\r\n deleteTask,\r\n useAvgSpeed,\r\n setUseAvgSpeed,\r\n filter,\r\n setFilter,\r\n sorter,\r\n setSorter,\r\n cleanFinished,\r\n}) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"uploader\" });\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const [concurrentDialog, setConcurrentDialog] = useState(false);\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const RefreshStorage = useCallback(() => dispatch(refreshStorage()), [\r\n dispatch,\r\n ]);\r\n\r\n const actionClicked = (next) => () => {\r\n onClose();\r\n next();\r\n };\r\n\r\n const cleanupSessions = () => {\r\n uploadManager.cleanupSessions();\r\n API.delete(\"/file/upload\")\r\n .then((response) => {\r\n if (response.rawData.code === 0) {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"uploadSessionCleaned\"),\r\n \"success\"\r\n );\r\n } else {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n response.rawData.msg,\r\n \"warning\"\r\n );\r\n }\r\n deleteTask((u) => u.task.type !== TaskType.resumeHint);\r\n RefreshStorage();\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n });\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n const id = open ? \"uploader-action-popover\" : undefined;\r\n\r\n const listItems = useMemo(\r\n () => [\r\n {\r\n tooltip: t(\"hideCompletedTooltip\"),\r\n onClick: () =>\r\n setFilter(filter === \"default\" ? \"ongoing\" : \"default\"),\r\n icon: filter !== \"default\" ? : ,\r\n text: t(\"hideCompleted\"),\r\n divider: true,\r\n },\r\n {\r\n tooltip: t(\"addTimeAscTooltip\"),\r\n onClick: () => setSorter(\"default\"),\r\n icon: sorter === \"default\" ? : ,\r\n text: t(\"addTimeAsc\"),\r\n divider: false,\r\n },\r\n {\r\n tooltip: t(\"addTimeDescTooltip\"),\r\n onClick: () => setSorter(\"reverse\"),\r\n icon: sorter === \"reverse\" ? : ,\r\n text: t(\"addTimeDesc\"),\r\n divider: true,\r\n },\r\n {\r\n tooltip: t(\"showInstantSpeedTooltip\"),\r\n onClick: () => setUseAvgSpeed(false),\r\n icon: useAvgSpeed ? : ,\r\n text: t(\"showInstantSpeed\"),\r\n divider: false,\r\n },\r\n {\r\n tooltip: t(\"showAvgSpeedTooltip\"),\r\n onClick: () => setUseAvgSpeed(true),\r\n icon: !useAvgSpeed ? : ,\r\n text: t(\"showAvgSpeed\"),\r\n divider: true,\r\n },\r\n {\r\n tooltip: t(\"cleanAllSessionTooltip\"),\r\n onClick: () => cleanupSessions(),\r\n icon: ,\r\n text: t(\"cleanAllSession\"),\r\n divider: false,\r\n },\r\n {\r\n tooltip: t(\"cleanCompletedTooltip\"),\r\n onClick: () => cleanFinished(),\r\n icon: ,\r\n text: t(\"cleanCompleted\"),\r\n divider: true,\r\n },\r\n {\r\n tooltip: t(\"setConcurrentTooltip\"),\r\n onClick: () => setConcurrentDialog(true),\r\n icon: ,\r\n text: t(\"setConcurrent\"),\r\n divider: false,\r\n },\r\n ],\r\n [\r\n useAvgSpeed,\r\n setUseAvgSpeed,\r\n sorter,\r\n setSorter,\r\n filter,\r\n setFilter,\r\n cleanFinished,\r\n ]\r\n );\r\n\r\n const onConcurrentLimitSave = (val) => {\r\n val = parseInt(val);\r\n if (val > 0) {\r\n Auth.SetPreference(\"concurrent_limit\", val);\r\n uploadManager.changeConcurrentLimit(parseInt(val));\r\n }\r\n setConcurrentDialog(false);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {listItems.map((item) => (\r\n <>\r\n \r\n \r\n \r\n {item.icon}\r\n \r\n {item.text}\r\n \r\n \r\n {item.divider && }\r\n \r\n ))}\r\n \r\n setConcurrentDialog(false)}\r\n onSave={onConcurrentLimitSave}\r\n />\r\n \r\n );\r\n}\r\n","import React, { useMemo, useState } from \"react\";\r\nimport {\r\n Accordion,\r\n AccordionDetails,\r\n AppBar,\r\n Dialog,\r\n DialogContent,\r\n Fade,\r\n IconButton,\r\n makeStyles,\r\n Slide,\r\n Toolbar,\r\n Tooltip,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { useTheme } from \"@material-ui/core/styles\";\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandLess\";\r\nimport AddIcon from \"@material-ui/icons/Add\";\r\nimport classnames from \"classnames\";\r\nimport UploadTask from \"./UploadTask\";\r\nimport { MoreHoriz } from \"@material-ui/icons\";\r\nimport MoreActions from \"./MoreActions\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Virtuoso } from \"react-virtuoso\";\r\nimport Nothing from \"../../Placeholder/Nothing\";\r\nimport { lighten } from \"@material-ui/core/styles/colorManipulator\";\r\nimport { Status } from \"../core/uploader/base\";\r\nimport Auth from \"../../../middleware/Auth\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n rootOverwrite: {\r\n top: \"auto!important\",\r\n left: \"auto!important\",\r\n },\r\n appBar: {\r\n position: \"relative\",\r\n },\r\n flex: {\r\n flex: 1,\r\n },\r\n popup: {\r\n alignItems: \"flex-end\",\r\n justifyContent: \"flex-end\",\r\n },\r\n dialog: {\r\n margin: 0,\r\n right: 10,\r\n bottom: 10,\r\n zIndex: 9999,\r\n position: \"fixed\",\r\n inset: \"-1!important\",\r\n },\r\n paddingZero: {\r\n padding: 0,\r\n },\r\n dialogContent: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: 500,\r\n minHeight: 300,\r\n maxHeight: \"calc(100vh - 140px)\",\r\n },\r\n padding: 0,\r\n paddingTop: \"0!important\",\r\n },\r\n virtualList: {\r\n height: \"100%\",\r\n maxHeight: \"calc(100vh - 56px)\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n minHeight: 300,\r\n maxHeight: \"calc(100vh - 140px)\",\r\n },\r\n },\r\n expandIcon: {\r\n transform: \"rotate(0deg)\",\r\n transition: theme.transitions.create(\"transform\", {\r\n duration: theme.transitions.duration.shortest,\r\n }),\r\n },\r\n expandIconExpanded: {\r\n transform: \"rotate(180deg)\",\r\n },\r\n toolbar: {\r\n paddingLeft: theme.spacing(1),\r\n paddingRight: theme.spacing(1),\r\n },\r\n progress: {\r\n transition: \"width .4s linear\",\r\n zIndex: -1,\r\n height: \"100%\",\r\n position: \"absolute\",\r\n left: 0,\r\n top: 0,\r\n },\r\n}));\r\n\r\nconst sorters = {\r\n default: (a, b) => a.id - b.id,\r\n reverse: (a, b) => b.id - a.id,\r\n};\r\n\r\nconst filters = {\r\n default: (u) => true,\r\n ongoing: (u) => u.status < Status.finished,\r\n};\r\n\r\nexport default function TaskList({\r\n open,\r\n onClose,\r\n selectFile,\r\n taskList,\r\n onCancel,\r\n uploadManager,\r\n progress,\r\n setUploaders,\r\n}) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"uploader\" });\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const path = useSelector((state) => state.navigator.path);\r\n const [expanded, setExpanded] = useState(true);\r\n const [useAvgSpeed, setUseAvgSpeed] = useState(\r\n Auth.GetPreferenceWithDefault(\"use_avg_speed\", true)\r\n );\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [filter, setFilter] = useState(\r\n Auth.GetPreferenceWithDefault(\"task_filter\", \"default\")\r\n );\r\n const [sorter, setSorter] = useState(\r\n Auth.GetPreferenceWithDefault(\"task_sorter\", \"default\")\r\n );\r\n const [refreshList, setRefreshList] = useState(false);\r\n\r\n const handleActionClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleActionClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const close = (e, reason) => {\r\n if (reason !== \"backdropClick\") {\r\n onClose();\r\n } else {\r\n setExpanded(false);\r\n }\r\n };\r\n const handlePanelChange = (event, isExpanded) => {\r\n setExpanded(isExpanded);\r\n };\r\n\r\n useMemo(() => {\r\n if (open) {\r\n setExpanded(true);\r\n }\r\n }, [taskList]);\r\n\r\n const progressBar = useMemo(\r\n () =>\r\n progress.totalSize > 0 ? (\r\n 0 && !expanded}>\r\n
\r\n \r\n
\r\n
\r\n ) : null,\r\n [progress, expanded, classes, theme]\r\n );\r\n\r\n const list = useMemo(() => {\r\n const currentList = taskList\r\n .filter(filters[filter])\r\n .sort(sorters[sorter]);\r\n if (currentList.length === 0) {\r\n return ;\r\n }\r\n\r\n return (\r\n (\r\n setRefreshList((r) => !r)}\r\n />\r\n )}\r\n />\r\n );\r\n }, [\r\n classes,\r\n taskList,\r\n useAvgSpeed,\r\n fullScreen,\r\n filter,\r\n sorter,\r\n refreshList,\r\n ]);\r\n\r\n return (\r\n <>\r\n {\r\n Auth.SetPreference(\"use_avg_speed\", v);\r\n setUseAvgSpeed(v);\r\n }}\r\n filter={filter}\r\n sorter={sorter}\r\n setFilter={(v) => {\r\n Auth.SetPreference(\"task_filter\", v);\r\n setFilter(v);\r\n }}\r\n setSorter={(v) => {\r\n Auth.SetPreference(\"task_sorter\", v);\r\n setSorter(v);\r\n }}\r\n cleanFinished={() =>\r\n setUploaders((u) => u.filter(filters[\"ongoing\"]))\r\n }\r\n />\r\n \r\n \r\n \r\n {progressBar}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"uploadTasks\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n selectFile(path)}\r\n >\r\n \r\n \r\n \r\n {!fullScreen && (\r\n \r\n setExpanded(!expanded)}\r\n >\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {list}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport Backdrop from \"@material-ui/core/Backdrop\";\r\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\r\nimport { Typography } from \"@material-ui/core\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: \"#fff\",\r\n flexDirection: \"column\",\r\n },\r\n })\r\n);\r\n\r\nexport function DropFileBackground({ open }) {\r\n const classes = useStyles();\r\n const { t } = useTranslation();\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n {t(\"uploader.dropFileHere\")}\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport UploadManager, { SelectType } from \"./core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport UploadButton from \"../Dial/Create\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { UploaderError } from \"./core/errors\";\r\nimport TaskList from \"./Popup/TaskList\";\r\nimport { Status } from \"./core/uploader/base\";\r\nimport { DropFileBackground } from \"../Placeholder/DropFile\";\r\nimport {\r\n refreshFileList,\r\n refreshStorage,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nlet totalProgressCollector = null;\r\nlet lastProgressStart = -1;\r\nlet dragCounter = 0;\r\n\r\nexport default function Uploader() {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"uploader\" });\r\n const [uploaders, setUploaders] = useState([]);\r\n const [taskListOpen, setTaskListOpen] = useState(false);\r\n const [dropBgOpen, setDropBgOpen] = useState(0);\r\n const [totalProgress, setTotalProgress] = useState({\r\n totalSize: 0,\r\n processedSize: 0,\r\n total: 0,\r\n processed: 0,\r\n });\r\n const search = useSelector((state) => state.explorer.search);\r\n const policy = useSelector((state) => state.explorer.currentPolicy);\r\n const isLogin = useSelector((state) => state.viewUpdate.isLogin);\r\n const path = useSelector((state) => state.navigator.path);\r\n const fileSelectCounter = useSelector(\r\n (state) => state.viewUpdate.openFileSelector\r\n );\r\n const folderSelectCounter = useSelector(\r\n (state) => state.viewUpdate.openFolderSelector\r\n );\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const RefreshFileList = useCallback(() => dispatch(refreshFileList()), [\r\n dispatch,\r\n ]);\r\n const RefreshStorage = useCallback(() => dispatch(refreshStorage()), [\r\n dispatch,\r\n ]);\r\n\r\n const enableUploader = useMemo(\r\n () => pathHelper.isHomePage(location.pathname) && isLogin && !search,\r\n [location.pathname, isLogin, search]\r\n );\r\n\r\n const taskAdded = (original = null) => (tasks) => {\r\n if (original !== null) {\r\n if (tasks.length !== 1 || tasks[0].key() !== original.key()) {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"fileNotMatchError\"),\r\n \"warning\"\r\n );\r\n return;\r\n }\r\n }\r\n\r\n tasks.forEach((t) => t.start());\r\n\r\n setTaskListOpen(true);\r\n setUploaders((uploaders) => {\r\n if (original !== null) {\r\n uploaders = uploaders.filter((u) => u.key() !== original.key());\r\n }\r\n\r\n return [...uploaders, ...tasks];\r\n });\r\n };\r\n\r\n const uploadManager = useMemo(() => {\r\n return new UploadManager({\r\n logLevel: \"INFO\",\r\n concurrentLimit: parseInt(\r\n Auth.GetPreferenceWithDefault(\"concurrent_limit\", \"5\")\r\n ),\r\n dropZone: document.querySelector(\"body\"),\r\n onToast: (type, msg) => {\r\n ToggleSnackbar(\"top\", \"right\", msg, type);\r\n },\r\n onDropOver: (e) => {\r\n dragCounter++;\r\n setDropBgOpen((value) => !value);\r\n },\r\n onDropLeave: (e) => {\r\n dragCounter--;\r\n setDropBgOpen((value) => !value);\r\n },\r\n onDropFileAdded: taskAdded(),\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n uploadManager.setPolicy(policy, path);\r\n }, [policy]);\r\n\r\n useEffect(() => {\r\n const unfinished = uploadManager.resumeTasks();\r\n setUploaders((uploaders) => [...uploaders, ...unfinished]);\r\n if (!totalProgressCollector) {\r\n totalProgressCollector = setInterval(() => {\r\n const progress = {\r\n totalSize: 0,\r\n processedSize: 0,\r\n total: 0,\r\n processed: 0,\r\n };\r\n setUploaders((uploaders) => {\r\n uploaders.forEach((u) => {\r\n if (u.id <= lastProgressStart) {\r\n return;\r\n }\r\n\r\n progress.totalSize += u.task.size;\r\n progress.total += 1;\r\n\r\n if (\r\n u.status === Status.finished ||\r\n u.status === Status.canceled ||\r\n u.status === Status.error\r\n ) {\r\n progress.processedSize += u.task.size;\r\n progress.processed += 1;\r\n }\r\n\r\n if (\r\n u.status === Status.added ||\r\n u.status === Status.initialized ||\r\n u.status === Status.queued ||\r\n u.status === Status.preparing ||\r\n u.status === Status.processing ||\r\n u.status === Status.finishing\r\n ) {\r\n progress.processedSize += u.progress\r\n ? u.progress.total.loaded\r\n : 0;\r\n }\r\n });\r\n\r\n if (\r\n progress.total > 0 &&\r\n progress.processed === progress.total\r\n ) {\r\n lastProgressStart = uploaders[uploaders.length - 1].id;\r\n }\r\n return uploaders;\r\n });\r\n\r\n if (\r\n progress.total > 0 &&\r\n progress.total === progress.processed\r\n ) {\r\n RefreshFileList();\r\n RefreshStorage();\r\n }\r\n\r\n setTotalProgress(progress);\r\n }, 2000);\r\n }\r\n }, []);\r\n\r\n const selectFile = (path, type = SelectType.File, original = null) => {\r\n setTaskListOpen(true);\r\n\r\n // eslint-disable-next-line no-unreachable\r\n uploadManager\r\n .select(path, type)\r\n .then(taskAdded(original))\r\n .catch((e) => {\r\n if (e instanceof UploaderError) {\r\n ToggleSnackbar(\"top\", \"right\", e.Message(), \"warning\");\r\n } else {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"unknownError\", { msg: e.message }),\r\n \"error\"\r\n );\r\n }\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (fileSelectCounter > 0) {\r\n selectFile(path);\r\n }\r\n }, [fileSelectCounter]);\r\n\r\n useEffect(() => {\r\n if (folderSelectCounter > 0) {\r\n selectFile(path, SelectType.Directory);\r\n }\r\n }, [folderSelectCounter]);\r\n\r\n const deleteTask = (filter) => {\r\n setUploaders((uploaders) => uploaders.filter(filter));\r\n };\r\n\r\n return (\r\n <>\r\n {enableUploader && (\r\n <>\r\n 0} />\r\n setTaskListOpen(true)}\r\n />\r\n setTaskListOpen(false)}\r\n setUploaders={setUploaders}\r\n />\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport { blue } from \"@material-ui/core/colors\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst useStyles = makeStyles({\r\n avatar: {\r\n backgroundColor: blue[100],\r\n color: blue[600],\r\n },\r\n loadingContainer: {\r\n display: \"flex\",\r\n },\r\n loading: {\r\n marginTop: 10,\r\n marginLeft: 20,\r\n },\r\n});\r\n\r\nexport default function LoadingDialog() {\r\n const classes = useStyles();\r\n const open = useSelector((state) => state.viewUpdate.modals.loading);\r\n const text = useSelector((state) => state.viewUpdate.modals.loadingText);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
{text}
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport {\r\n Button,\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n makeStyles,\r\n} from \"@material-ui/core\";\r\nimport PathSelector from \"../FileManager/PathSelector\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport API from \"../../middleware/Api\";\r\nimport {\r\n refreshFileList,\r\n setModalsLoading,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { Trans, useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n contentFix: {\r\n padding: \"10px 24px 0px 24px\",\r\n },\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: \"relative\",\r\n },\r\n buttonProgress: {\r\n color: theme.palette.secondary.light,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n}));\r\n\r\nexport default function CopyDialog(props) {\r\n const { t } = useTranslation();\r\n const [selectedPath, setSelectedPath] = useState(\"\");\r\n const [selectedPathName, setSelectedPathName] = useState(\"\");\r\n\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const SetModalsLoading = useCallback(\r\n (status) => {\r\n dispatch(setModalsLoading(status));\r\n },\r\n [dispatch]\r\n );\r\n const RefreshFileList = useCallback(() => {\r\n dispatch(refreshFileList());\r\n }, [dispatch]);\r\n\r\n const setMoveTarget = (folder) => {\r\n const path =\r\n folder.path === \"/\"\r\n ? folder.path + folder.name\r\n : folder.path + \"/\" + folder.name;\r\n setSelectedPath(path);\r\n setSelectedPathName(folder.name);\r\n };\r\n\r\n const submitMove = (e) => {\r\n if (e != null) {\r\n e.preventDefault();\r\n }\r\n SetModalsLoading(true);\r\n const dirs = [],\r\n items = [];\r\n // eslint-disable-next-line\r\n\r\n if (props.selected[0].type === \"dir\") {\r\n dirs.push(props.selected[0].id);\r\n } else {\r\n items.push(props.selected[0].id);\r\n }\r\n\r\n API.post(\"/object/copy\", {\r\n src_dir: props.selected[0].path,\r\n src: {\r\n dirs: dirs,\r\n items: items,\r\n },\r\n dst: selectedPath === \"//\" ? \"/\" : selectedPath,\r\n })\r\n .then(() => {\r\n props.onClose();\r\n RefreshFileList();\r\n SetModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n SetModalsLoading(false);\r\n });\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {t(\"fileManager.copyTo\")}\r\n \r\n \r\n\r\n {selectedPath !== \"\" && (\r\n \r\n \r\n ]}\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n {t(\"ok\", { ns: \"common\" })}\r\n {props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React, { useCallback, useRef } from \"react\";\r\nimport {\r\n Button,\r\n Checkbox,\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n FormControl,\r\n makeStyles,\r\n TextField,\r\n} from \"@material-ui/core\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport API from \"../../middleware/Api\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\r\nimport LockIcon from \"@material-ui/icons/Lock\";\r\nimport TimerIcon from \"@material-ui/icons/Timer\";\r\nimport CasinoIcon from \"@material-ui/icons/Casino\";\r\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\r\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\r\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport { Visibility, VisibilityOff } from \"@material-ui/icons\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport ToggleIcon from \"material-ui-toggle-icon\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n widthAnimation: {},\r\n shareUrl: {\r\n minWidth: \"400px\",\r\n },\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: \"relative\",\r\n },\r\n buttonProgress: {\r\n color: theme.palette.secondary.light,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n },\r\n flexCenter: {\r\n alignItems: \"center\",\r\n },\r\n noFlex: {\r\n display: \"block\",\r\n },\r\n scoreCalc: {\r\n marginTop: 10,\r\n },\r\n}));\r\n\r\nconst ExpansionPanel = withStyles({\r\n root: {\r\n border: \"0px solid rgba(0, 0, 0, .125)\",\r\n boxShadow: \"none\",\r\n \"&:not(:last-child)\": {\r\n borderBottom: 0,\r\n },\r\n \"&:before\": {\r\n display: \"none\",\r\n },\r\n \"&$expanded\": {\r\n margin: \"auto\",\r\n },\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanel);\r\n\r\nconst ExpansionPanelSummary = withStyles({\r\n root: {\r\n padding: 0,\r\n \"&$expanded\": {},\r\n },\r\n content: {\r\n margin: 0,\r\n display: \"initial\",\r\n \"&$expanded\": {\r\n margin: \"0 0\",\r\n },\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanelSummary);\r\n\r\nconst ExpansionPanelDetails = withStyles((theme) => ({\r\n root: {\r\n padding: 24,\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n}))(MuiExpansionPanelDetails);\r\n\r\nexport default function CreatShare(props) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n const lastSubmit = useRef(null);\r\n const [expanded, setExpanded] = React.useState(false);\r\n const [shareURL, setShareURL] = React.useState(\"\");\r\n const [values, setValues] = React.useState({\r\n password: \"\",\r\n downloads: 1,\r\n expires: 24 * 3600,\r\n showPassword: false,\r\n });\r\n const [shareOption, setShareOption] = React.useState({\r\n password: false,\r\n expire: false,\r\n preview: true,\r\n });\r\n\r\n const handleChange = (prop) => (event) => {\r\n // 输入密码\r\n if (prop === \"password\") {\r\n if (event.target.value === \"\") {\r\n setShareOption({ ...shareOption, password: false });\r\n } else {\r\n setShareOption({ ...shareOption, password: true });\r\n }\r\n }\r\n\r\n setValues({ ...values, [prop]: event.target.value });\r\n };\r\n\r\n const handleClickShowPassword = () => {\r\n setValues({ ...values, showPassword: !values.showPassword });\r\n };\r\n\r\n const handleMouseDownPassword = (event) => {\r\n event.preventDefault();\r\n };\r\n\r\n const randomPassword = () => {\r\n setShareOption({ ...shareOption, password: true });\r\n setValues({\r\n ...values,\r\n password: Math.random().toString(36).substr(2).slice(2, 8),\r\n showPassword: true,\r\n });\r\n };\r\n\r\n const handleExpand = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const handleCheck = (prop) => () => {\r\n if (!shareOption[prop]) {\r\n handleExpand(prop)(null, true);\r\n }\r\n if (prop === \"password\" && shareOption[prop]) {\r\n setValues({\r\n ...values,\r\n password: \"\",\r\n });\r\n }\r\n setShareOption({ ...shareOption, [prop]: !shareOption[prop] });\r\n };\r\n\r\n const onClose = () => {\r\n props.onClose();\r\n setTimeout(() => {\r\n setShareURL(\"\");\r\n }, 500);\r\n };\r\n\r\n const senLink = () => {\r\n if (navigator.share) {\r\n let text = t(\"modals.shareLinkShareContent\", {\r\n name: props.selected[0].name,\r\n link: shareURL,\r\n });\r\n if (lastSubmit.current && lastSubmit.current.password) {\r\n text += t(\"modals.shareLinkPasswordInfo\", {\r\n password: lastSubmit.current.password,\r\n });\r\n }\r\n navigator.share({ text });\r\n } else if (navigator.clipboard) {\r\n navigator.clipboard.writeText(shareURL);\r\n ToggleSnackbar(\"top\", \"right\", t(\"modals.linkCopied\"), \"info\");\r\n }\r\n };\r\n\r\n const submitShare = (e) => {\r\n e.preventDefault();\r\n props.setModalsLoading(true);\r\n const submitFormBody = {\r\n id: props.selected[0].id,\r\n is_dir: props.selected[0].type === \"dir\",\r\n password: values.password,\r\n downloads: shareOption.expire ? values.downloads : -1,\r\n expire: values.expires,\r\n preview: shareOption.preview,\r\n };\r\n lastSubmit.current = submitFormBody;\r\n\r\n API.post(\"/share\", submitFormBody)\r\n .then((response) => {\r\n setShareURL(response.data);\r\n setValues({\r\n password: \"\",\r\n downloads: 1,\r\n expires: 24 * 3600,\r\n showPassword: false,\r\n });\r\n setShareOption({\r\n password: false,\r\n expire: false,\r\n });\r\n props.setModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n props.setModalsLoading(false);\r\n });\r\n };\r\n\r\n const handleFocus = (event) => event.target.select();\r\n\r\n return (\r\n \r\n \r\n {t(\"modals.createShareLink\")}\r\n \r\n\r\n {shareURL === \"\" && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"modals.sharePassword\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n offIcon={\r\n \r\n }\r\n />\r\n \r\n \r\n }\r\n labelWidth={70}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {[1, 2, 3, 4, 5, 20, 50, 100].map(\r\n (v) => (\r\n \r\n {t(\r\n \"modals.downloadLimitOptions\",\r\n { num: v }\r\n )}\r\n \r\n )\r\n )}\r\n \r\n \r\n {t(\"modals.or\")}\r\n \r\n \r\n \r\n {t(\"modals.5minutes\")}\r\n \r\n \r\n {t(\"modals.1hour\")}\r\n \r\n \r\n {t(\"modals.1day\")}\r\n \r\n \r\n {t(\"modals.7days\")}\r\n \r\n \r\n {t(\"modals.30days\")}\r\n \r\n \r\n \r\n \r\n {t(\"modals.downloadSuffix\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"modals.allowPreviewDescription\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {shareURL !== \"\" && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n {shareURL !== \"\" && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n\r\n {shareURL === \"\" && (\r\n
\r\n \r\n {t(\"modals.createShareLink\")}\r\n {props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n )}\r\n
\r\n \r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport {\r\n Button,\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n makeStyles,\r\n} from \"@material-ui/core\";\r\nimport PathSelector from \"../FileManager/PathSelector\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\r\nimport { submitDecompressTask } from \"../../redux/explorer/action\";\r\nimport { Trans, useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n contentFix: {\r\n padding: \"10px 24px 0px 24px\",\r\n },\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: \"relative\",\r\n },\r\n buttonProgress: {\r\n color: theme.palette.secondary.light,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n}));\r\n\r\nexport default function DecompressDialog(props) {\r\n const { t } = useTranslation();\r\n const [selectedPath, setSelectedPath] = useState(\"\");\r\n const [selectedPathName, setSelectedPathName] = useState(\"\");\r\n\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const SetModalsLoading = useCallback(\r\n (status) => {\r\n dispatch(setModalsLoading(status));\r\n },\r\n [dispatch]\r\n );\r\n const SubmitDecompressTask = useCallback(\r\n (path) => dispatch(submitDecompressTask(path)),\r\n [dispatch]\r\n );\r\n\r\n const setMoveTarget = (folder) => {\r\n const path =\r\n folder.path === \"/\"\r\n ? folder.path + folder.name\r\n : folder.path + \"/\" + folder.name;\r\n setSelectedPath(path);\r\n setSelectedPathName(folder.name);\r\n };\r\n\r\n const submitMove = (e) => {\r\n if (e != null) {\r\n e.preventDefault();\r\n }\r\n SetModalsLoading(true);\r\n SubmitDecompressTask(selectedPath)\r\n .then(() => {\r\n props.onClose();\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"modals.taskCreated\"),\r\n \"success\"\r\n );\r\n SetModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n SetModalsLoading(false);\r\n });\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {t(\"modals.decompressTo\")}\r\n \r\n \r\n\r\n {selectedPath !== \"\" && (\r\n \r\n \r\n ]}\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n {t(\"ok\", { ns: \"common\" })}\r\n {props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport {\r\n Button,\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n makeStyles,\r\n} from \"@material-ui/core\";\r\nimport PathSelector from \"../FileManager/PathSelector\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\r\nimport { submitCompressTask } from \"../../redux/explorer/action\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n contentFix: {\r\n padding: \"10px 24px 0px 24px\",\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: \"relative\",\r\n },\r\n buttonProgress: {\r\n color: theme.palette.secondary.light,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n}));\r\n\r\nexport default function CompressDialog(props) {\r\n const { t } = useTranslation();\r\n const [selectedPath, setSelectedPath] = useState(\"\");\r\n const [fileName, setFileName] = useState(\"\");\r\n // eslint-disable-next-line\r\n const [selectedPathName, setSelectedPathName] = useState(\"\");\r\n\r\n const dispatch = useDispatch();\r\n\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n const SetModalsLoading = useCallback(\r\n (status) => {\r\n dispatch(setModalsLoading(status));\r\n },\r\n [dispatch]\r\n );\r\n\r\n const SubmitCompressTask = useCallback(\r\n (name, path) => dispatch(submitCompressTask(name, path)),\r\n [dispatch]\r\n );\r\n\r\n const setMoveTarget = (folder) => {\r\n const path =\r\n folder.path === \"/\"\r\n ? folder.path + folder.name\r\n : folder.path + \"/\" + folder.name;\r\n setSelectedPath(path);\r\n setSelectedPathName(folder.name);\r\n };\r\n\r\n const submitMove = (e) => {\r\n if (e != null) {\r\n e.preventDefault();\r\n }\r\n SetModalsLoading(true);\r\n\r\n SubmitCompressTask(fileName, selectedPath)\r\n .then(() => {\r\n props.onClose();\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"modals.taskCreated\"),\r\n \"success\"\r\n );\r\n SetModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n SetModalsLoading(false);\r\n });\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {t(\"modals.saveToTitle\")}\r\n \r\n \r\n\r\n {selectedPath !== \"\" && (\r\n \r\n \r\n setFileName(e.target.value)}\r\n value={fileName}\r\n fullWidth\r\n autoFocus\r\n id=\"standard-basic\"\r\n label={t(\"modals.zipFileName\")}\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n {t(\"ok\", { ns: \"common\" })}\r\n {props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport PathSelector from \"./PathSelector\";\r\nimport API from \"../../middleware/Api\";\r\nimport {\r\n Button,\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n TextField,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport Loading from \"../Modals/Loading\";\r\nimport CopyDialog from \"../Modals/Copy\";\r\nimport CreatShare from \"../Modals/CreateShare\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport DecompressDialog from \"../Modals/Decompress\";\r\nimport CompressDialog from \"../Modals/Compress\";\r\nimport {\r\n closeAllModals,\r\n openLoadingDialog,\r\n refreshFileList,\r\n refreshStorage,\r\n setModalsLoading,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport OptionSelector from \"../Modals/OptionSelector\";\r\nimport { getDownloadURL } from \"../../services/file\";\r\nimport { Trans, withTranslation } from \"react-i18next\";\r\n\r\nconst styles = (theme) => ({\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: \"relative\",\r\n },\r\n buttonProgress: {\r\n color: theme.palette.secondary.light,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n contentFix: {\r\n padding: \"10px 24px 0px 24px\",\r\n },\r\n});\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n path: state.navigator.path,\r\n selected: state.explorer.selected,\r\n modalsStatus: state.viewUpdate.modals,\r\n modalsLoading: state.viewUpdate.modalsLoading,\r\n dirList: state.explorer.dirList,\r\n fileList: state.explorer.fileList,\r\n dndSignale: state.explorer.dndSignal,\r\n dndTarget: state.explorer.dndTarget,\r\n dndSource: state.explorer.dndSource,\r\n loading: state.viewUpdate.modals.loading,\r\n loadingText: state.viewUpdate.modals.loadingText,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n closeAllModals: () => {\r\n dispatch(closeAllModals());\r\n },\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n setModalsLoading: (status) => {\r\n dispatch(setModalsLoading(status));\r\n },\r\n refreshFileList: () => {\r\n dispatch(refreshFileList());\r\n },\r\n refreshStorage: () => {\r\n dispatch(refreshStorage());\r\n },\r\n openLoadingDialog: (text) => {\r\n dispatch(openLoadingDialog(text));\r\n },\r\n };\r\n};\r\n\r\nclass ModalsCompoment extends Component {\r\n state = {\r\n newFolderName: \"\",\r\n newFileName: \"\",\r\n newName: \"\",\r\n selectedPath: \"\",\r\n selectedPathName: \"\",\r\n secretShare: false,\r\n sharePwd: \"\",\r\n shareUrl: \"\",\r\n downloadURL: \"\",\r\n remoteDownloadPathSelect: false,\r\n purchaseCallback: null,\r\n };\r\n\r\n handleInputChange = (e) => {\r\n this.setState({\r\n [e.target.id]: e.target.value,\r\n });\r\n };\r\n\r\n newNameSuffix = \"\";\r\n\r\n UNSAFE_componentWillReceiveProps = (nextProps) => {\r\n if (this.props.dndSignale !== nextProps.dndSignale) {\r\n this.dragMove(nextProps.dndSource, nextProps.dndTarget);\r\n return;\r\n }\r\n\r\n if (this.props.modalsStatus.rename !== nextProps.modalsStatus.rename) {\r\n const name = nextProps.selected[0].name;\r\n this.setState({\r\n newName: name,\r\n });\r\n return;\r\n }\r\n };\r\n\r\n scoreHandler = (callback) => {\r\n callback();\r\n };\r\n\r\n Download = () => {\r\n getDownloadURL(this.props.selected[0])\r\n .then((response) => {\r\n window.location.assign(response.data);\r\n this.onClose();\r\n this.downloaded = true;\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n this.onClose();\r\n });\r\n };\r\n\r\n submitRemove = (e) => {\r\n e.preventDefault();\r\n this.props.setModalsLoading(true);\r\n const dirs = [],\r\n items = [];\r\n // eslint-disable-next-line\r\n this.props.selected.map((value) => {\r\n if (value.type === \"dir\") {\r\n dirs.push(value.id);\r\n } else {\r\n items.push(value.id);\r\n }\r\n });\r\n API.delete(\"/object\", {\r\n data: {\r\n items: items,\r\n dirs: dirs,\r\n },\r\n })\r\n .then((response) => {\r\n if (response.rawData.code === 0) {\r\n this.onClose();\r\n setTimeout(this.props.refreshFileList, 500);\r\n } else {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n response.rawData.msg,\r\n \"warning\"\r\n );\r\n }\r\n this.props.setModalsLoading(false);\r\n this.props.refreshStorage();\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n this.props.setModalsLoading(false);\r\n });\r\n };\r\n\r\n submitMove = (e) => {\r\n if (e != null) {\r\n e.preventDefault();\r\n }\r\n this.props.setModalsLoading(true);\r\n const dirs = [],\r\n items = [];\r\n // eslint-disable-next-line\r\n this.props.selected.map((value) => {\r\n if (value.type === \"dir\") {\r\n dirs.push(value.id);\r\n } else {\r\n items.push(value.id);\r\n }\r\n });\r\n API.patch(\"/object\", {\r\n action: \"move\",\r\n src_dir: this.props.selected[0].path,\r\n src: {\r\n dirs: dirs,\r\n items: items,\r\n },\r\n dst: this.DragSelectedPath\r\n ? this.DragSelectedPath\r\n : this.state.selectedPath === \"//\"\r\n ? \"/\"\r\n : this.state.selectedPath,\r\n })\r\n .then(() => {\r\n this.onClose();\r\n this.props.refreshFileList();\r\n this.props.setModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n this.props.setModalsLoading(false);\r\n })\r\n .then(() => {\r\n this.props.closeAllModals();\r\n });\r\n };\r\n\r\n dragMove = (source, target) => {\r\n if (this.props.selected.length === 0) {\r\n this.props.selected[0] = source;\r\n }\r\n let doMove = true;\r\n\r\n // eslint-disable-next-line\r\n this.props.selected.map((value) => {\r\n // 根据ID过滤\r\n if (value.id === target.id && value.type === target.type) {\r\n doMove = false;\r\n // eslint-disable-next-line\r\n return;\r\n }\r\n // 根据路径过滤\r\n if (\r\n value.path ===\r\n target.path + (target.path === \"/\" ? \"\" : \"/\") + target.name\r\n ) {\r\n doMove = false;\r\n // eslint-disable-next-line\r\n return;\r\n }\r\n });\r\n if (doMove) {\r\n this.DragSelectedPath =\r\n target.path === \"/\"\r\n ? target.path + target.name\r\n : target.path + \"/\" + target.name;\r\n this.props.openLoadingDialog(this.props.t(\"modals.processing\"));\r\n this.submitMove();\r\n }\r\n };\r\n\r\n submitRename = (e) => {\r\n e.preventDefault();\r\n this.props.setModalsLoading(true);\r\n const newName = this.state.newName;\r\n\r\n const src = {\r\n dirs: [],\r\n items: [],\r\n };\r\n\r\n if (this.props.selected[0].type === \"dir\") {\r\n src.dirs[0] = this.props.selected[0].id;\r\n } else {\r\n src.items[0] = this.props.selected[0].id;\r\n }\r\n\r\n // 检查重名\r\n if (\r\n this.props.dirList.findIndex((value) => {\r\n return value.name === newName;\r\n }) !== -1 ||\r\n this.props.fileList.findIndex((value) => {\r\n return value.name === newName;\r\n }) !== -1\r\n ) {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"modals.duplicatedObjectName\"),\r\n \"warning\"\r\n );\r\n this.props.setModalsLoading(false);\r\n } else {\r\n API.post(\"/object/rename\", {\r\n action: \"rename\",\r\n src: src,\r\n new_name: newName,\r\n })\r\n .then(() => {\r\n this.onClose();\r\n this.props.refreshFileList();\r\n this.props.setModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n this.props.setModalsLoading(false);\r\n });\r\n }\r\n };\r\n\r\n submitCreateNewFolder = (e) => {\r\n e.preventDefault();\r\n this.props.setModalsLoading(true);\r\n if (\r\n this.props.dirList.findIndex((value) => {\r\n return value.name === this.state.newFolderName;\r\n }) !== -1\r\n ) {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"modals.duplicatedFolderName\"),\r\n \"warning\"\r\n );\r\n this.props.setModalsLoading(false);\r\n } else {\r\n API.put(\"/directory\", {\r\n path:\r\n (this.props.path === \"/\" ? \"\" : this.props.path) +\r\n \"/\" +\r\n this.state.newFolderName,\r\n })\r\n .then(() => {\r\n this.onClose();\r\n this.props.refreshFileList();\r\n this.props.setModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n this.props.setModalsLoading(false);\r\n\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n });\r\n }\r\n //this.props.toggleSnackbar();\r\n };\r\n\r\n submitCreateNewFile = (e) => {\r\n e.preventDefault();\r\n this.props.setModalsLoading(true);\r\n if (\r\n this.props.dirList.findIndex((value) => {\r\n return value.name === this.state.newFileName;\r\n }) !== -1\r\n ) {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"modals.duplicatedFolderName\"),\r\n \"warning\"\r\n );\r\n this.props.setModalsLoading(false);\r\n } else {\r\n API.post(\"/file/create\", {\r\n path:\r\n (this.props.path === \"/\" ? \"\" : this.props.path) +\r\n \"/\" +\r\n this.state.newFileName,\r\n })\r\n .then(() => {\r\n this.onClose();\r\n this.props.refreshFileList();\r\n this.props.setModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n this.props.setModalsLoading(false);\r\n\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n });\r\n }\r\n //this.props.toggleSnackbar();\r\n };\r\n\r\n submitTorrentDownload = (e) => {\r\n e.preventDefault();\r\n this.props.setModalsLoading(true);\r\n API.post(\"/aria2/torrent/\" + this.props.selected[0].id, {\r\n dst:\r\n this.state.selectedPath === \"//\"\r\n ? \"/\"\r\n : this.state.selectedPath,\r\n })\r\n .then(() => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"modals.taskCreated\"),\r\n \"success\"\r\n );\r\n this.onClose();\r\n this.props.setModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n this.props.setModalsLoading(false);\r\n });\r\n };\r\n\r\n submitDownload = (e) => {\r\n e.preventDefault();\r\n this.props.setModalsLoading(true);\r\n API.post(\"/aria2/url\", {\r\n url: this.state.downloadURL.split(\"\\n\"),\r\n dst:\r\n this.state.selectedPath === \"//\"\r\n ? \"/\"\r\n : this.state.selectedPath,\r\n })\r\n .then((response) => {\r\n const failed = response.data\r\n .filter((r) => r.code !== 0)\r\n .map((r) => r.msg + (r.error ? r.error : \"\"));\r\n if (failed.length > 0) {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"modals.taskCreateFailed\", {\r\n failed: failed.length,\r\n details: failed.join(\",\"),\r\n }),\r\n \"warning\"\r\n );\r\n } else {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"modals.taskCreated\"),\r\n \"success\"\r\n );\r\n }\r\n\r\n this.onClose();\r\n this.props.setModalsLoading(false);\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n this.props.setModalsLoading(false);\r\n });\r\n };\r\n\r\n setMoveTarget = (folder) => {\r\n const path =\r\n folder.path === \"/\"\r\n ? folder.path + folder.name\r\n : folder.path + \"/\" + folder.name;\r\n this.setState({\r\n selectedPath: path,\r\n selectedPathName: folder.name,\r\n });\r\n };\r\n\r\n remoteDownloadNext = () => {\r\n this.props.closeAllModals();\r\n this.setState({\r\n remoteDownloadPathSelect: true,\r\n });\r\n };\r\n\r\n onClose = () => {\r\n this.setState({\r\n newFolderName: \"\",\r\n newFileName: \"\",\r\n newName: \"\",\r\n selectedPath: \"\",\r\n selectedPathName: \"\",\r\n secretShare: false,\r\n sharePwd: \"\",\r\n downloadURL: \"\",\r\n shareUrl: \"\",\r\n remoteDownloadPathSelect: false,\r\n });\r\n this.newNameSuffix = \"\";\r\n this.props.closeAllModals();\r\n };\r\n\r\n handleChange = (name) => (event) => {\r\n this.setState({ [name]: event.target.checked });\r\n };\r\n\r\n copySource = () => {\r\n if (navigator.clipboard) {\r\n navigator.clipboard.writeText(this.props.modalsStatus.getSource);\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"modals.linkCopied\"),\r\n \"info\"\r\n );\r\n }\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {t(\"modals.getSourceLinkTitle\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"fileManager.newFolder\")}\r\n \r\n\r\n \r\n
\r\n this.handleInputChange(e)}\r\n fullWidth\r\n />\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {t(\"modals.create\")}\r\n {this.props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n {t(\"fileManager.newFile\")}\r\n \r\n\r\n \r\n
\r\n this.handleInputChange(e)}\r\n fullWidth\r\n />\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {t(\"modals.create\")}\r\n {this.props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n {t(\"fileManager.rename\")}\r\n \r\n \r\n \r\n ]}\r\n />\r\n \r\n
\r\n this.handleInputChange(e)}\r\n fullWidth\r\n />\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {t(\"ok\", { ns: \"common\" })}\r\n {this.props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n {t(\"modals.moveToTitle\")}\r\n \r\n \r\n\r\n {this.state.selectedPath !== \"\" && (\r\n \r\n \r\n ]}\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n {t(\"ok\", { ns: \"common\" })}\r\n {this.props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {t(\"modals.deleteTitle\")}\r\n \r\n\r\n \r\n \r\n {this.props.selected.length === 1 && (\r\n ]}\r\n />\r\n )}\r\n {this.props.selected.length > 1 &&\r\n t(\"modals.deleteMultipleDescription\", {\r\n num: this.props.selected.length,\r\n })}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {t(\"ok\", { ns: \"common\" })}\r\n {this.props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n {t(\"modals.newRemoteDownloadTitle\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"ok\", { ns: \"common\" })}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"modals.remoteDownloadDst\")}\r\n \r\n \r\n\r\n {this.state.selectedPath !== \"\" && (\r\n \r\n \r\n ]}\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n {t(\"modals.createTask\")}\r\n {this.props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {t(\"modals.remoteDownloadDst\")}\r\n \r\n \r\n\r\n {this.state.selectedPath !== \"\" && (\r\n \r\n \r\n ]}\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n {t(\"modals.createTask\")}\r\n {this.props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nModalsCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst Modals = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(ModalsCompoment))));\r\n\r\nexport default Modals;\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport SettingIcon from \"@material-ui/icons/Settings\";\r\nimport UserAvatarPopover from \"./UserAvatarPopover\";\r\nimport { AccountCircle } from \"mdi-material-ui\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport {\r\n Avatar,\r\n Grow,\r\n IconButton,\r\n Tooltip,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\r\nimport { Home } from \"@material-ui/icons\";\r\nimport { setUserPopover } from \"../../redux/explorer\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n selected: state.explorer.selected,\r\n isMultiple: state.explorer.selectProps.isMultiple,\r\n withFolder: state.explorer.selectProps.withFolder,\r\n withFile: state.explorer.selectProps.withFile,\r\n isLogin: state.viewUpdate.isLogin,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n setUserPopover: (anchor) => {\r\n dispatch(setUserPopover(anchor));\r\n },\r\n };\r\n};\r\n\r\nconst styles = (theme) => ({\r\n mobileHidden: {\r\n [theme.breakpoints.down(\"xs\")]: {\r\n display: \"none\",\r\n },\r\n whiteSpace: \"nowrap\",\r\n },\r\n avatar: {\r\n width: \"30px\",\r\n height: \"30px\",\r\n },\r\n header: {\r\n display: \"flex\",\r\n padding: \"20px 20px 20px 20px\",\r\n },\r\n largeAvatar: {\r\n height: \"90px\",\r\n width: \"90px\",\r\n },\r\n info: {\r\n marginLeft: \"10px\",\r\n width: \"139px\",\r\n },\r\n badge: {\r\n marginTop: \"10px\",\r\n },\r\n visitorMenu: {\r\n width: 200,\r\n },\r\n});\r\n\r\nclass UserAvatarCompoment extends Component {\r\n state = {\r\n anchorEl: null,\r\n };\r\n\r\n showUserInfo = (e) => {\r\n this.props.setUserPopover(e.currentTarget);\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({\r\n anchorEl: null,\r\n });\r\n };\r\n\r\n openURL = (url) => {\r\n window.location.href = url;\r\n };\r\n\r\n returnHome = () => {\r\n window.location.href = \"/home\";\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const loginCheck = Auth.Check(this.props.isLogin);\r\n const user = Auth.GetUser(this.props.isLogin);\r\n const isAdminPage = pathHelper.isAdminPage(\r\n this.props.location.pathname\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n {!isAdminPage && (\r\n <>\r\n \r\n {loginCheck && (\r\n <>\r\n \r\n \r\n this.props.history.push(\r\n \"/setting?\"\r\n )\r\n }\r\n color=\"inherit\"\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {isAdminPage && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {!loginCheck && }\r\n {loginCheck && (\r\n \r\n )}\r\n {\" \"}\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nUserAvatarCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst UserAvatar = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(UserAvatarCompoment))));\r\n\r\nexport default UserAvatar;\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport { fade } from \"@material-ui/core/styles/colorManipulator\";\r\nimport FileIcon from \"@material-ui/icons/InsertDriveFile\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n Fade,\r\n InputBase,\r\n ListItemIcon,\r\n ListItemText,\r\n MenuItem,\r\n Paper,\r\n Popper,\r\n Typography,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport { withRouter } from \"react-router\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport { configure, HotKeys } from \"react-hotkeys\";\r\nimport { searchMyFile } from \"../../redux/explorer\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport { Trans, withTranslation } from \"react-i18next\";\r\n\r\nconfigure({\r\n ignoreTags: [],\r\n});\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n path: state.navigator.path,\r\n search: state.explorer.search,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n searchMyFile: (keywords, path) => {\r\n dispatch(searchMyFile(keywords, path));\r\n },\r\n };\r\n};\r\n\r\nconst styles = (theme) => ({\r\n search: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n position: \"relative\",\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.common.white, 0.15),\r\n \"&:hover\": {\r\n backgroundColor: fade(theme.palette.common.white, 0.25),\r\n },\r\n marginRight: theme.spacing(2),\r\n marginLeft: 0,\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n marginLeft: theme.spacing(7.2),\r\n width: \"auto\",\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing(9),\r\n height: \"100%\",\r\n position: \"absolute\",\r\n pointerEvents: \"none\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n inputRoot: {\r\n color: \"inherit\",\r\n width: \"100%\",\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(1),\r\n paddingRight: theme.spacing(1),\r\n paddingBottom: theme.spacing(1),\r\n paddingLeft: theme.spacing(7),\r\n transition: theme.transitions.create(\"width\"),\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: 200,\r\n \"&:focus\": {\r\n width: 300,\r\n },\r\n },\r\n },\r\n suggestBox: {\r\n zIndex: \"9999\",\r\n width: 364,\r\n },\r\n});\r\n\r\nconst keyMap = {\r\n SEARCH: \"enter\",\r\n};\r\n\r\nclass SearchBarCompoment extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n anchorEl: null,\r\n input: \"\",\r\n };\r\n }\r\n\r\n handlers = {\r\n SEARCH: (e) => {\r\n if (pathHelper.isHomePage(this.props.location.pathname)) {\r\n this.searchMyFile(\"\")();\r\n } else {\r\n this.searchShare();\r\n }\r\n e.target.blur();\r\n },\r\n };\r\n\r\n handleChange = (event) => {\r\n const { currentTarget } = event;\r\n this.input = event.target.value;\r\n this.setState({\r\n anchorEl: currentTarget,\r\n input: event.target.value,\r\n });\r\n };\r\n\r\n cancelSuggest = () => {\r\n this.setState({\r\n input: \"\",\r\n });\r\n };\r\n\r\n searchMyFile = (path) => () => {\r\n this.props.searchMyFile(\"keywords/\" + this.input, path);\r\n };\r\n\r\n searchShare = () => {\r\n this.props.history.push(\r\n \"/search?keywords=\" + encodeURIComponent(this.input)\r\n );\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const { anchorEl } = this.state;\r\n const id = this.state.input !== \"\" ? \"simple-popper\" : null;\r\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n {isHomePage && (\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n ]}\r\n />\r\n \r\n }\r\n />\r\n \r\n )}\r\n\r\n {isHomePage &&\r\n this.props.path !== \"/\" &&\r\n !this.props.search && (\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n ]}\r\n />\r\n \r\n }\r\n />\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n ]}\r\n />\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nSearchBarCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst SearchBar = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(SearchBarCompoment))));\r\n\r\nexport default SearchBar;\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { Paper } from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\r\nimport API from \"../../middleware/Api\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Editor from \"for-editor\";\r\nimport SaveButton from \"../Dial/Save\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport TextLoading from \"../Placeholder/TextLoading\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"30px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n marginLeft: theme.spacing(12),\r\n marginRight: theme.spacing(12),\r\n },\r\n marginBottom: 50,\r\n },\r\n player: {\r\n borderRadius: \"4px\",\r\n },\r\n root: {\r\n backgroundColor: \"white\",\r\n borderRadius: \"8px\",\r\n },\r\n \"@global\": {\r\n \".for-toolbar\": {\r\n overflowX: \"auto!important\",\r\n },\r\n },\r\n}));\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nexport default function TextViewer() {\r\n const { t } = useTranslation();\r\n const [content, setContent] = useState(\"\");\r\n const [status, setStatus] = useState(\"\");\r\n const [loading, setLoading] = useState(true);\r\n const math = useRouteMatch();\r\n const $vm = React.createRef();\r\n const location = useLocation();\r\n const query = useQuery();\r\n const { id } = useParams();\r\n UseFileSubTitle(query, math, location);\r\n\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n let requestURL = \"/file/content/\" + query.get(\"id\");\r\n if (pathHelper.isSharePage(location.pathname)) {\r\n requestURL = \"/share/content/\" + id;\r\n if (query.get(\"share_path\") !== \"\") {\r\n requestURL +=\r\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\r\n }\r\n }\r\n\r\n setLoading(true);\r\n API.get(requestURL, { responseType: \"arraybuffer\" })\r\n .then((response) => {\r\n const buffer = new Buffer(response.rawData, \"binary\");\r\n const textdata = buffer.toString(); // for string\r\n setContent(textdata);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"fileManager.errorReadFileContent\", {\r\n msg: error.message,\r\n }),\r\n \"error\"\r\n );\r\n })\r\n .then(() => {\r\n setLoading(false);\r\n });\r\n // eslint-disable-next-line\r\n }, [math.params[0]]);\r\n\r\n const toBase64 = (file) =>\r\n new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = (error) => reject(error);\r\n });\r\n\r\n const save = () => {\r\n setStatus(\"loading\");\r\n API.put(\"/file/update/\" + query.get(\"id\"), content)\r\n .then(() => {\r\n setStatus(\"success\");\r\n setTimeout(() => setStatus(\"\"), 2000);\r\n })\r\n .catch((error) => {\r\n setStatus(\"\");\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n });\r\n };\r\n\r\n const addImg = async ($file) => {\r\n $vm.current.$img2Url($file.name, await toBase64($file));\r\n console.log($file);\r\n };\r\n\r\n const classes = useStyles();\r\n return (\r\n
\r\n \r\n {loading && }\r\n {!loading && (\r\n save()}\r\n addImg={($file) => addImg($file)}\r\n onChange={(value) => setContent(value)}\r\n toolbar={{\r\n h1: true, // h1\r\n h2: true, // h2\r\n h3: true, // h3\r\n h4: true, // h4\r\n img: true, // 图片\r\n link: true, // 链接\r\n code: true, // 代码块\r\n preview: true, // 预览\r\n expand: true, // 全屏\r\n /* v0.0.9 */\r\n undo: true, // 撤销\r\n redo: true, // 重做\r\n save: false, // 保存\r\n /* v0.2.3 */\r\n subfield: true, // 单双栏模式\r\n }}\r\n />\r\n )}\r\n \r\n {!pathHelper.isSharePage(location.pathname) && (\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\r\nimport { Paper, useTheme } from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\r\nimport API from \"../../middleware/Api\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport SaveButton from \"../Dial/Save\";\r\nimport { codePreviewSuffix } from \"../../config\";\r\nimport TextLoading from \"../Placeholder/TextLoading\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport Switch from \"@material-ui/core/Switch\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst MonacoEditor = React.lazy(() =>\r\n import(/* webpackChunkName: \"codeEditor\" */ \"react-monaco-editor\")\r\n);\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"30px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n marginBottom: 40,\r\n },\r\n editor: {\r\n borderRadius: \"4px\",\r\n },\r\n \"@global\": {\r\n \".overflow-guard\": {\r\n borderRadius: \"4px!important\",\r\n },\r\n },\r\n formControl: {\r\n margin: \"8px 16px 8px 16px\",\r\n },\r\n toobar: {\r\n textAlign: \"right\",\r\n },\r\n}));\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nexport default function CodeViewer() {\r\n const { t } = useTranslation();\r\n const [content, setContent] = useState(\"\");\r\n const [status, setStatus] = useState(\"\");\r\n const [loading, setLoading] = useState(true);\r\n const [suffix, setSuffix] = useState(\"javascript\");\r\n const [wordWrap, setWordWrap] = useState(\"off\");\r\n\r\n const math = useRouteMatch();\r\n const location = useLocation();\r\n const query = useQuery();\r\n const { id } = useParams();\r\n const theme = useTheme();\r\n const { title } = UseFileSubTitle(query, math, location);\r\n\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n const extension = title.split(\".\");\r\n setSuffix(codePreviewSuffix[extension.pop()]);\r\n // eslint-disable-next-line\r\n }, [title]);\r\n\r\n useEffect(() => {\r\n let requestURL = \"/file/content/\" + query.get(\"id\");\r\n if (pathHelper.isSharePage(location.pathname)) {\r\n requestURL = \"/share/content/\" + id;\r\n if (query.get(\"share_path\") !== \"\") {\r\n requestURL +=\r\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\r\n }\r\n }\r\n\r\n setLoading(true);\r\n API.get(requestURL, { responseType: \"arraybuffer\" })\r\n .then((response) => {\r\n const buffer = new Buffer(response.rawData, \"binary\");\r\n const textdata = buffer.toString(); // for string\r\n setContent(textdata);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"fileManager.errorReadFileContent\", {\r\n msg: error.message,\r\n }),\r\n \"error\"\r\n );\r\n })\r\n .then(() => {\r\n setLoading(false);\r\n });\r\n // eslint-disable-next-line\r\n }, [math.params[0]]);\r\n\r\n const save = () => {\r\n setStatus(\"loading\");\r\n API.put(\"/file/update/\" + query.get(\"id\"), content)\r\n .then(() => {\r\n setStatus(\"success\");\r\n setTimeout(() => setStatus(\"\"), 2000);\r\n })\r\n .catch((error) => {\r\n setStatus(\"\");\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n });\r\n };\r\n\r\n const classes = useStyles();\r\n const isSharePage = pathHelper.isSharePage(location.pathname);\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n setWordWrap(\r\n e.target.checked ? \"on\" : \"off\"\r\n )\r\n }\r\n />\r\n }\r\n label={t(\"fileManager.wordWrap\")}\r\n />\r\n \r\n \r\n setSuffix(e.target.value)}\r\n >\r\n {Array.from(\r\n new Set(\r\n Object.keys(codePreviewSuffix).map((k) => {\r\n return codePreviewSuffix[k];\r\n })\r\n )\r\n ).map((extension, index) => (\r\n \r\n {extension}\r\n \r\n ))}\r\n \r\n \r\n
\r\n \r\n {loading && }\r\n {!loading && (\r\n }>\r\n setContent(value)}\r\n />\r\n \r\n )}\r\n
\r\n {!isSharePage && }\r\n
\r\n );\r\n}\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\n\r\nimport Backend from \"i18next-http-backend\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\n\r\ni18n.use(Backend)\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n fallbackLng: \"en-US\",\r\n debug: true,\r\n ns: [\"common\", \"application\"],\r\n load: \"currentOnly\",\r\n defaultNS: \"application\",\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n });\r\n\r\ni18n.on(\"languageChanged\", (lng) => {\r\n document.documentElement.setAttribute(\"lang\", lng);\r\n});\r\n\r\nexport const languages = [\r\n {\r\n code: \"en-US\",\r\n displayName: \"English\",\r\n },\r\n {\r\n code: \"zh-CN\",\r\n displayName: \"简体中文\",\r\n },\r\n];\r\n\r\nexport default i18n;\r\n","import {\r\n OneDriveError,\r\n Policy,\r\n QiniuError,\r\n Response,\r\n UpyunError,\r\n} from \"../types\";\r\nimport { sizeToString } from \"../utils\";\r\nimport i18next from \"../../../../i18n\";\r\n\r\nexport enum UploaderErrorName {\r\n InvalidFile = \"InvalidFile\",\r\n NoPolicySelected = \"NoPolicySelected\",\r\n UnknownPolicyType = \"UnknownPolicyType\",\r\n FailedCreateUploadSession = \"FailedCreateUploadSession\",\r\n FailedDeleteUploadSession = \"FailedDeleteUploadSession\",\r\n HTTPRequestFailed = \"HTTPRequestFailed\",\r\n LocalChunkUploadFailed = \"LocalChunkUploadFailed\",\r\n SlaveChunkUploadFailed = \"SlaveChunkUploadFailed\",\r\n WriteCtxFailed = \"WriteCtxFailed\",\r\n RemoveCtxFailed = \"RemoveCtxFailed\",\r\n ReadCtxFailed = \"ReadCtxFailed\",\r\n InvalidCtxData = \"InvalidCtxData\",\r\n CtxExpired = \"CtxExpired\",\r\n RequestCanceled = \"RequestCanceled\",\r\n ProcessingTaskDuplicated = \"ProcessingTaskDuplicated\",\r\n OneDriveChunkUploadFailed = \"OneDriveChunkUploadFailed\",\r\n OneDriveEmptyFile = \"OneDriveEmptyFile\",\r\n FailedFinishOneDriveUpload = \"FailedFinishOneDriveUpload\",\r\n S3LikeChunkUploadFailed = \"S3LikeChunkUploadFailed\",\r\n S3LikeUploadCallbackFailed = \"S3LikeUploadCallbackFailed\",\r\n COSUploadCallbackFailed = \"COSUploadCallbackFailed\",\r\n COSPostUploadFailed = \"COSPostUploadFailed\",\r\n UpyunPostUploadFailed = \"UpyunPostUploadFailed\",\r\n QiniuChunkUploadFailed = \"QiniuChunkUploadFailed\",\r\n FailedFinishOSSUpload = \"FailedFinishOSSUpload\",\r\n FailedFinishQiniuUpload = \"FailedFinishQiniuUpload\",\r\n FailedTransformResponse = \"FailedTransformResponse\",\r\n}\r\n\r\nconst RETRY_ERROR_LIST = [\r\n UploaderErrorName.FailedCreateUploadSession,\r\n UploaderErrorName.HTTPRequestFailed,\r\n UploaderErrorName.LocalChunkUploadFailed,\r\n UploaderErrorName.SlaveChunkUploadFailed,\r\n UploaderErrorName.RequestCanceled,\r\n UploaderErrorName.ProcessingTaskDuplicated,\r\n UploaderErrorName.FailedTransformResponse,\r\n];\r\n\r\nconst RETRY_CODE_LIST = [-1];\r\n\r\nexport class UploaderError implements Error {\r\n public stack: string | undefined;\r\n constructor(public name: UploaderErrorName, public message: string) {\r\n this.stack = new Error().stack;\r\n }\r\n\r\n public Message(): string {\r\n return this.message;\r\n }\r\n\r\n public Retryable(): boolean {\r\n return RETRY_ERROR_LIST.includes(this.name);\r\n }\r\n}\r\n\r\n// 文件未通过存储策略验证\r\nexport class FileValidateError extends UploaderError {\r\n // 未通过验证的文件属性\r\n public field: \"size\" | \"suffix\";\r\n\r\n // 对应的存储策略\r\n public policy: Policy;\r\n\r\n constructor(message: string, field: \"size\" | \"suffix\", policy: Policy) {\r\n super(UploaderErrorName.InvalidFile, message);\r\n this.field = field;\r\n this.policy = policy;\r\n }\r\n\r\n public Message(): string {\r\n if (this.field == \"size\") {\r\n return i18next.t(`uploader.sizeExceedLimitError`, {\r\n max: sizeToString(this.policy.maxSize),\r\n });\r\n }\r\n\r\n return i18next.t(`uploader.suffixNotAllowedError`, {\r\n supported: this.policy.allowedSuffix\r\n ? this.policy.allowedSuffix.join(\",\")\r\n : \"*\",\r\n });\r\n }\r\n}\r\n\r\n// 未知存储策略\r\nexport class UnknownPolicyError extends UploaderError {\r\n // 对应的存储策略\r\n public policy: Policy;\r\n\r\n constructor(message: string, policy: Policy) {\r\n super(UploaderErrorName.UnknownPolicyType, message);\r\n this.policy = policy;\r\n }\r\n}\r\n\r\n// 后端 API 出错\r\nexport class APIError extends UploaderError {\r\n constructor(\r\n name: UploaderErrorName,\r\n message: string,\r\n protected response: Response\r\n ) {\r\n super(name, message);\r\n }\r\n\r\n public Message(): string {\r\n let msg = `${this.message}: ${this.response.msg}`;\r\n if (this.response.error) {\r\n msg += ` (${this.response.error})`;\r\n }\r\n\r\n return msg;\r\n }\r\n\r\n public Retryable(): boolean {\r\n return (\r\n super.Retryable() && RETRY_CODE_LIST.includes(this.response.code)\r\n );\r\n }\r\n}\r\n\r\n// 无法创建上传会话\r\nexport class CreateUploadSessionError extends APIError {\r\n constructor(response: Response) {\r\n super(UploaderErrorName.FailedCreateUploadSession, \"\", response);\r\n }\r\n\r\n public Message(): string {\r\n this.message = i18next.t(`uploader.createUploadSessionError`);\r\n return super.Message();\r\n }\r\n}\r\n\r\n// 无法删除上传会话\r\nexport class DeleteUploadSessionError extends APIError {\r\n constructor(response: Response) {\r\n super(UploaderErrorName.FailedDeleteUploadSession, \"\", response);\r\n }\r\n\r\n public Message(): string {\r\n this.message = i18next.t(`uploader.deleteUploadSessionError`);\r\n return super.Message();\r\n }\r\n}\r\n\r\n// HTTP 请求出错\r\nexport class HTTPError extends UploaderError {\r\n public response?: any;\r\n constructor(public axiosErr: any, protected url: string) {\r\n super(UploaderErrorName.HTTPRequestFailed, axiosErr.message);\r\n this.response = axiosErr.response;\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(`uploader.requestError`, {\r\n msg: this.axiosErr,\r\n url: this.url,\r\n });\r\n }\r\n}\r\n\r\n// 本地分块上传失败\r\nexport class LocalChunkUploadError extends APIError {\r\n constructor(response: Response, protected chunkIndex: number) {\r\n super(UploaderErrorName.LocalChunkUploadFailed, \"\", response);\r\n }\r\n\r\n public Message(): string {\r\n this.message = i18next.t(`uploader.chunkUploadError`, {\r\n index: this.chunkIndex,\r\n });\r\n return super.Message();\r\n }\r\n}\r\n\r\n// 无法创建上传会话\r\nexport class RequestCanceledError extends UploaderError {\r\n constructor() {\r\n super(UploaderErrorName.RequestCanceled, \"Request canceled\");\r\n }\r\n}\r\n\r\n// 从机分块上传失败\r\nexport class SlaveChunkUploadError extends APIError {\r\n constructor(response: Response, protected chunkIndex: number) {\r\n super(UploaderErrorName.SlaveChunkUploadFailed, \"\", response);\r\n }\r\n\r\n public Message(): string {\r\n this.message = i18next.t(`uploader.chunkUploadError`, {\r\n index: this.chunkIndex,\r\n });\r\n return super.Message();\r\n }\r\n}\r\n\r\n// 上传任务冲突\r\nexport class ProcessingTaskDuplicatedError extends UploaderError {\r\n constructor() {\r\n super(\r\n UploaderErrorName.ProcessingTaskDuplicated,\r\n \"Processing task duplicated\"\r\n );\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(`uploader.conflictError`);\r\n }\r\n}\r\n\r\n// OneDrive 分块上传失败\r\nexport class OneDriveChunkError extends UploaderError {\r\n constructor(public response: OneDriveError) {\r\n super(\r\n UploaderErrorName.OneDriveChunkUploadFailed,\r\n response.error.message\r\n );\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(`uploader.chunkUploadErrorWithMsg`, {\r\n msg: this.message,\r\n });\r\n }\r\n}\r\n\r\n// OneDrive 选择了空文件上传\r\nexport class OneDriveEmptyFileSelected extends UploaderError {\r\n constructor() {\r\n super(UploaderErrorName.OneDriveEmptyFile, \"empty file not supported\");\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(\"uploader.emptyFileError\");\r\n }\r\n}\r\n\r\n// OneDrive 无法完成文件上传\r\nexport class OneDriveFinishUploadError extends APIError {\r\n constructor(response: Response) {\r\n super(UploaderErrorName.FailedFinishOneDriveUpload, \"\", response);\r\n }\r\n\r\n public Message(): string {\r\n this.message = i18next.t(\"uploader.finishUploadError\");\r\n return super.Message();\r\n }\r\n}\r\n\r\n// S3 类策略分块上传失败\r\nexport class S3LikeChunkError extends UploaderError {\r\n constructor(public response: Document) {\r\n super(\r\n UploaderErrorName.S3LikeChunkUploadFailed,\r\n response.getElementsByTagName(\"Message\")[0].innerHTML\r\n );\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(`uploader.chunkUploadErrorWithMsg`, {\r\n msg: this.message,\r\n });\r\n }\r\n}\r\n\r\n// OSS 完成传失败\r\nexport class S3LikeFinishUploadError extends UploaderError {\r\n constructor(public response: Document) {\r\n super(\r\n UploaderErrorName.S3LikeChunkUploadFailed,\r\n response.getElementsByTagName(\"Message\")[0].innerHTML\r\n );\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(`uploader.ossFinishUploadError`, {\r\n msg: this.message,\r\n code: this.response.getElementsByTagName(\"Code\")[0].innerHTML,\r\n });\r\n }\r\n}\r\n\r\n// qiniu 分块上传失败\r\nexport class QiniuChunkError extends UploaderError {\r\n constructor(public response: QiniuError) {\r\n super(UploaderErrorName.QiniuChunkUploadFailed, response.error);\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(`uploader.chunkUploadErrorWithMsg`, {\r\n msg: this.message,\r\n });\r\n }\r\n}\r\n\r\n// qiniu 完成传失败\r\nexport class QiniuFinishUploadError extends UploaderError {\r\n constructor(public response: QiniuError) {\r\n super(UploaderErrorName.FailedFinishQiniuUpload, response.error);\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(`uploader.finishUploadErrorWithMsg`, {\r\n msg: this.message,\r\n });\r\n }\r\n}\r\n\r\n// COS 上传失败\r\nexport class COSUploadError extends UploaderError {\r\n constructor(public response: Document) {\r\n super(\r\n UploaderErrorName.COSPostUploadFailed,\r\n response.getElementsByTagName(\"Message\")[0].innerHTML\r\n );\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(`uploader.cosUploadFailed`, {\r\n msg: this.message,\r\n code: this.response.getElementsByTagName(\"Code\")[0].innerHTML,\r\n });\r\n }\r\n}\r\n\r\n// COS 无法完成上传回调\r\nexport class COSUploadCallbackError extends APIError {\r\n constructor(response: Response) {\r\n super(UploaderErrorName.COSUploadCallbackFailed, \"\", response);\r\n }\r\n\r\n public Message(): string {\r\n this.message = i18next.t(\"uploader.finishUploadError\");\r\n return super.Message();\r\n }\r\n}\r\n\r\n// Upyun 上传失败\r\nexport class UpyunUploadError extends UploaderError {\r\n constructor(public response: UpyunError) {\r\n super(UploaderErrorName.UpyunPostUploadFailed, response.message);\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(\"uploader.upyunUploadFailed\", {\r\n msg: this.message,\r\n });\r\n }\r\n}\r\n\r\n// S3 无法完成上传回调\r\nexport class S3LikeUploadCallbackError extends APIError {\r\n constructor(response: Response) {\r\n super(UploaderErrorName.S3LikeUploadCallbackFailed, \"\", response);\r\n }\r\n\r\n public Message(): string {\r\n this.message = i18next.t(\"uploader.finishUploadError\");\r\n return super.Message();\r\n }\r\n}\r\n\r\n// 无法解析响应\r\nexport class TransformResponseError extends UploaderError {\r\n constructor(private response: string, parseError: Error) {\r\n super(UploaderErrorName.FailedTransformResponse, parseError.message);\r\n }\r\n\r\n public Message(): string {\r\n return i18next.t(\"uploader.parseResponseError\", {\r\n msg: this.message,\r\n content: this.response,\r\n });\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport classNames from \"classnames\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\r\nimport WarningIcon from \"@material-ui/icons/Warning\";\r\n\r\nimport {\r\n IconButton,\r\n Snackbar,\r\n SnackbarContent,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n snackbar: state.viewUpdate.snackbar,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = () => {\r\n return {};\r\n};\r\n\r\nconst variantIcon = {\r\n success: CheckCircleIcon,\r\n warning: WarningIcon,\r\n error: ErrorIcon,\r\n info: InfoIcon,\r\n};\r\n\r\nconst styles1 = (theme) => ({\r\n success: {\r\n backgroundColor: theme.palette.success.main,\r\n },\r\n error: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n info: {\r\n backgroundColor: theme.palette.info.main,\r\n },\r\n warning: {\r\n backgroundColor: theme.palette.warning.main,\r\n },\r\n icon: {\r\n fontSize: 20,\r\n },\r\n iconVariant: {\r\n opacity: 0.9,\r\n marginRight: theme.spacing(1),\r\n },\r\n message: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n});\r\n\r\nfunction MySnackbarContent(props) {\r\n const { classes, className, message, onClose, variant, ...other } = props;\r\n const Icon = variantIcon[variant];\r\n\r\n return (\r\n \r\n \r\n {message}\r\n \r\n }\r\n action={[\r\n \r\n \r\n ,\r\n ]}\r\n {...other}\r\n />\r\n );\r\n}\r\nMySnackbarContent.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n message: PropTypes.node,\r\n onClose: PropTypes.func,\r\n variant: PropTypes.oneOf([\"alert\", \"success\", \"warning\", \"error\", \"info\"])\r\n .isRequired,\r\n};\r\n\r\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\r\nconst styles = (theme) => ({\r\n margin: {\r\n margin: theme.spacing(1),\r\n },\r\n});\r\nclass SnackbarCompoment extends Component {\r\n state = {\r\n open: false,\r\n };\r\n\r\n UNSAFE_componentWillReceiveProps = (nextProps) => {\r\n if (nextProps.snackbar.toggle !== this.props.snackbar.toggle) {\r\n this.setState({ open: true });\r\n }\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ open: false });\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst AlertBar = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(SnackbarCompoment));\r\n\r\nexport default AlertBar;\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\nimport { connect } from \"react-redux\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport MusicNote from \"@material-ui/icons/MusicNote\";\r\nimport BackIcon from \"@material-ui/icons/ArrowBack\";\r\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\r\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\r\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\r\nimport MoveIcon from \"@material-ui/icons/Input\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport { isPreviewable } from \"../../config\";\r\nimport { changeThemeColor, sizeToString, vhCheck } from \"../../utils\";\r\nimport Uploader from \"../Uploader/Uploader.js\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport SezrchBar from \"./SearchBar\";\r\nimport StorageBar from \"./StorageBar\";\r\nimport UserAvatar from \"./UserAvatar\";\r\nimport UserInfo from \"./UserInfo\";\r\nimport { AccountArrowRight, AccountPlus, LogoutVariant } from \"mdi-material-ui\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport {\r\n AppBar,\r\n Drawer,\r\n Grow,\r\n Hidden,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n SwipeableDrawer,\r\n Toolbar,\r\n Tooltip,\r\n Typography,\r\n withStyles,\r\n withTheme,\r\n} from \"@material-ui/core\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport API from \"../../middleware/Api\";\r\nimport FileTag from \"./FileTags\";\r\nimport { Assignment, Devices, MoreHoriz, Settings } from \"@material-ui/icons\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport SubActions from \"../FileManager/Navigator/SubActions\";\r\nimport {\r\n audioPreviewSetIsOpen,\r\n changeContextMenu,\r\n drawerToggleAction,\r\n navigateTo,\r\n openCreateFolderDialog,\r\n openLoadingDialog,\r\n openMoveDialog,\r\n openMusicDialog,\r\n openPreview,\r\n openRemoveDialog,\r\n openRenameDialog,\r\n openShareDialog,\r\n saveFile,\r\n setSelectedTarget,\r\n setSessionStatus,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { startBatchDownload, startDownload } from \"../../redux/explorer/action\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nvhCheck();\r\nconst drawerWidth = 240;\r\nconst drawerWidthMobile = 270;\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n desktopOpen: state.viewUpdate.open,\r\n selected: state.explorer.selected,\r\n isMultiple: state.explorer.selectProps.isMultiple,\r\n withFolder: state.explorer.selectProps.withFolder,\r\n withFile: state.explorer.selectProps.withFile,\r\n path: state.navigator.path,\r\n title: state.siteConfig.title,\r\n subTitle: state.viewUpdate.subTitle,\r\n loadUploader: state.viewUpdate.loadUploader,\r\n isLogin: state.viewUpdate.isLogin,\r\n shareInfo: state.viewUpdate.shareInfo,\r\n registerEnabled: state.siteConfig.registerEnabled,\r\n audioPreviewPlayingName: state.explorer.audioPreview.playingName,\r\n audioPreviewIsOpen: state.explorer.audioPreview.isOpen,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n handleDesktopToggle: (open) => {\r\n dispatch(drawerToggleAction(open));\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n navigateTo: (path) => {\r\n dispatch(navigateTo(path));\r\n },\r\n openCreateFolderDialog: () => {\r\n dispatch(openCreateFolderDialog());\r\n },\r\n changeContextMenu: (type, open) => {\r\n dispatch(changeContextMenu(type, open));\r\n },\r\n saveFile: () => {\r\n dispatch(saveFile());\r\n },\r\n openMusicDialog: () => {\r\n dispatch(openMusicDialog());\r\n },\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n openRenameDialog: () => {\r\n dispatch(openRenameDialog());\r\n },\r\n openMoveDialog: () => {\r\n dispatch(openMoveDialog());\r\n },\r\n openRemoveDialog: () => {\r\n dispatch(openRemoveDialog());\r\n },\r\n openShareDialog: () => {\r\n dispatch(openShareDialog());\r\n },\r\n openLoadingDialog: (text) => {\r\n dispatch(openLoadingDialog(text));\r\n },\r\n setSessionStatus: () => {\r\n dispatch(setSessionStatus());\r\n },\r\n openPreview: (share) => {\r\n dispatch(openPreview(share));\r\n },\r\n audioPreviewOpen: () => {\r\n dispatch(audioPreviewSetIsOpen(true));\r\n },\r\n startBatchDownload: (share) => {\r\n dispatch(startBatchDownload(share));\r\n },\r\n startDownload: (share, file) => {\r\n dispatch(startDownload(share, file));\r\n },\r\n };\r\n};\r\n\r\nconst styles = (theme) => ({\r\n appBar: {\r\n marginLeft: drawerWidth,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginLeft: drawerWidthMobile,\r\n },\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: \" background-color 250ms\",\r\n },\r\n\r\n drawer: {\r\n width: 0,\r\n flexShrink: 0,\r\n },\r\n drawerDesktop: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n icon: {\r\n marginRight: theme.spacing(2),\r\n },\r\n menuButton: {\r\n marginRight: 20,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n menuButtonDesktop: {\r\n marginRight: 20,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n menuIcon: {\r\n marginRight: 20,\r\n },\r\n toolbar: theme.mixins.toolbar,\r\n drawerPaper: {\r\n width: drawerWidthMobile,\r\n },\r\n drawerPaperDesktop: {\r\n width: drawerWidth,\r\n },\r\n upDrawer: {\r\n overflowX: \"hidden\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: \"100%\",\r\n justifyContent: \"space-between\",\r\n },\r\n },\r\n drawerOpen: {\r\n width: drawerWidth,\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n drawerClose: {\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: \"hidden\",\r\n width: 0,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n badge: {\r\n top: 1,\r\n right: -15,\r\n },\r\n nested: {\r\n paddingLeft: theme.spacing(4),\r\n },\r\n sectionForFile: {\r\n display: \"flex\",\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n addButton: {\r\n marginLeft: \"40px\",\r\n marginTop: \"25px\",\r\n marginBottom: \"15px\",\r\n },\r\n fabButton: {\r\n borderRadius: \"100px\",\r\n },\r\n badgeFix: {\r\n right: \"10px\",\r\n },\r\n iconFix: {\r\n marginLeft: \"16px\",\r\n },\r\n dividerFix: {\r\n marginTop: \"8px\",\r\n },\r\n folderShareIcon: {\r\n verticalAlign: \"sub\",\r\n marginRight: \"5px\",\r\n },\r\n shareInfoContainer: {\r\n display: \"flex\",\r\n marginTop: \"15px\",\r\n marginBottom: \"20px\",\r\n marginLeft: \"28px\",\r\n textDecoration: \"none\",\r\n },\r\n shareAvatar: {\r\n width: \"40px\",\r\n height: \"40px\",\r\n },\r\n stickFooter: {\r\n bottom: \"0px\",\r\n position: \"absolute\",\r\n backgroundColor: theme.palette.background.paper,\r\n width: \"100%\",\r\n },\r\n ownerInfo: {\r\n marginLeft: \"10px\",\r\n width: \"150px\",\r\n },\r\n minStickDrawer: {\r\n overflowY: \"auto\",\r\n },\r\n});\r\nclass NavbarCompoment extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n mobileOpen: false,\r\n };\r\n this.UploaderRef = React.createRef();\r\n }\r\n\r\n UNSAFE_componentWillMount() {\r\n this.unlisten = this.props.history.listen(() => {\r\n this.setState(() => ({ mobileOpen: false }));\r\n });\r\n }\r\n componentWillUnmount() {\r\n this.unlisten();\r\n }\r\n\r\n componentDidMount() {\r\n changeThemeColor(\r\n this.props.selected.length <= 1 &&\r\n !(!this.props.isMultiple && this.props.withFile)\r\n ? this.props.theme.palette.primary.main\r\n : this.props.theme.palette.background.default\r\n );\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps = (nextProps) => {\r\n if (\r\n (this.props.selected.length === 0) !==\r\n (nextProps.selected.length === 0)\r\n ) {\r\n changeThemeColor(\r\n !(this.props.selected.length === 0)\r\n ? this.props.theme.palette.type === \"dark\"\r\n ? this.props.theme.palette.background.default\r\n : this.props.theme.palette.primary.main\r\n : this.props.theme.palette.background.default\r\n );\r\n }\r\n };\r\n\r\n handleDrawerToggle = () => {\r\n this.setState((state) => ({ mobileOpen: !state.mobileOpen }));\r\n };\r\n\r\n openDownload = () => {\r\n this.props.startDownload(this.props.shareInfo, this.props.selected[0]);\r\n };\r\n\r\n archiveDownload = (e) => {\r\n this.props.startBatchDownload(this.props.shareInfo);\r\n };\r\n\r\n signOut = () => {\r\n API.delete(\"/user/session/\")\r\n .then(() => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"login.loggedOut\"),\r\n \"success\"\r\n );\r\n Auth.signout();\r\n window.location.reload();\r\n this.props.setSessionStatus(false);\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"warning\"\r\n );\r\n })\r\n .finally(() => {\r\n this.handleClose();\r\n });\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const user = Auth.GetUser(this.props.isLogin);\r\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\r\n const isSharePage = pathHelper.isSharePage(\r\n this.props.location.pathname\r\n );\r\n\r\n const drawer = (\r\n
\r\n {pathHelper.isMobile() && }\r\n\r\n {Auth.Check(this.props.isLogin) && (\r\n <>\r\n
\r\n \r\n \r\n \r\n this.props.history.push(\"/shares?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.props.history.push(\"/aria2?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {user.group.webdav && (\r\n \r\n this.props.history.push(\"/webdav?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n this.props.history.push(\"/tasks?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {pathHelper.isMobile() && (\r\n <>\r\n \r\n \r\n this.props.history.push(\r\n \"/setting?\"\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n\r\n {!Auth.Check(this.props.isLogin) && (\r\n
\r\n this.props.history.push(\"/login\")}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {this.props.registerEnabled && (\r\n \r\n this.props.history.push(\"/signup\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n const iOS =\r\n process.browser && /iPad|iPhone|iPod/.test(navigator.userAgent);\r\n return (\r\n
\r\n \r\n \r\n {this.props.selected.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n {this.props.selected.length === 0 && (\r\n \r\n this.props.handleDesktopToggle(\r\n !this.props.desktopOpen\r\n )\r\n }\r\n className={classes.menuButtonDesktop}\r\n >\r\n \r\n \r\n )}\r\n {this.props.selected.length > 0 &&\r\n (isHomePage ||\r\n pathHelper.isSharePage(\r\n this.props.location.pathname\r\n )) && (\r\n 0}>\r\n \r\n this.props.setSelectedTarget([])\r\n }\r\n >\r\n \r\n \r\n \r\n )}\r\n {this.props.selected.length === 0 && (\r\n {\r\n this.props.history.push(\"/\");\r\n }}\r\n >\r\n {this.props.subTitle\r\n ? this.props.subTitle\r\n : this.props.title}\r\n \r\n )}\r\n\r\n {!this.props.isMultiple &&\r\n (this.props.withFile || this.props.withFolder) &&\r\n !pathHelper.isMobile() && (\r\n \r\n {this.props.selected[0].name}{\" \"}\r\n {this.props.withFile &&\r\n (isHomePage ||\r\n pathHelper.isSharePage(\r\n this.props.location.pathname\r\n )) &&\r\n \"(\" +\r\n sizeToString(\r\n this.props.selected[0].size\r\n ) +\r\n \")\"}\r\n \r\n )}\r\n\r\n {this.props.selected.length > 1 &&\r\n !pathHelper.isMobile() && (\r\n \r\n {t(\"navbar.objectsSelected\", {\r\n num: this.props.selected.length,\r\n })}\r\n \r\n )}\r\n {this.props.selected.length === 0 && }\r\n
\r\n {this.props.selected.length > 0 &&\r\n (isHomePage || isSharePage) && (\r\n
\r\n {!this.props.isMultiple &&\r\n this.props.withFile &&\r\n isPreviewable(\r\n this.props.selected[0].name\r\n ) && (\r\n \r\n \r\n \r\n this.props.openPreview(\r\n this.props\r\n .shareInfo\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple &&\r\n this.props.withFile && (\r\n \r\n \r\n \r\n this.openDownload()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {(this.props.isMultiple ||\r\n this.props.withFolder) && (\r\n \r\n \r\n \r\n this.archiveDownload()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple &&\r\n !pathHelper.isMobile() &&\r\n !isSharePage && (\r\n \r\n \r\n \r\n this.props.openShareDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple && !isSharePage && (\r\n \r\n \r\n \r\n this.props.openRenameDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!isSharePage && (\r\n
\r\n {!pathHelper.isMobile() && (\r\n \r\n \r\n \r\n this.props.openMoveDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n this.props.openRemoveDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n\r\n {pathHelper.isMobile() && (\r\n \r\n \r\n \r\n this.props.changeContextMenu(\r\n \"file\",\r\n true\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n )}\r\n {this.props.selected.length <= 1 &&\r\n !(!this.props.isMultiple && this.props.withFile) &&\r\n this.props.audioPreviewPlayingName != null && (\r\n \r\n \r\n \r\n )}\r\n\r\n {this.props.selected.length === 0 && }\r\n {this.props.selected.length === 0 &&\r\n pathHelper.isMobile() &&\r\n (isHomePage || this.props.shareInfo) && (\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n \r\n this.setState(() => ({ mobileOpen: true }))\r\n }\r\n disableDiscovery={iOS}\r\n ModalProps={{\r\n keepMounted: true, // Better open performance on mobile.\r\n }}\r\n >\r\n {drawer}\r\n \r\n \r\n \r\n \r\n
\r\n {drawer}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nNavbarCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n theme: PropTypes.object.isRequired,\r\n};\r\n\r\nconst Navbar = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(\r\n withTheme(\r\n withStyles(styles)(withRouter(withTranslation()(NavbarCompoment)))\r\n )\r\n);\r\n\r\nexport default Navbar;\r\n","import { Task } from \"../types\";\r\nimport Logger from \"../logger\";\r\nimport { UploaderError, UploaderErrorName } from \"../errors\";\r\nimport { ChunkProgress } from \"../uploader/chunk\";\r\n\r\nexport const sizeToString = (bytes: number): string => {\r\n if (bytes === 0) return \"0 B\";\r\n const k = 1024;\r\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return (bytes / Math.pow(k, i)).toFixed(1) + \" \" + sizes[i];\r\n};\r\n\r\n// 文件分块\r\nexport function getChunks(\r\n file: File,\r\n chunkByteSize: number | undefined\r\n): Blob[] {\r\n // 如果 chunkByteSize 比文件大或为0,则直接取文件的大小\r\n if (!chunkByteSize || chunkByteSize > file.size || chunkByteSize == 0) {\r\n chunkByteSize = file.size;\r\n }\r\n\r\n const chunks: Blob[] = [];\r\n const count = Math.ceil(file.size / chunkByteSize);\r\n for (let i = 0; i < count; i++) {\r\n const chunk = file.slice(\r\n chunkByteSize * i,\r\n i === count - 1 ? file.size : chunkByteSize * (i + 1)\r\n );\r\n chunks.push(chunk);\r\n }\r\n\r\n if (chunks.length == 0) {\r\n chunks.push(file.slice(0));\r\n }\r\n return chunks;\r\n}\r\n\r\nexport function sumChunk(list: ChunkProgress[]) {\r\n return list.reduce((data, loaded) => data + loaded.loaded, 0);\r\n}\r\n\r\nconst resumeKeyPrefix = \"cd_upload_ctx_\";\r\n\r\nfunction isTask(toBeDetermined: Task | string): toBeDetermined is Task {\r\n return !!(toBeDetermined as Task).name;\r\n}\r\n\r\nexport function getResumeCtxKey(task: Task | string): string {\r\n if (isTask(task)) {\r\n return `${resumeKeyPrefix}name_${task.name}_dst_${task.dst}_size_${task.size}_policy_${task.policy.id}`;\r\n }\r\n\r\n return task;\r\n}\r\n\r\nexport function setResumeCtx(task: Task, logger: Logger) {\r\n const ctxKey = getResumeCtxKey(task);\r\n try {\r\n localStorage.setItem(ctxKey, JSON.stringify(task));\r\n } catch (err) {\r\n logger.warn(\r\n new UploaderError(\r\n UploaderErrorName.WriteCtxFailed,\r\n `setResumeCtx failed: ${ctxKey}`\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport function removeResumeCtx(task: Task | string, logger: Logger) {\r\n const ctxKey = getResumeCtxKey(task);\r\n try {\r\n localStorage.removeItem(ctxKey);\r\n } catch (err) {\r\n logger.warn(\r\n new UploaderError(\r\n UploaderErrorName.RemoveCtxFailed,\r\n `removeResumeCtx failed. key: ${ctxKey}`\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport function cleanupResumeCtx(logger: Logger) {\r\n for (let i = 0; i < localStorage.length; i++) {\r\n const key = localStorage.key(i);\r\n if (key && key.startsWith(resumeKeyPrefix)) {\r\n try {\r\n localStorage.removeItem(key);\r\n } catch (err) {\r\n logger.warn(\r\n new UploaderError(\r\n UploaderErrorName.RemoveCtxFailed,\r\n `removeResumeCtx failed. key: ${key}`\r\n )\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function getResumeCtx(task: Task | string, logger: Logger): Task | null {\r\n const ctxKey = getResumeCtxKey(task);\r\n let localInfoString: string | null = null;\r\n try {\r\n localInfoString = localStorage.getItem(ctxKey);\r\n } catch {\r\n logger.warn(\r\n new UploaderError(\r\n UploaderErrorName.ReadCtxFailed,\r\n `getResumeCtx failed. key: ${ctxKey}`\r\n )\r\n );\r\n }\r\n\r\n if (localInfoString == null) {\r\n return null;\r\n }\r\n\r\n let localInfo: Task | null = null;\r\n try {\r\n localInfo = JSON.parse(localInfoString);\r\n } catch {\r\n // 本地信息已被破坏,直接删除\r\n removeResumeCtx(task, logger);\r\n logger.warn(\r\n new UploaderError(\r\n UploaderErrorName.InvalidCtxData,\r\n `getResumeCtx failed to parse. key: ${ctxKey}`\r\n )\r\n );\r\n }\r\n\r\n if (\r\n localInfo &&\r\n localInfo.session &&\r\n localInfo.session.expires < Math.floor(Date.now() / 1000)\r\n ) {\r\n removeResumeCtx(task, logger);\r\n logger.warn(\r\n new UploaderError(\r\n UploaderErrorName.CtxExpired,\r\n `upload session already expired at ${localInfo.session.expires}. key: ${ctxKey}`\r\n )\r\n );\r\n return null;\r\n }\r\n\r\n return localInfo;\r\n}\r\n\r\nexport function listResumeCtx(logger: Logger): Task[] {\r\n const res: Task[] = [];\r\n for (let i = 0, len = localStorage.length; i < len; i++) {\r\n const key = localStorage.key(i);\r\n if (key && key.startsWith(resumeKeyPrefix)) {\r\n const value = getResumeCtx(key, logger);\r\n if (value) {\r\n res.push(value);\r\n }\r\n }\r\n }\r\n\r\n return res;\r\n}\r\n\r\nexport function OBJtoXML(obj: any): string {\r\n let xml = \"\";\r\n for (const prop in obj) {\r\n xml += \"<\" + prop + \">\";\r\n if (Array.isArray(obj[prop])) {\r\n for (const array of obj[prop]) {\r\n // A real botch fix here\r\n xml += \"\";\r\n xml += \"<\" + prop + \">\";\r\n\r\n xml += OBJtoXML(new Object(array));\r\n }\r\n } else if (typeof obj[prop] == \"object\") {\r\n xml += OBJtoXML(new Object(obj[prop]));\r\n } else {\r\n xml += obj[prop];\r\n }\r\n xml += \"\";\r\n }\r\n return xml.replace(/<\\/?[0-9]{1,}>/g, \"\");\r\n}\r\n\r\nexport function getFileInput(id: number, isFolder: boolean): HTMLInputElement {\r\n const input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n input.id = `upload-file-input-${id}`;\r\n if (isFolder) {\r\n input.id = `upload-folder-input-${id}`;\r\n input.setAttribute(\"webkitdirectory\", \"true\");\r\n input.setAttribute(\"mozdirectory\", \"true\");\r\n } else {\r\n input.id = `upload-file-input-${id}`;\r\n input.multiple = true;\r\n }\r\n input.hidden = true;\r\n document.body.appendChild(input);\r\n return input;\r\n}\r\n\r\nexport function pathJoin(parts: string[], sep = \"/\"): string {\r\n parts = parts.map((part, index) => {\r\n if (index) {\r\n part = part.replace(new RegExp(\"^\" + sep), \"\");\r\n }\r\n if (index !== parts.length - 1) {\r\n part = part.replace(new RegExp(sep + \"$\"), \"\");\r\n }\r\n return part;\r\n });\r\n return parts.join(sep);\r\n}\r\n\r\nfunction basename(path: string): string {\r\n const pathList = path.split(\"/\");\r\n pathList.pop();\r\n return pathList.join(\"/\") === \"\" ? \"/\" : pathList.join(\"/\");\r\n}\r\n\r\nexport function trimPrefix(src: string, prefix: string): string {\r\n if (src.startsWith(prefix)) {\r\n return src.slice(prefix.length);\r\n }\r\n return src;\r\n}\r\n\r\nexport function getDirectoryUploadDst(dst: string, file: any): string {\r\n let relPath = file.webkitRelativePath;\r\n if (!relPath || relPath == \"\") {\r\n relPath = file.fsPath;\r\n if (!relPath || relPath == \"\") {\r\n return dst;\r\n }\r\n }\r\n\r\n relPath = trimPrefix(relPath, \"/\");\r\n\r\n return basename(pathJoin([dst, relPath]));\r\n}\r\n\r\n// Wrap readEntries in a promise to make working with readEntries easier\r\nasync function readEntriesPromise(directoryReader: any): Promise {\r\n try {\r\n return await new Promise((resolve, reject) => {\r\n directoryReader.readEntries(resolve, reject);\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n}\r\n\r\nasync function readFilePromise(fileReader: any, path: string): Promise {\r\n try {\r\n return await new Promise((resolve, reject) => {\r\n fileReader.file((file: any) => {\r\n file.fsPath = path;\r\n resolve(file);\r\n });\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n}\r\n\r\n// Get all the entries (files or sub-directories) in a directory by calling readEntries until it returns empty array\r\nasync function readAllDirectoryEntries(directoryReader: any): Promise {\r\n const entries: any[] = [];\r\n let readEntries = await readEntriesPromise(directoryReader);\r\n while (readEntries.length > 0) {\r\n entries.push(...readEntries);\r\n readEntries = await readEntriesPromise(directoryReader);\r\n }\r\n return entries;\r\n}\r\n\r\n// Drop handler function to get all files\r\nexport async function getAllFileEntries(\r\n dataTransferItemList: DataTransferItemList\r\n): Promise {\r\n const fileEntries: any[] = [];\r\n // Use BFS to traverse entire directory/file structure\r\n const queue: any[] = [];\r\n // Unfortunately dataTransferItemList is not iterable i.e. no forEach\r\n for (let i = 0; i < dataTransferItemList.length; i++) {\r\n const fileEntry = dataTransferItemList[i].webkitGetAsEntry();\r\n if (!fileEntry) {\r\n const file = dataTransferItemList[i].getAsFile();\r\n if (file) {\r\n fileEntries.push(file);\r\n }\r\n }\r\n\r\n queue.push(dataTransferItemList[i].webkitGetAsEntry());\r\n }\r\n while (queue.length > 0) {\r\n const entry = queue.shift();\r\n if (!entry) {\r\n continue;\r\n }\r\n if (entry.isFile) {\r\n fileEntries.push(await readFilePromise(entry, entry.fullPath));\r\n } else if (entry.isDirectory) {\r\n const reader = entry.createReader();\r\n const entries: any = await readAllDirectoryEntries(reader);\r\n queue.push(...entries);\r\n }\r\n }\r\n return fileEntries;\r\n}\r\n\r\nexport function isFileDrop(e: DragEvent): boolean {\r\n return !!e.dataTransfer && e.dataTransfer.types.includes(\"Files\");\r\n}\r\n","export * from \"./pool\";\r\nexport * from \"./helper\";\r\nexport * from \"./validator\";\r\nexport * from \"./request\";\r\n","/* eslint-disable */\r\nclass Crc32 {\r\n constructor() {\r\n this.crc = -1;\r\n }\r\n\r\n append(data) {\r\n let crc = this.crc | 0;\r\n const table = this.table;\r\n for (let offset = 0, len = data.length | 0; offset < len; offset++) {\r\n crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xff];\r\n }\r\n this.crc = crc;\r\n }\r\n\r\n get() {\r\n return ~this.crc;\r\n }\r\n}\r\nCrc32.prototype.table = (() => {\r\n let i;\r\n let j;\r\n let t;\r\n const table = [];\r\n for (i = 0; i < 256; i++) {\r\n t = i;\r\n for (j = 0; j < 8; j++) {\r\n t = t & 1 ? (t >>> 1) ^ 0xedb88320 : t >>> 1;\r\n }\r\n table[i] = t;\r\n }\r\n return table;\r\n})();\r\n\r\nconst getDataHelper = (byteLength) => {\r\n const uint8 = new Uint8Array(byteLength);\r\n return {\r\n array: uint8,\r\n view: new DataView(uint8.buffer),\r\n };\r\n};\r\n\r\nconst pump = (zipObj) =>\r\n zipObj.reader.read().then((chunk) => {\r\n if (chunk.done) return zipObj.writeFooter();\r\n const outputData = chunk.value;\r\n zipObj.crc.append(outputData);\r\n zipObj.uncompressedLength += outputData.length;\r\n zipObj.compressedLength += outputData.length;\r\n zipObj.ctrl.enqueue(outputData);\r\n });\r\n\r\n/**\r\n * [createWriter description]\r\n * @param {Object} underlyingSource [description]\r\n * @return {Boolean} [description]\r\n */\r\nfunction createWriter(underlyingSource) {\r\n const files = Object.create(null);\r\n const filenames = [];\r\n const encoder = new TextEncoder();\r\n let offset = 0;\r\n let activeZipIndex = 0;\r\n let ctrl;\r\n let activeZipObject, closed;\r\n\r\n function next() {\r\n activeZipIndex++;\r\n activeZipObject = files[filenames[activeZipIndex]];\r\n if (activeZipObject) processNextChunk();\r\n else if (closed) closeZip();\r\n }\r\n\r\n const zipWriter = {\r\n enqueue(fileLike) {\r\n if (closed)\r\n throw new TypeError(\r\n \"Cannot enqueue a chunk into a readable stream that is closed or has been requested to be closed\"\r\n );\r\n\r\n let name = fileLike.name.trim();\r\n const date = new Date(\r\n typeof fileLike.lastModified === \"undefined\"\r\n ? Date.now()\r\n : fileLike.lastModified\r\n );\r\n\r\n if (fileLike.directory && !name.endsWith(\"/\")) name += \"/\";\r\n if (files[name]) throw new Error(\"File already exists.\");\r\n\r\n const nameBuf = encoder.encode(name);\r\n filenames.push(name);\r\n\r\n const zipObject = (files[name] = {\r\n level: 0,\r\n ctrl,\r\n directory: !!fileLike.directory,\r\n nameBuf,\r\n comment: encoder.encode(fileLike.comment || \"\"),\r\n compressedLength: 0,\r\n uncompressedLength: 0,\r\n writeHeader() {\r\n const header = getDataHelper(26);\r\n const data = getDataHelper(30 + nameBuf.length);\r\n\r\n zipObject.offset = offset;\r\n zipObject.header = header;\r\n if (zipObject.level !== 0 && !zipObject.directory) {\r\n header.view.setUint16(4, 0x0800);\r\n }\r\n header.view.setUint32(0, 0x14000808);\r\n header.view.setUint16(\r\n 6,\r\n (((date.getHours() << 6) | date.getMinutes()) << 5) |\r\n (date.getSeconds() / 2),\r\n true\r\n );\r\n header.view.setUint16(\r\n 8,\r\n ((((date.getFullYear() - 1980) << 4) |\r\n (date.getMonth() + 1)) <<\r\n 5) |\r\n date.getDate(),\r\n true\r\n );\r\n header.view.setUint16(22, nameBuf.length, true);\r\n data.view.setUint32(0, 0x504b0304);\r\n data.array.set(header.array, 4);\r\n data.array.set(nameBuf, 30);\r\n offset += data.array.length;\r\n ctrl.enqueue(data.array);\r\n },\r\n writeFooter() {\r\n const footer = getDataHelper(16);\r\n footer.view.setUint32(0, 0x504b0708);\r\n\r\n if (zipObject.crc) {\r\n zipObject.header.view.setUint32(\r\n 10,\r\n zipObject.crc.get(),\r\n true\r\n );\r\n zipObject.header.view.setUint32(\r\n 14,\r\n zipObject.compressedLength,\r\n true\r\n );\r\n zipObject.header.view.setUint32(\r\n 18,\r\n zipObject.uncompressedLength,\r\n true\r\n );\r\n footer.view.setUint32(4, zipObject.crc.get(), true);\r\n footer.view.setUint32(\r\n 8,\r\n zipObject.compressedLength,\r\n true\r\n );\r\n footer.view.setUint32(\r\n 12,\r\n zipObject.uncompressedLength,\r\n true\r\n );\r\n }\r\n\r\n ctrl.enqueue(footer.array);\r\n offset += zipObject.compressedLength + 16;\r\n next();\r\n },\r\n fileLike,\r\n });\r\n\r\n if (!activeZipObject) {\r\n activeZipObject = zipObject;\r\n processNextChunk();\r\n }\r\n },\r\n close() {\r\n if (closed)\r\n throw new TypeError(\r\n \"Cannot close a readable stream that has already been requested to be closed\"\r\n );\r\n if (!activeZipObject) closeZip();\r\n closed = true;\r\n },\r\n };\r\n\r\n function closeZip() {\r\n let length = 0;\r\n let index = 0;\r\n let indexFilename, file;\r\n for (\r\n indexFilename = 0;\r\n indexFilename < filenames.length;\r\n indexFilename++\r\n ) {\r\n file = files[filenames[indexFilename]];\r\n length += 46 + file.nameBuf.length + file.comment.length;\r\n }\r\n const data = getDataHelper(length + 22);\r\n for (\r\n indexFilename = 0;\r\n indexFilename < filenames.length;\r\n indexFilename++\r\n ) {\r\n file = files[filenames[indexFilename]];\r\n data.view.setUint32(index, 0x504b0102);\r\n data.view.setUint16(index + 4, 0x1400);\r\n data.array.set(file.header.array, index + 6);\r\n data.view.setUint16(index + 32, file.comment.length, true);\r\n if (file.directory) {\r\n data.view.setUint8(index + 38, 0x10);\r\n }\r\n data.view.setUint32(index + 42, file.offset, true);\r\n data.array.set(file.nameBuf, index + 46);\r\n data.array.set(file.comment, index + 46 + file.nameBuf.length);\r\n index += 46 + file.nameBuf.length + file.comment.length;\r\n }\r\n data.view.setUint32(index, 0x504b0506);\r\n data.view.setUint16(index + 8, filenames.length, true);\r\n data.view.setUint16(index + 10, filenames.length, true);\r\n data.view.setUint32(index + 12, length, true);\r\n data.view.setUint32(index + 16, offset, true);\r\n ctrl.enqueue(data.array);\r\n ctrl.close();\r\n }\r\n\r\n function processNextChunk() {\r\n if (!activeZipObject) return;\r\n if (activeZipObject.directory)\r\n return activeZipObject.writeFooter(activeZipObject.writeHeader());\r\n if (activeZipObject.reader) return pump(activeZipObject);\r\n if (activeZipObject.fileLike.stream) {\r\n activeZipObject.crc = new Crc32();\r\n activeZipObject.reader = activeZipObject.fileLike\r\n .stream()\r\n .getReader();\r\n activeZipObject.writeHeader();\r\n } else next();\r\n }\r\n return new ReadableStream({\r\n start: (c) => {\r\n ctrl = c;\r\n underlyingSource.start &&\r\n Promise.resolve(underlyingSource.start(zipWriter));\r\n },\r\n pull() {\r\n return (\r\n processNextChunk() ||\r\n (underlyingSource.pull &&\r\n Promise.resolve(underlyingSource.pull(zipWriter)))\r\n );\r\n },\r\n });\r\n}\r\n\r\nwindow.ZIP = createWriter;\r\n","import { CloudreveFile } from \"../types\";\r\nimport { list } from \"../services/navigate\";\r\nimport { pathJoin } from \"../component/Uploader/core/utils\";\r\n\r\nexport function getPreviewPath(selected: any): string {\r\n return encodeURIComponent(\r\n selected.path === \"/\"\r\n ? selected.path + selected.name\r\n : selected.path + \"/\" + selected.name\r\n );\r\n}\r\n\r\nexport async function walk(\r\n file: CloudreveFile[],\r\n share: any\r\n): Promise {\r\n let res: CloudreveFile[] = [];\r\n for (const f of file) {\r\n if (f.type === \"file\") {\r\n res.push(f);\r\n continue;\r\n }\r\n\r\n if (f.type === \"dir\") {\r\n const response = await list(\r\n pathJoin([f.path, f.name]),\r\n share,\r\n \"\",\r\n \"\"\r\n );\r\n const subs = await walk(response.data.objects, share);\r\n res = [...res, ...subs];\r\n }\r\n }\r\n\r\n return res;\r\n}\r\n","import { AnyAction } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { CloudreveFile, SortMethod } from \"./../../types/index\";\r\nimport { closeContextMenu, setPagination } from \"../viewUpdate/action\";\r\nimport { Policy } from \"../../component/Uploader/core/types\";\r\nimport streamSaver from \"streamsaver\";\r\nimport \"../../utils/zip\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport { filePath, isMac } from \"../../utils\";\r\nimport API, { getBaseURL } from \"../../middleware/Api\";\r\nimport { pathJoin, trimPrefix } from \"../../component/Uploader/core/utils\";\r\nimport { getPreviewPath, walk } from \"../../utils/api\";\r\nimport { askForOption } from \"./async\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport { encodingRequired, isPreviewable } from \"../../config\";\r\nimport { push } from \"connected-react-router\";\r\nimport {\r\n changeContextMenu,\r\n closeAllModals,\r\n openGetSourceDialog,\r\n openLoadingDialog,\r\n showAudioPreview,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"./index\";\r\nimport { getDownloadURL } from \"../../services/file\";\r\nimport i18next from \"../../i18n\";\r\n\r\nexport interface ActionSetFileList extends AnyAction {\r\n type: \"SET_FILE_LIST\";\r\n list: CloudreveFile[];\r\n}\r\nexport const setFileList = (list: CloudreveFile[]): ActionSetFileList => {\r\n return {\r\n type: \"SET_FILE_LIST\",\r\n list,\r\n };\r\n};\r\n\r\nexport interface ActionSetDirList extends AnyAction {\r\n type: \"SET_DIR_LIST\";\r\n list: CloudreveFile[];\r\n}\r\nexport const setDirList = (list: CloudreveFile[]): ActionSetDirList => {\r\n return {\r\n type: \"SET_DIR_LIST\",\r\n list,\r\n };\r\n};\r\n\r\nexport interface ActionSetSortMethod extends AnyAction {\r\n type: \"SET_SORT_METHOD\";\r\n method: SortMethod;\r\n}\r\nexport const setSortMethod = (method: SortMethod): ActionSetSortMethod => {\r\n return {\r\n type: \"SET_SORT_METHOD\",\r\n method,\r\n };\r\n};\r\n\r\nexport const setSideBar = (open: boolean) => {\r\n return {\r\n type: \"SET_SIDE_BAR\",\r\n open,\r\n };\r\n};\r\n\r\nexport const setCurrentPolicy = (policy: Policy) => {\r\n return {\r\n type: \"SET_CURRENT_POLICY\",\r\n policy,\r\n };\r\n};\r\n\r\nexport const removeSelectedTargets = (fileIds: any) => {\r\n return {\r\n type: \"RMOVE_SELECTED_TARGETS\",\r\n fileIds,\r\n };\r\n};\r\nexport const addSelectedTargets = (targets: any) => {\r\n return {\r\n type: \"ADD_SELECTED_TARGETS\",\r\n targets,\r\n };\r\n};\r\nexport const setSelectedTarget = (targets: any) => {\r\n return {\r\n type: \"SET_SELECTED_TARGET\",\r\n targets,\r\n };\r\n};\r\nexport const setLastSelect = (file: any, index: any) => {\r\n return {\r\n type: \"SET_LAST_SELECT\",\r\n file,\r\n index,\r\n };\r\n};\r\nexport const setShiftSelectedIds = (shiftSelectedIds: any) => {\r\n return {\r\n type: \"SET_SHIFT_SELECTED_IDS\",\r\n shiftSelectedIds,\r\n };\r\n};\r\n\r\ntype SortFunc = (a: CloudreveFile, b: CloudreveFile) => number;\r\nconst sortMethodFuncs: Record = {\r\n sizePos: (a: CloudreveFile, b: CloudreveFile) => {\r\n return a.size - b.size;\r\n },\r\n sizeRes: (a: CloudreveFile, b: CloudreveFile) => {\r\n return b.size - a.size;\r\n },\r\n namePos: (a: CloudreveFile, b: CloudreveFile) => {\r\n return a.name.localeCompare(\r\n b.name,\r\n navigator.languages[0] || navigator.language,\r\n { numeric: true, ignorePunctuation: true }\r\n );\r\n },\r\n nameRev: (a: CloudreveFile, b: CloudreveFile) => {\r\n return b.name.localeCompare(\r\n a.name,\r\n navigator.languages[0] || navigator.language,\r\n { numeric: true, ignorePunctuation: true }\r\n );\r\n },\r\n timePos: (a: CloudreveFile, b: CloudreveFile) => {\r\n return Date.parse(a.create_date) - Date.parse(b.create_date);\r\n },\r\n timeRev: (a: CloudreveFile, b: CloudreveFile) => {\r\n return Date.parse(b.create_date) - Date.parse(a.create_date);\r\n },\r\n modifyTimePos: (a: CloudreveFile, b: CloudreveFile) => {\r\n return Date.parse(a.date) - Date.parse(b.date);\r\n },\r\n modifyTimeRev: (a: CloudreveFile, b: CloudreveFile) => {\r\n return Date.parse(b.date) - Date.parse(a.date);\r\n },\r\n};\r\n\r\nexport const selectAll = (): ThunkAction => {\r\n return (dispatch, getState): void => {\r\n const state = getState();\r\n const { selected, fileList, dirList } = state.explorer;\r\n if (selected.length >= dirList.length + fileList.length) {\r\n dispatch(setSelectedTarget([]));\r\n } else {\r\n dispatch(setSelectedTarget([...dirList, ...fileList]));\r\n }\r\n };\r\n};\r\n\r\nexport const updateFileList = (\r\n list: CloudreveFile[]\r\n): ThunkAction => {\r\n return (dispatch, getState): void => {\r\n const state = getState();\r\n // TODO: define state type\r\n const { sortMethod, pagination } = state.viewUpdate;\r\n const dirList = list.filter((x) => {\r\n return x.type === \"dir\";\r\n });\r\n const fileList = list.filter((x) => {\r\n return x.type === \"file\";\r\n });\r\n const sortFunc = sortMethodFuncs[sortMethod as SortMethod];\r\n dispatch(setDirList(dirList.sort(sortFunc)));\r\n dispatch(setFileList(fileList.sort(sortFunc)));\r\n const total = dirList.length + fileList.length;\r\n if (pagination.page * pagination.size > total) {\r\n dispatch(\r\n setPagination({\r\n ...pagination,\r\n page: Math.max(Math.ceil(total / pagination.size), 1),\r\n })\r\n );\r\n }\r\n };\r\n};\r\n\r\nexport const changeSortMethod = (\r\n method: SortMethod\r\n): ThunkAction => {\r\n return (dispatch, getState): void => {\r\n const state = getState();\r\n const { fileList, dirList } = state.explorer;\r\n const sortFunc = sortMethodFuncs[method];\r\n Auth.SetPreference(\"sort\", method);\r\n dispatch(setSortMethod(method));\r\n dispatch(setDirList(dirList.slice().sort(sortFunc)));\r\n dispatch(setFileList(fileList.slice().sort(sortFunc)));\r\n };\r\n};\r\n\r\nexport const toggleObjectInfoSidebar = (\r\n open: boolean\r\n): ThunkAction => {\r\n return (dispatch, getState): void => {\r\n const state = getState();\r\n if (open) {\r\n dispatch(closeContextMenu());\r\n }\r\n dispatch(setSideBar(true));\r\n };\r\n};\r\n\r\nexport const serverSideBatchDownload = (\r\n share: any\r\n): ThunkAction => {\r\n return (dispatch, getState): void => {\r\n dispatch(\r\n openLoadingDialog(i18next.t(\"fileManager.preparingBathDownload\"))\r\n );\r\n const {\r\n explorer: { selected },\r\n router: {\r\n location: { pathname },\r\n },\r\n } = getState();\r\n const dirs: any[] = [],\r\n items: any[] = [];\r\n selected.map((value) => {\r\n if (value.type === \"dir\") {\r\n dirs.push(value.id);\r\n } else {\r\n items.push(value.id);\r\n }\r\n return null;\r\n });\r\n\r\n let reqURL = \"/file/archive\";\r\n const postBody = {\r\n items: items,\r\n dirs: dirs,\r\n };\r\n if (pathHelper.isSharePage(pathname)) {\r\n reqURL = \"/share/archive/\" + share.key;\r\n postBody[\"path\"] = selected[0].path;\r\n }\r\n\r\n API.post(reqURL, postBody)\r\n .then((response: any) => {\r\n if (response.rawData.code === 0) {\r\n dispatch(closeAllModals());\r\n window.location.assign(response.data);\r\n } else {\r\n dispatch(\r\n toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n response.rawData.msg,\r\n \"warning\"\r\n )\r\n );\r\n }\r\n dispatch(closeAllModals());\r\n })\r\n .catch((error) => {\r\n dispatch(\r\n toggleSnackbar(\"top\", \"right\", error.message, \"error\")\r\n );\r\n dispatch(closeAllModals());\r\n });\r\n };\r\n};\r\n\r\nexport const startDownload = (\r\n share: any,\r\n file: CloudreveFile\r\n): ThunkAction => {\r\n return async (dispatch, getState): Promise => {\r\n const {\r\n router: {\r\n location: { pathname },\r\n },\r\n } = getState();\r\n const user = Auth.GetUser();\r\n if (\r\n pathHelper.isSharePage(pathname) &&\r\n !Auth.Check() &&\r\n user &&\r\n !user.group.shareDownload\r\n ) {\r\n dispatch(\r\n toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n i18next.t(\"share.pleaseLogin\"),\r\n \"warning\"\r\n )\r\n );\r\n return;\r\n }\r\n\r\n dispatch(changeContextMenu(\"file\", false));\r\n dispatch(openLoadingDialog(i18next.t(\"fileManager.preparingDownload\")));\r\n try {\r\n const res = await getDownloadURL(file ? file : share);\r\n window.location.assign(res.data);\r\n dispatch(closeAllModals());\r\n } catch (e) {\r\n dispatch(toggleSnackbar(\"top\", \"right\", e.message, \"warning\"));\r\n dispatch(closeAllModals());\r\n }\r\n };\r\n};\r\n\r\nexport const startBatchDownload = (\r\n share: any\r\n): ThunkAction => {\r\n return async (dispatch, getState): Promise => {\r\n dispatch(changeContextMenu(\"file\", false));\r\n const {\r\n explorer: { selected },\r\n } = getState();\r\n\r\n const user = Auth.GetUser();\r\n if (user.group.allowArchiveDownload) {\r\n let option: any;\r\n try {\r\n option = await dispatch(\r\n askForOption(\r\n [\r\n {\r\n key: \"client\",\r\n name: i18next.t(\r\n \"fileManager.browserBatchDownload\"\r\n ),\r\n description: i18next.t(\r\n \"fileManager.browserBatchDownloadDescription\"\r\n ),\r\n },\r\n {\r\n key: \"server\",\r\n name: i18next.t(\r\n \"fileManager.serverBatchDownload\"\r\n ),\r\n description: i18next.t(\r\n \"fileManager.serverBatchDownloadDescription\"\r\n ),\r\n },\r\n ],\r\n i18next.t(\"fileManager.selectArchiveMethod\")\r\n )\r\n );\r\n } catch (e) {\r\n return;\r\n }\r\n\r\n if (option.key === \"server\") {\r\n dispatch(serverSideBatchDownload(share));\r\n return;\r\n }\r\n }\r\n\r\n dispatch(openLoadingDialog(i18next.t(\"modals.listingFiles\")));\r\n\r\n let queue: CloudreveFile[] = [];\r\n try {\r\n queue = await walk(selected, share);\r\n } catch (e) {\r\n dispatch(\r\n toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n i18next.t(\"modals.listingFileError\", {\r\n message: e.message,\r\n }),\r\n \"warning\"\r\n )\r\n );\r\n dispatch(closeAllModals());\r\n return;\r\n }\r\n\r\n dispatch(closeAllModals());\r\n dispatch(\r\n toggleSnackbar(\r\n \"top\",\r\n \"center\",\r\n i18next.t(\"fileManager.batchDownloadStarted\"),\r\n \"info\"\r\n )\r\n );\r\n const fileStream = streamSaver.createWriteStream(\"archive.zip\");\r\n let failed = 0;\r\n const readableZipStream = new (window as any).ZIP({\r\n start(ctrl: any) {\r\n // ctrl.close()\r\n },\r\n async pull(ctrl: any) {\r\n while (queue.length > 0) {\r\n const next = queue.pop();\r\n if (next && next.type === \"file\") {\r\n const previewPath = getPreviewPath(next);\r\n const url =\r\n getBaseURL() +\r\n (pathHelper.isSharePage(location.pathname)\r\n ? \"/share/preview/\" +\r\n share.key +\r\n (previewPath !== \"\"\r\n ? \"?path=\" + previewPath\r\n : \"\")\r\n : \"/file/preview/\" + next.id);\r\n try {\r\n const res = await fetch(url, { cache: \"no-cache\" });\r\n const stream = () => res.body;\r\n const name = trimPrefix(\r\n pathJoin([next.path, next.name]),\r\n \"/\"\r\n );\r\n ctrl.enqueue({ name, stream });\r\n return;\r\n } catch (e) {\r\n failed++;\r\n }\r\n }\r\n }\r\n ctrl.close();\r\n },\r\n });\r\n\r\n // more optimized\r\n if (window.WritableStream && readableZipStream.pipeTo) {\r\n return readableZipStream\r\n .pipeTo(fileStream)\r\n .then(() => dispatch(closeAllModals()))\r\n .catch((e) => {\r\n console.log(e);\r\n toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n i18next.t(\"modals.batchDownloadError\", {\r\n message: e && e.message,\r\n }),\r\n \"warning\"\r\n );\r\n dispatch(closeAllModals());\r\n });\r\n }\r\n };\r\n};\r\n\r\nexport const getViewerURL = (\r\n viewer: string,\r\n file: any,\r\n isShare: boolean | \"\"\r\n): string => {\r\n const previewPath = getPreviewPath(file);\r\n if (isShare) {\r\n return (\r\n \"/s/\" +\r\n file.key +\r\n `/${viewer}?name=` +\r\n encodeURIComponent(file.name) +\r\n \"&share_path=\" +\r\n previewPath\r\n );\r\n }\r\n\r\n return `/${viewer}?p=` + previewPath + \"&id=\" + file.id;\r\n};\r\n\r\nexport const openViewer = (\r\n viewer: string,\r\n file: any,\r\n isShare: boolean | \"\"\r\n) => {\r\n return (dispatch: any, getState: any) => {\r\n dispatch(push(getViewerURL(viewer, file, isShare)));\r\n };\r\n};\r\n\r\nexport const openPreview = (share: any) => {\r\n return (dispatch: any, getState: any) => {\r\n const {\r\n explorer: { selected },\r\n router: {\r\n location: { pathname },\r\n },\r\n } = getState();\r\n const isShare = pathHelper.isSharePage(pathname);\r\n if (isShare) {\r\n const user = Auth.GetUser();\r\n if (!Auth.Check() && user && !user.group.shareDownload) {\r\n dispatch(\r\n toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n i18next.t(\"share.pleaseLogin\"),\r\n \"warning\"\r\n )\r\n );\r\n dispatch(changeContextMenu(\"file\", false));\r\n return;\r\n }\r\n }\r\n\r\n dispatch(changeContextMenu(\"file\", false));\r\n switch (isPreviewable(selected[0].name)) {\r\n case \"img\":\r\n dispatch(showImgPreivew(selected[0]));\r\n return;\r\n case \"msDoc\":\r\n dispatch(openViewer(\"doc\", selected[0], isShare));\r\n return;\r\n case \"audio\":\r\n dispatch(showAudioPreview(selected[0]));\r\n return;\r\n case \"video\":\r\n dispatch(openViewer(\"video\", selected[0], isShare));\r\n return;\r\n case \"pdf\":\r\n dispatch(openViewer(\"pdf\", selected[0], isShare));\r\n return;\r\n case \"edit\":\r\n dispatch(openViewer(\"text\", selected[0], isShare));\r\n return;\r\n case \"code\":\r\n dispatch(openViewer(\"code\", selected[0], isShare));\r\n return;\r\n case \"epub\":\r\n dispatch(openViewer(\"epub\", selected[0], isShare));\r\n return;\r\n default:\r\n dispatch(startDownload(share, selected[0]));\r\n return;\r\n }\r\n };\r\n};\r\nexport const selectFile = (file: any, event: any, fileIndex: any) => {\r\n const { ctrlKey, metaKey, shiftKey } = event;\r\n return (dispatch: any, getState: any) => {\r\n // 多种组合操作忽略\r\n if (\r\n [ctrlKey, shiftKey].filter(Boolean).length > 1 ||\r\n [metaKey, shiftKey].filter(Boolean).length > 1\r\n ) {\r\n return;\r\n }\r\n const isMacbook = isMac();\r\n const { explorer } = getState();\r\n const {\r\n selected,\r\n lastSelect,\r\n dirList,\r\n fileList,\r\n shiftSelectedIds,\r\n } = explorer;\r\n if (shiftKey && !ctrlKey && !metaKey && selected.length !== 0) {\r\n // shift 多选\r\n // 取消原有选择\r\n dispatch(removeSelectedTargets(selected.map((v: any) => v.id)));\r\n const all = [...dirList, ...fileList];\r\n // 添加新选择\r\n const begin = Math.min(lastSelect.index, fileIndex);\r\n const end = Math.max(lastSelect.index, fileIndex);\r\n const list = file.type === \"dir\" ? dirList : fileList;\r\n const newShiftSelected = all.slice(begin, end + 1);\r\n return dispatch(addSelectedTargets(newShiftSelected));\r\n }\r\n dispatch(setLastSelect(file, fileIndex));\r\n dispatch(setShiftSelectedIds([]));\r\n if ((ctrlKey && !isMacbook) || (metaKey && isMacbook)) {\r\n // Ctrl/Command 单击添加/删除\r\n const presentIndex = selected.findIndex((value: any) => {\r\n return value.id === file.id;\r\n });\r\n if (presentIndex !== -1) {\r\n return dispatch(removeSelectedTargets([file.id]));\r\n }\r\n return dispatch(addSelectedTargets([file]));\r\n }\r\n // 单选\r\n return dispatch(setSelectedTarget([file]));\r\n };\r\n};\r\n\r\nexport const submitCompressTask = (fileName: string, path: string) => {\r\n return async (dispatch: any, getState: any) => {\r\n const {\r\n explorer: { selected },\r\n } = getState();\r\n const dirs: string[] = [],\r\n items: string[] = [];\r\n // eslint-disable-next-line\r\n selected.map((value) => {\r\n if (value.type === \"dir\") {\r\n dirs.push(value.id);\r\n } else {\r\n items.push(value.id);\r\n }\r\n });\r\n\r\n return await API.post(\"/file/compress\", {\r\n src: {\r\n dirs: dirs,\r\n items: items,\r\n },\r\n name: fileName,\r\n dst: path === \"//\" ? \"/\" : path,\r\n });\r\n };\r\n};\r\n\r\nconst encodings = [\r\n \"ibm866\",\r\n \"iso8859_2\",\r\n \"iso8859_3\",\r\n \"iso8859_4\",\r\n \"iso8859_5\",\r\n \"iso8859_6\",\r\n \"iso8859_7\",\r\n \"iso8859_8\",\r\n \"iso8859_8I\",\r\n \"iso8859_10\",\r\n \"iso8859_13\",\r\n \"iso8859_14\",\r\n \"iso8859_15\",\r\n \"iso8859_16\",\r\n \"koi8r\",\r\n \"koi8u\",\r\n \"macintosh\",\r\n \"windows874\",\r\n \"windows1250\",\r\n \"windows1251\",\r\n \"windows1252\",\r\n \"windows1253\",\r\n \"windows1254\",\r\n \"windows1255\",\r\n \"windows1256\",\r\n \"windows1257\",\r\n \"windows1258\",\r\n \"macintoshcyrillic\",\r\n \"gbk\",\r\n \"big5\",\r\n \"eucjp\",\r\n \"iso2022jp\",\r\n \"shiftjis\",\r\n \"euckr\",\r\n \"utf16be\",\r\n \"utf16le\",\r\n];\r\n\r\nexport const submitDecompressTask = (path: string) => {\r\n return async (dispatch: any, getState: any) => {\r\n const {\r\n explorer: { selected },\r\n } = getState();\r\n\r\n let encoding = \"\";\r\n if (selected.length > 0 && encodingRequired(selected[0].name)) {\r\n let option: any;\r\n try {\r\n const allOptions = encodings.map((e) => {\r\n return {\r\n key: e,\r\n name: e.toUpperCase(),\r\n };\r\n });\r\n option = await dispatch(\r\n askForOption(\r\n [\r\n {\r\n key: \"\",\r\n name: i18next.t(\"modals.defaultEncoding\"),\r\n },\r\n {\r\n key: \"gb18030\",\r\n name: \"GB18030\",\r\n description: i18next.t(\r\n \"modals.chineseMajorEncoding\"\r\n ),\r\n },\r\n ...allOptions,\r\n ],\r\n i18next.t(\"modals.selectEncoding\")\r\n )\r\n );\r\n } catch (e) {\r\n throw new Error(i18next.t(\"modals.noEncodingSelected\"));\r\n }\r\n\r\n encoding = option.key;\r\n }\r\n\r\n return await API.post(\"/file/decompress\", {\r\n src: filePath(selected[0]),\r\n dst: path === \"//\" ? \"/\" : path,\r\n encoding: encoding,\r\n });\r\n };\r\n};\r\n\r\nexport const batchGetSource = (): ThunkAction => {\r\n return async (dispatch, getState): Promise => {\r\n const {\r\n explorer: { selected },\r\n router: {\r\n location: { pathname },\r\n },\r\n } = getState();\r\n\r\n if (selected.findIndex((f) => f.type === \"dir\") >= 0) {\r\n dispatch(openLoadingDialog(i18next.t(\"modals.listingFiles\")));\r\n }\r\n\r\n let queue: CloudreveFile[] = [];\r\n try {\r\n queue = await walk(selected, null);\r\n } catch (e) {\r\n dispatch(\r\n toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n i18next.t(\"modals.listingFileError\", {\r\n message: e.message,\r\n }),\r\n \"warning\"\r\n )\r\n );\r\n dispatch(closeAllModals());\r\n return;\r\n }\r\n\r\n dispatch(openLoadingDialog(i18next.t(\"modals.generatingSourceLinks\")));\r\n\r\n const items = queue\r\n .filter((value) => value.source_enabled && value.type === \"file\")\r\n .map((v) => v.id);\r\n\r\n if (items.length === 0) {\r\n dispatch(\r\n toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n i18next.t(\"modals.noFileCanGenerateSourceLink\"),\r\n \"warning\"\r\n )\r\n );\r\n dispatch(closeAllModals());\r\n return;\r\n }\r\n\r\n const user = Auth.GetUser();\r\n if (items.length > user.group.sourceBatch) {\r\n dispatch(\r\n toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n i18next.t(\"modals.sourceBatchSizeExceeded\", {\r\n limit: user.group.sourceBatch,\r\n }),\r\n \"warning\"\r\n )\r\n );\r\n dispatch(closeAllModals());\r\n return;\r\n }\r\n\r\n API.post(\"/file/source\", { items: items })\r\n .then((response) => {\r\n console.log(response);\r\n dispatch(closeAllModals());\r\n dispatch(\r\n openGetSourceDialog(\r\n response.data.length == 1\r\n ? response.data[0].url\r\n : response.data\r\n .map(\r\n (res) =>\r\n `${res.name}: ${res.url}${\r\n res.error ? res.error : \"\"\r\n }`\r\n )\r\n .join(\"\\n\")\r\n )\r\n );\r\n })\r\n .catch((error) => {\r\n dispatch(\r\n toggleSnackbar(\"top\", \"right\", error.message, \"warning\")\r\n );\r\n dispatch(closeAllModals());\r\n });\r\n };\r\n};\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\nimport { connect } from \"react-redux\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport MusicNote from \"@material-ui/icons/MusicNote\";\r\nimport BackIcon from \"@material-ui/icons/ArrowBack\";\r\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\r\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\r\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\r\nimport MoveIcon from \"@material-ui/icons/Input\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport { isPreviewable } from \"../../config\";\r\nimport { changeThemeColor, sizeToString, vhCheck } from \"../../utils\";\r\nimport Uploader from \"../Uploader/Uploader.js\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport SezrchBar from \"./SearchBar\";\r\nimport StorageBar from \"./StorageBar\";\r\nimport UserAvatar from \"./UserAvatar\";\r\nimport UserAvatarDownload from \"./UserAvatarDownload\";\r\nimport UserInfo from \"./UserInfo\";\r\nimport { AccountArrowRight, AccountPlus, LogoutVariant } from \"mdi-material-ui\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport {\r\n AppBar,\r\n Drawer,\r\n Grow,\r\n Hidden,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n SwipeableDrawer,\r\n Toolbar,\r\n Tooltip,\r\n Typography,\r\n withStyles,\r\n withTheme,\r\n} from \"@material-ui/core\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport API from \"../../middleware/Api\";\r\nimport FileTag from \"./FileTags\";\r\nimport { Assignment, Devices, MoreHoriz, Settings } from \"@material-ui/icons\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport SubActions from \"../FileManager/Navigator/SubActions\";\r\nimport {\r\n audioPreviewSetIsOpen,\r\n changeContextMenu,\r\n drawerToggleAction,\r\n navigateTo,\r\n openCreateFolderDialog,\r\n openLoadingDialog,\r\n openMoveDialog,\r\n openMusicDialog,\r\n openPreview,\r\n openRemoveDialog,\r\n openRenameDialog,\r\n openShareDialog,\r\n saveFile,\r\n setSelectedTarget,\r\n setSessionStatus,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { startBatchDownload, startDownload } from \"../../redux/explorer/action\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nvhCheck();\r\nconst drawerWidth = 240;\r\nconst drawerWidthMobile = 270;\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n desktopOpen: state.viewUpdate.open,\r\n selected: state.explorer.selected,\r\n isMultiple: state.explorer.selectProps.isMultiple,\r\n withFolder: state.explorer.selectProps.withFolder,\r\n withFile: state.explorer.selectProps.withFile,\r\n path: state.navigator.path,\r\n title: state.siteConfig.title,\r\n subTitle: state.viewUpdate.subTitle,\r\n loadUploader: state.viewUpdate.loadUploader,\r\n isLogin: state.viewUpdate.isLogin,\r\n shareInfo: state.viewUpdate.shareInfo,\r\n registerEnabled: state.siteConfig.registerEnabled,\r\n audioPreviewPlayingName: state.explorer.audioPreview.playingName,\r\n audioPreviewIsOpen: state.explorer.audioPreview.isOpen,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n handleDesktopToggle: (open) => {\r\n dispatch(drawerToggleAction(open));\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n navigateTo: (path) => {\r\n dispatch(navigateTo(path));\r\n },\r\n openCreateFolderDialog: () => {\r\n dispatch(openCreateFolderDialog());\r\n },\r\n changeContextMenu: (type, open) => {\r\n dispatch(changeContextMenu(type, open));\r\n },\r\n saveFile: () => {\r\n dispatch(saveFile());\r\n },\r\n openMusicDialog: () => {\r\n dispatch(openMusicDialog());\r\n },\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n openRenameDialog: () => {\r\n dispatch(openRenameDialog());\r\n },\r\n openMoveDialog: () => {\r\n dispatch(openMoveDialog());\r\n },\r\n openRemoveDialog: () => {\r\n dispatch(openRemoveDialog());\r\n },\r\n openShareDialog: () => {\r\n dispatch(openShareDialog());\r\n },\r\n openLoadingDialog: (text) => {\r\n dispatch(openLoadingDialog(text));\r\n },\r\n setSessionStatus: () => {\r\n dispatch(setSessionStatus());\r\n },\r\n openPreview: (share) => {\r\n dispatch(openPreview(share));\r\n },\r\n audioPreviewOpen: () => {\r\n dispatch(audioPreviewSetIsOpen(true));\r\n },\r\n startBatchDownload: (share) => {\r\n dispatch(startBatchDownload(share));\r\n },\r\n startDownload: (share, file) => {\r\n dispatch(startDownload(share, file));\r\n },\r\n };\r\n};\r\n\r\nconst styles = (theme) => ({\r\n appBar: {\r\n marginLeft: drawerWidth,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginLeft: drawerWidthMobile,\r\n },\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: \" background-color 250ms\",\r\n },\r\n\r\n drawer: {\r\n width: 0,\r\n flexShrink: 0,\r\n },\r\n drawerDesktop: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n icon: {\r\n marginRight: theme.spacing(2),\r\n },\r\n menuButton: {\r\n marginRight: 20,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n menuButtonDesktop: {\r\n marginRight: 20,\r\n [theme.breakpoints.down(\"xs\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n menuIcon: {\r\n marginRight: 20,\r\n },\r\n toolbar: theme.mixins.toolbar,\r\n drawerPaper: {\r\n width: drawerWidthMobile,\r\n },\r\n drawerPaperDesktop: {\r\n width: drawerWidth,\r\n },\r\n upDrawer: {\r\n overflowX: \"hidden\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: \"100%\",\r\n justifyContent: \"space-between\",\r\n },\r\n },\r\n drawerOpen: {\r\n width: drawerWidth,\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n drawerClose: {\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: \"hidden\",\r\n width: 0,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n badge: {\r\n top: 1,\r\n right: -15,\r\n },\r\n nested: {\r\n paddingLeft: theme.spacing(4),\r\n },\r\n sectionForFile: {\r\n display: \"flex\",\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n addButton: {\r\n marginLeft: \"40px\",\r\n marginTop: \"25px\",\r\n marginBottom: \"15px\",\r\n },\r\n fabButton: {\r\n borderRadius: \"100px\",\r\n },\r\n badgeFix: {\r\n right: \"10px\",\r\n },\r\n iconFix: {\r\n marginLeft: \"16px\",\r\n },\r\n dividerFix: {\r\n marginTop: \"8px\",\r\n },\r\n folderShareIcon: {\r\n verticalAlign: \"sub\",\r\n marginRight: \"5px\",\r\n },\r\n shareInfoContainer: {\r\n display: \"flex\",\r\n marginTop: \"15px\",\r\n marginBottom: \"20px\",\r\n marginLeft: \"28px\",\r\n textDecoration: \"none\",\r\n },\r\n shareAvatar: {\r\n width: \"40px\",\r\n height: \"40px\",\r\n },\r\n stickFooter: {\r\n bottom: \"0px\",\r\n position: \"absolute\",\r\n backgroundColor: theme.palette.background.paper,\r\n width: \"100%\",\r\n },\r\n ownerInfo: {\r\n marginLeft: \"10px\",\r\n width: \"150px\",\r\n },\r\n minStickDrawer: {\r\n overflowY: \"auto\",\r\n },\r\n});\r\nclass NavbarCompoment extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n mobileOpen: false,\r\n };\r\n this.UploaderRef = React.createRef();\r\n }\r\n\r\n UNSAFE_componentWillMount() {\r\n this.unlisten = this.props.history.listen(() => {\r\n this.setState(() => ({ mobileOpen: false }));\r\n });\r\n }\r\n componentWillUnmount() {\r\n this.unlisten();\r\n }\r\n\r\n componentDidMount() {\r\n changeThemeColor(\r\n this.props.selected.length <= 1 &&\r\n !(!this.props.isMultiple && this.props.withFile)\r\n ? this.props.theme.palette.primary.main\r\n : this.props.theme.palette.background.default\r\n );\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps = (nextProps) => {\r\n if (\r\n (this.props.selected.length === 0) !==\r\n (nextProps.selected.length === 0)\r\n ) {\r\n changeThemeColor(\r\n !(this.props.selected.length === 0)\r\n ? this.props.theme.palette.type === \"dark\"\r\n ? this.props.theme.palette.background.default\r\n : this.props.theme.palette.primary.main\r\n : this.props.theme.palette.background.default\r\n );\r\n }\r\n };\r\n\r\n handleDrawerToggle = () => {\r\n this.setState((state) => ({ mobileOpen: !state.mobileOpen }));\r\n };\r\n\r\n openDownload = () => {\r\n this.props.startDownload(this.props.shareInfo, this.props.selected[0]);\r\n };\r\n\r\n archiveDownload = (e) => {\r\n this.props.startBatchDownload(this.props.shareInfo);\r\n };\r\n\r\n signOut = () => {\r\n API.delete(\"/user/session/\")\r\n .then(() => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"login.loggedOut\"),\r\n \"success\"\r\n );\r\n Auth.signout();\r\n window.location.reload();\r\n this.props.setSessionStatus(false);\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"warning\"\r\n );\r\n })\r\n .finally(() => {\r\n this.handleClose();\r\n });\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const user = Auth.GetUser(this.props.isLogin);\r\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\r\n const isSharePage = pathHelper.isSharePage(\r\n this.props.location.pathname\r\n );\r\n\r\n const drawer = (\r\n
\r\n {pathHelper.isMobile() && }\r\n\r\n {Auth.Check(this.props.isLogin) && (\r\n <>\r\n
\r\n \r\n \r\n \r\n this.props.history.push(\"/shares?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.props.history.push(\"/aria2?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {user.group.webdav && (\r\n \r\n this.props.history.push(\"/webdav?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n this.props.history.push(\"/tasks?\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {pathHelper.isMobile() && (\r\n <>\r\n \r\n \r\n this.props.history.push(\r\n \"/setting?\"\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n\r\n {!Auth.Check(this.props.isLogin) && (\r\n
\r\n this.props.history.push(\"/login\")}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {this.props.registerEnabled && (\r\n \r\n this.props.history.push(\"/signup\")\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n const iOS =\r\n process.browser && /iPad|iPhone|iPod/.test(navigator.userAgent);\r\n return (\r\n
\r\n \r\n \r\n\r\n {this.props.selected.length === 0 && (\r\n {\r\n this.props.history.push(\"/\");\r\n }}\r\n >\r\n {this.props.subTitle\r\n ? this.props.subTitle\r\n : this.props.title}\r\n \r\n )}\r\n\r\n {!this.props.isMultiple &&\r\n (this.props.withFile || this.props.withFolder) &&\r\n !pathHelper.isMobile() && (\r\n \r\n {this.props.selected[0].name}{\" \"}\r\n {this.props.withFile &&\r\n (isHomePage ||\r\n pathHelper.isSharePage(\r\n this.props.location.pathname\r\n )) &&\r\n \"(\" +\r\n sizeToString(\r\n this.props.selected[0].size\r\n ) +\r\n \")\"}\r\n \r\n )}\r\n\r\n {this.props.selected.length > 1 &&\r\n !pathHelper.isMobile() && (\r\n \r\n {t(\"navbar.objectsSelected\", {\r\n num: this.props.selected.length,\r\n })}\r\n \r\n )}\r\n \r\n
\r\n {this.props.selected.length > 0 &&\r\n (isHomePage || isSharePage) && (\r\n
\r\n {!this.props.isMultiple &&\r\n this.props.withFile &&\r\n isPreviewable(\r\n this.props.selected[0].name\r\n ) && (\r\n \r\n \r\n \r\n this.props.openPreview(\r\n this.props\r\n .shareInfo\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple &&\r\n this.props.withFile && (\r\n \r\n \r\n \r\n this.openDownload()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {(this.props.isMultiple ||\r\n this.props.withFolder) && (\r\n \r\n \r\n \r\n this.archiveDownload()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple &&\r\n !pathHelper.isMobile() &&\r\n !isSharePage && (\r\n \r\n \r\n \r\n this.props.openShareDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!this.props.isMultiple && !isSharePage && (\r\n \r\n \r\n \r\n this.props.openRenameDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!isSharePage && (\r\n
\r\n {!pathHelper.isMobile() && (\r\n \r\n \r\n \r\n this.props.openMoveDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n this.props.openRemoveDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n\r\n {pathHelper.isMobile() && (\r\n \r\n \r\n \r\n this.props.changeContextMenu(\r\n \"file\",\r\n true\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n )}\r\n {this.props.selected.length <= 1 &&\r\n !(!this.props.isMultiple && this.props.withFile) &&\r\n this.props.audioPreviewPlayingName != null && (\r\n \r\n \r\n \r\n )}\r\n\r\n {this.props.selected.length === 0 && }\r\n {this.props.selected.length === 0 &&\r\n pathHelper.isMobile() &&\r\n (isHomePage || this.props.shareInfo) && (\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n \r\n this.setState(() => ({ mobileOpen: true }))\r\n }\r\n disableDiscovery={iOS}\r\n ModalProps={{\r\n keepMounted: true, // Better open performance on mobile.\r\n }}\r\n >\r\n {drawer}\r\n \r\n \r\n \r\n \r\n
\r\n {drawer}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nNavbarCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n theme: PropTypes.object.isRequired,\r\n};\r\n\r\nconst Navbar = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(\r\n withTheme(\r\n withStyles(styles)(withRouter(withTranslation()(NavbarCompoment)))\r\n )\r\n);\r\n\r\nexport default Navbar;\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport SettingIcon from \"@material-ui/icons/Settings\";\r\nimport UserAvatarPopover from \"./UserAvatarPopover\";\r\nimport { AccountCircle } from \"mdi-material-ui\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport {\r\n Avatar,\r\n Grow,\r\n IconButton,\r\n Tooltip,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\r\nimport { Home } from \"@material-ui/icons\";\r\nimport { setUserPopover } from \"../../redux/explorer\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n selected: state.explorer.selected,\r\n isMultiple: state.explorer.selectProps.isMultiple,\r\n withFolder: state.explorer.selectProps.withFolder,\r\n withFile: state.explorer.selectProps.withFile,\r\n isLogin: state.viewUpdate.isLogin,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n setUserPopover: (anchor) => {\r\n dispatch(setUserPopover(anchor));\r\n },\r\n };\r\n};\r\n\r\nconst styles = (theme) => ({\r\n mobileHidden: {\r\n [theme.breakpoints.down(\"xs\")]: {\r\n display: \"none\",\r\n },\r\n whiteSpace: \"nowrap\",\r\n },\r\n avatar: {\r\n width: \"30px\",\r\n height: \"30px\",\r\n },\r\n header: {\r\n display: \"flex\",\r\n padding: \"20px 20px 20px 20px\",\r\n },\r\n largeAvatar: {\r\n height: \"90px\",\r\n width: \"90px\",\r\n },\r\n info: {\r\n marginLeft: \"10px\",\r\n width: \"139px\",\r\n },\r\n badge: {\r\n marginTop: \"10px\",\r\n },\r\n visitorMenu: {\r\n width: 200,\r\n },\r\n});\r\n\r\nclass UserAvatarCompoment extends Component {\r\n state = {\r\n anchorEl: null,\r\n };\r\n\r\n showUserInfo = (e) => {\r\n this.props.setUserPopover(e.currentTarget);\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({\r\n anchorEl: null,\r\n });\r\n };\r\n\r\n openURL = (url) => {\r\n window.location.href = url;\r\n };\r\n\r\n returnHome = () => {\r\n window.location.href = \"/home\";\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const loginCheck = Auth.Check(this.props.isLogin);\r\n const user = Auth.GetUser(this.props.isLogin);\r\n const isAdminPage = pathHelper.isAdminPage(\r\n this.props.location.pathname\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n {!isAdminPage && (\r\n <>\r\n \r\n {loginCheck && (\r\n <>\r\n \r\n \r\n this.props.history.push(\r\n \"/setting?\"\r\n )\r\n }\r\n color=\"inherit\"\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {isAdminPage && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nUserAvatarCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst UserAvatar = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(UserAvatarCompoment))));\r\n\r\nexport default UserAvatar;\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport { baseURL } from \"../../middleware/Api\";\r\nimport { imgPreviewSuffix } from \"../../config\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport { withRouter } from \"react-router\";\r\nimport { PhotoSlider } from \"react-photo-view\";\r\nimport \"react-photo-view/dist/index.css\";\r\nimport * as explorer from \"../../redux/explorer/reducer\";\r\nimport { showImgPreivew } from \"../../redux/explorer\";\r\n\r\nconst styles = () => ({});\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n first: state.explorer.imgPreview.first,\r\n other: state.explorer.imgPreview.other,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n };\r\n};\r\n\r\nclass ImagPreviewComponent extends Component {\r\n state = {\r\n items: [],\r\n photoIndex: 0,\r\n isOpen: false,\r\n };\r\n\r\n UNSAFE_componentWillReceiveProps = (nextProps) => {\r\n const items = [];\r\n let firstOne = 0;\r\n if (nextProps.first.id !== \"\") {\r\n if (\r\n pathHelper.isSharePage(this.props.location.pathname) &&\r\n !nextProps.first.path\r\n ) {\r\n const newImg = {\r\n intro: nextProps.first.name,\r\n src: baseURL + \"/share/preview/\" + nextProps.first.key,\r\n };\r\n firstOne = 0;\r\n items.push(newImg);\r\n this.setState({\r\n photoIndex: firstOne,\r\n items: items,\r\n isOpen: true,\r\n });\r\n return;\r\n }\r\n // eslint-disable-next-line\r\n nextProps.other.map((value) => {\r\n const fileType = value.name.split(\".\").pop().toLowerCase();\r\n if (imgPreviewSuffix.indexOf(fileType) !== -1) {\r\n let src = \"\";\r\n if (pathHelper.isSharePage(this.props.location.pathname)) {\r\n src = baseURL + \"/share/preview/\" + value.key;\r\n src =\r\n src +\r\n \"?path=\" +\r\n encodeURIComponent(\r\n value.path === \"/\"\r\n ? value.path + value.name\r\n : value.path + \"/\" + value.name\r\n );\r\n } else {\r\n src = baseURL + \"/file/preview/\" + value.id;\r\n }\r\n const newImg = {\r\n intro: value.name,\r\n src: src,\r\n };\r\n if (\r\n value.path === nextProps.first.path &&\r\n value.name === nextProps.first.name\r\n ) {\r\n firstOne = items.length;\r\n }\r\n items.push(newImg);\r\n }\r\n });\r\n this.setState({\r\n photoIndex: firstOne,\r\n items: items,\r\n isOpen: true,\r\n });\r\n }\r\n };\r\n\r\n handleClose = () => {\r\n this.props.showImgPreivew(explorer.initState.imgPreview.first);\r\n this.setState({\r\n isOpen: false,\r\n });\r\n };\r\n\r\n render() {\r\n const { photoIndex, isOpen, items } = this.state;\r\n\r\n return (\r\n
\r\n {isOpen && (\r\n this.handleClose()}\r\n index={photoIndex}\r\n onIndexChange={(n) =>\r\n this.setState({\r\n photoIndex: n,\r\n })\r\n }\r\n />\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nImagPreviewComponent.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nconst ImgPreivew = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(ImagPreviewComponent)));\r\n\r\nexport default ImgPreivew;\r\n","import i18next from \"./i18n\";\r\n\r\nexport const imgPreviewSuffix = [\r\n \"bmp\",\r\n \"png\",\r\n \"gif\",\r\n \"jpg\",\r\n \"jpeg\",\r\n \"svg\",\r\n \"webp\",\r\n];\r\nexport const msDocPreviewSuffix = [\r\n \"ppt\",\r\n \"pptx\",\r\n \"pps\",\r\n \"doc\",\r\n \"docx\",\r\n \"xlsx\",\r\n \"xls\",\r\n];\r\nexport const subtitleSuffix = [\"ass\", \"srt\", \"vrr\"];\r\nexport const audioPreviewSuffix = [\"mp3\", \"ogg\", \"wav\", \"flac\", \"m4a\"];\r\nexport const videoPreviewSuffix = [\"mp4\", \"mkv\", \"webm\", \"avi\", \"m3u8\", \"mov\"];\r\nexport const pdfPreviewSuffix = [\"pdf\"];\r\nexport const editSuffix = [\"md\", \"txt\"];\r\nexport const epubSuffix = [\"epub\"];\r\nexport const codePreviewSuffix = {\r\n json: \"json\",\r\n php: \"php\",\r\n py: \"python\",\r\n bat: \"bat\",\r\n cpp: \"cpp\",\r\n c: \"cpp\",\r\n h: \"cpp\",\r\n cs: \"csharp\",\r\n css: \"css\",\r\n dockerfile: \"dockerfile\",\r\n go: \"go\",\r\n html: \"html\",\r\n ini: \"ini\",\r\n java: \"java\",\r\n js: \"javascript\",\r\n jsx: \"javascript\",\r\n less: \"less\",\r\n lua: \"lua\",\r\n sh: \"shell\",\r\n sql: \"sql\",\r\n xml: \"xml\",\r\n yaml: \"yaml\",\r\n};\r\nexport const mediaType = {\r\n audio: [\"mp3\", \"flac\", \"ape\", \"wav\", \"acc\", \"ogg\", \"m4a\"],\r\n video: [\"mp4\", \"flv\", \"avi\", \"wmv\", \"mkv\", \"rm\", \"rmvb\", \"mov\", \"ogv\"],\r\n image: [\"bmp\", \"iff\", \"png\", \"gif\", \"jpg\", \"jpeg\", \"psd\", \"svg\", \"webp\"],\r\n pdf: [\"pdf\"],\r\n word: [\"doc\", \"docx\"],\r\n ppt: [\"ppt\", \"pptx\"],\r\n excel: [\"xls\", \"xlsx\", \"csv\"],\r\n text: [\"txt\", \"md\", \"html\"],\r\n torrent: [\"torrent\"],\r\n zip: [\"zip\", \"gz\", \"xz\", \"tar\", \"rar\", \"7z\"],\r\n excute: [\"exe\"],\r\n android: [\"apk\"],\r\n php: [\"php\"],\r\n go: [\"go\"],\r\n python: [\"py\"],\r\n cpp: [\"cpp\"],\r\n c: [\"c\"],\r\n js: [\"js\", \"jsx\"],\r\n epub: epubSuffix,\r\n};\r\nexport const isPreviewable = (name: any) => {\r\n const suffix = name.split(\".\").pop().toLowerCase();\r\n if (imgPreviewSuffix.indexOf(suffix) !== -1) {\r\n return \"img\";\r\n } else if (msDocPreviewSuffix.indexOf(suffix) !== -1) {\r\n return \"msDoc\";\r\n } else if (audioPreviewSuffix.indexOf(suffix) !== -1) {\r\n return \"audio\";\r\n } else if (videoPreviewSuffix.indexOf(suffix) !== -1) {\r\n return \"video\";\r\n } else if (editSuffix.indexOf(suffix) !== -1) {\r\n return \"edit\";\r\n } else if (pdfPreviewSuffix.indexOf(suffix) !== -1) {\r\n return \"pdf\";\r\n } else if (Object.keys(codePreviewSuffix).indexOf(suffix) !== -1) {\r\n return \"code\";\r\n } else if (epubSuffix.indexOf(suffix) !== -1) {\r\n return \"epub\";\r\n }\r\n return false;\r\n};\r\nexport const isTorrent = (name: any) => {\r\n const suffix = name.split(\".\").pop().toLowerCase();\r\n if (mediaType.torrent.indexOf(suffix) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const isCompressFile = (name: any) => {\r\n const suffix = name.split(\".\").pop().toLowerCase();\r\n return suffix !== \"7z\" && mediaType[\"zip\"].indexOf(suffix) !== -1;\r\n};\r\n\r\nexport const encodingRequired = (name: any) => {\r\n const suffix = name.split(\".\").pop().toLowerCase();\r\n return suffix === \"zip\";\r\n};\r\n\r\nconst taskStatus = [\r\n \"setting.queueing\",\r\n \"setting.processing\",\r\n \"setting.failed\",\r\n \"setting.canceled\",\r\n \"setting.finished\",\r\n];\r\nconst taskType = [\r\n \"fileManager.compress\",\r\n \"fileManager.decompress\",\r\n \"setting.fileTransfer\",\r\n \"setting.importFiles\",\r\n];\r\nconst taskProgress = [\r\n \"setting.waiting\",\r\n \"setting.compressing\",\r\n \"setting.decompressing\",\r\n \"setting.downloading\",\r\n \"setting.transferring\",\r\n \"setting.indexing\",\r\n \"setting.listing\",\r\n];\r\n\r\nexport const getTaskStatus = (status: any) => {\r\n return i18next.t(taskStatus[status]);\r\n};\r\n\r\nexport const getTaskType = (status: any) => {\r\n return i18next.t(taskType[status]);\r\n};\r\n\r\nexport const getTaskProgress = (type: any, status: any) => {\r\n if (type === 2) {\r\n return i18next.t(\"setting.transferProgress\", {\r\n num: status,\r\n });\r\n }\r\n return i18next.t(taskProgress[status]);\r\n};\r\n","import { ThunkAction } from \"redux-thunk\";\r\nimport { AnyAction } from \"redux\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport { askForOption } from \"../explorer/async\";\r\nimport i18next, { languages } from \"../../i18n\";\r\n\r\nexport interface ActionSetSubtitle extends AnyAction {\r\n type: \"SET_SUBTITLE\";\r\n title: string;\r\n}\r\n\r\nexport const setSubtitle = (title: string): ActionSetSubtitle => {\r\n return {\r\n type: \"SET_SUBTITLE\",\r\n title,\r\n };\r\n};\r\n\r\nexport const closeContextMenu = () => {\r\n return {\r\n type: \"CLOSE_CONTEXT_MENU\",\r\n };\r\n};\r\n\r\nexport const changeContextMenu = (type: string, open: boolean) => {\r\n return {\r\n type: \"CHANGE_CONTEXT_MENU\",\r\n menuType: type,\r\n open: open,\r\n };\r\n};\r\n\r\nexport const changeSubTitle = (\r\n title: string\r\n): ThunkAction => {\r\n return (dispatch, getState) => {\r\n const state = getState();\r\n document.title =\r\n title === null || title === undefined\r\n ? state.siteConfig.title\r\n : title + \" - \" + state.siteConfig.title;\r\n dispatch(setSubtitle(title));\r\n };\r\n};\r\n\r\nexport const setOptionModal = (option: any) => {\r\n return {\r\n type: \"SET_OPTION_MODAL\",\r\n option: option,\r\n };\r\n};\r\n\r\nexport const openFileSelector = () => {\r\n return {\r\n type: \"OPEN_FILE_SELECTOR\",\r\n };\r\n};\r\n\r\nexport const openFolderSelector = () => {\r\n return {\r\n type: \"OPEN_FOLDER_SELECTOR\",\r\n };\r\n};\r\n\r\nexport const setPagination = (pagination) => {\r\n return {\r\n type: \"SET_PAGINATION\",\r\n pagination: pagination,\r\n };\r\n};\r\n\r\nexport const setShareInfo = (shareInfo) => {\r\n return {\r\n type: \"SET_SHARE_INFO\",\r\n shareInfo: shareInfo,\r\n };\r\n};\r\n\r\nexport const changePageSize = (\r\n size: number\r\n): ThunkAction => {\r\n return (dispatch, getState) => {\r\n const {\r\n explorer: { dirList, fileList },\r\n viewUpdate: { pagination },\r\n } = getState();\r\n const total = dirList.length + fileList.length;\r\n let page = pagination.page;\r\n if (pagination.page * size > total) {\r\n page = Math.max(Math.ceil(total / size), 1);\r\n } else if (size === -1) {\r\n page = 1;\r\n }\r\n Auth.SetPreference(\"pagination\", size);\r\n dispatch(\r\n setPagination({\r\n ...pagination,\r\n size: size,\r\n page: page,\r\n })\r\n );\r\n };\r\n};\r\n\r\nexport const selectLanguage = (): ThunkAction => {\r\n return async (dispatch, getState) => {\r\n let option: any;\r\n let lng = \"\";\r\n try {\r\n const allOptions = languages.map((e) => {\r\n return {\r\n key: e.code,\r\n name: e.displayName,\r\n };\r\n });\r\n option = await dispatch(\r\n askForOption(allOptions, i18next.t(\"setting.language\"))\r\n );\r\n } catch (e) {\r\n console.log(e);\r\n return;\r\n }\r\n\r\n lng = option.key;\r\n await i18next.changeLanguage(lng);\r\n };\r\n};\r\n","import dayjs from \"dayjs\";\r\nimport timezone from \"dayjs/plugin/timezone\";\r\nimport utc from \"dayjs/plugin/utc\";\r\nimport Auth from \"../middleware/Auth\";\r\nimport i18next from \"../i18n\";\r\n\r\ndayjs.extend(utc);\r\ndayjs.extend(timezone);\r\n\r\nlet userTimezone = \"\";\r\ntry {\r\n userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n} catch (e) {\r\n console.log(e);\r\n}\r\n\r\nif (!userTimezone) {\r\n userTimezone = \"Asia/Shanghai\";\r\n}\r\n\r\nconst preferTimeZone = Auth.GetPreference(\"timeZone\");\r\nexport let timeZone = preferTimeZone ? preferTimeZone : userTimezone;\r\n\r\nexport function refreshTimeZone() {\r\n timeZone = Auth.GetPreference(\"timeZone\");\r\n timeZone = timeZone ? timeZone : userTimezone;\r\n}\r\n\r\nexport function formatLocalTime(time) {\r\n return i18next.t(\"intlDateTime\", {\r\n ns: \"common\",\r\n val: dayjs(time).tz(timeZone).toDate(),\r\n formatParams: {\r\n val: {\r\n year: \"numeric\",\r\n month: \"numeric\",\r\n day: \"numeric\",\r\n hour: \"numeric\",\r\n minute: \"numeric\",\r\n second: \"numeric\",\r\n },\r\n },\r\n });\r\n}\r\n\r\nexport function validateTimeZone(name) {\r\n try {\r\n dayjs().tz(name).format();\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n","import React from \"react\";\r\nimport { mediaType } from \"../../config\";\r\nimport ImageIcon from \"@material-ui/icons/PhotoSizeSelectActual\";\r\nimport VideoIcon from \"@material-ui/icons/Videocam\";\r\nimport AudioIcon from \"@material-ui/icons/Audiotrack\";\r\nimport PdfIcon from \"@material-ui/icons/PictureAsPdf\";\r\nimport {\r\n Android,\r\n FileExcelBox,\r\n FilePowerpointBox,\r\n FileWordBox,\r\n LanguageC,\r\n LanguageCpp,\r\n LanguageGo,\r\n LanguageJavascript,\r\n LanguagePhp,\r\n LanguagePython,\r\n MagnetOn,\r\n ScriptText,\r\n WindowRestore,\r\n ZipBox,\r\n} from \"mdi-material-ui\";\r\nimport FileShowIcon from \"@material-ui/icons/InsertDriveFile\";\r\nimport { lighten } from \"@material-ui/core/styles\";\r\nimport useTheme from \"@material-ui/core/styles/useTheme\";\r\nimport { Avatar } from \"@material-ui/core\";\r\nimport { MenuBook } from \"@material-ui/icons\";\r\n\r\nconst icons = {\r\n audio: {\r\n color: \"#651fff\",\r\n icon: AudioIcon,\r\n },\r\n video: {\r\n color: \"#d50000\",\r\n icon: VideoIcon,\r\n },\r\n image: {\r\n color: \"#d32f2f\",\r\n icon: ImageIcon,\r\n },\r\n pdf: {\r\n color: \"#f44336\",\r\n icon: PdfIcon,\r\n },\r\n word: {\r\n color: \"#538ce5\",\r\n icon: FileWordBox,\r\n },\r\n ppt: {\r\n color: \"rgb(239, 99, 63)\",\r\n icon: FilePowerpointBox,\r\n },\r\n excel: {\r\n color: \"#4caf50\",\r\n icon: FileExcelBox,\r\n },\r\n text: {\r\n color: \"#607d8b\",\r\n icon: ScriptText,\r\n },\r\n torrent: {\r\n color: \"#5c6bc0\",\r\n icon: MagnetOn,\r\n },\r\n zip: {\r\n color: \"#f9a825\",\r\n icon: ZipBox,\r\n },\r\n excute: {\r\n color: \"#1a237e\",\r\n icon: WindowRestore,\r\n },\r\n android: {\r\n color: \"#8bc34a\",\r\n icon: Android,\r\n },\r\n file: {\r\n color: \"#607d8b\",\r\n icon: FileShowIcon,\r\n },\r\n php: {\r\n color: \"#777bb3\",\r\n icon: LanguagePhp,\r\n },\r\n go: {\r\n color: \"#16b3da\",\r\n icon: LanguageGo,\r\n },\r\n python: {\r\n color: \"#3776ab\",\r\n icon: LanguagePython,\r\n },\r\n c: {\r\n color: \"#a8b9cc\",\r\n icon: LanguageC,\r\n },\r\n cpp: {\r\n color: \"#004482\",\r\n icon: LanguageCpp,\r\n },\r\n js: {\r\n color: \"#f4d003\",\r\n icon: LanguageJavascript,\r\n },\r\n epub: {\r\n color: \"#81b315\",\r\n icon: MenuBook,\r\n },\r\n};\r\n\r\nconst getColor = (theme, color) =>\r\n theme.palette.type === \"light\" ? color : lighten(color, 0.2);\r\n\r\nlet color;\r\n\r\nconst TypeIcon = (props) => {\r\n const theme = useTheme();\r\n\r\n const fileSuffix = props.fileName.split(\".\").pop().toLowerCase();\r\n let fileType = \"file\";\r\n Object.keys(mediaType).forEach((k) => {\r\n if (mediaType[k].indexOf(fileSuffix) !== -1) {\r\n fileType = k;\r\n }\r\n });\r\n const IconComponent = icons[fileType].icon;\r\n color = getColor(theme, icons[fileType].color);\r\n if (props.getColorValue) {\r\n props.getColorValue(color);\r\n }\r\n\r\n return (\r\n <>\r\n {props.isUpload && (\r\n \r\n \r\n \r\n )}\r\n {!props.isUpload && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TypeIcon;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === \"installed\") {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n \"New content is available and will be used when all \" +\r\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log(\"Content is cached for offline use.\");\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error(\"Error during service worker registration:\", error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get(\"content-type\");\r\n if (\r\n response.status === 404 ||\r\n (contentType != null &&\r\n contentType.indexOf(\"javascript\") === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n \"No internet connection found. App is running in offline mode.\"\r\n );\r\n });\r\n}\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === \"localhost\" ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === \"[::1]\" ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener(\"load\", () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n \"This web app is being served cache-first by a service \" +\r\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport function unregister() {\r\n if (\"serviceWorker\" in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport Auth from \"./Auth\";\r\nimport { Route, Redirect } from \"react-router-dom\";\r\n\r\nfunction AuthRoute({ children, ...rest }) {\r\n return (\r\n \r\n Auth.Check(rest.isLogin) ? (\r\n children\r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n );\r\n}\r\nexport default AuthRoute;\r\n","import React from \"react\";\r\nimport Auth from \"./Auth\";\r\nimport { Route, Redirect } from \"react-router-dom\";\r\n\r\nfunction NoAuthRoute({ children, ...rest }) {\r\n return (\r\n \r\n !Auth.Check(rest.isLogin) ? (\r\n children\r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n );\r\n}\r\n\r\nexport default NoAuthRoute;\r\n","import React from \"react\";\r\nimport SentimentVeryDissatisfiedIcon from \"@material-ui/icons/SentimentVeryDissatisfied\";\r\nimport { lighten, makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icon: {\r\n fontSize: \"160px\",\r\n },\r\n emptyContainer: {\r\n bottom: \"0\",\r\n height: \"300px\",\r\n margin: \"50px auto\",\r\n width: \"300px\",\r\n color: lighten(theme.palette.text.disabled, 0.4),\r\n textAlign: \"center\",\r\n paddingTop: \"20px\",\r\n },\r\n emptyInfoBig: {\r\n fontSize: \"25px\",\r\n color: lighten(theme.palette.text.disabled, 0.4),\r\n },\r\n}));\r\n\r\nexport default function Notice(props) {\r\n const classes = useStyles();\r\n return (\r\n
\r\n \r\n
{props.msg}
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport ContentLoader from \"react-content-loader\";\r\n\r\nconst MyLoader = () => (\r\n \r\n \r\n \r\n);\r\n\r\nfunction captchaPlacholder() {\r\n return ;\r\n}\r\n\r\nexport default captchaPlacholder;\r\n","import React, {\r\n forwardRef,\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport API from \"../middleware/Api\";\r\nimport { FormControl, Input, InputLabel } from \"@material-ui/core\";\r\nimport Placeholder from \"../component/Placeholder/Captcha\";\r\nimport { defaultValidate, useStyle } from \"./useCaptcha\";\r\nimport { toggleSnackbar } from \"../redux/explorer\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst NormalCaptcha = forwardRef(function NormalCaptcha(\r\n { captchaRef, setLoading },\r\n ref\r\n) {\r\n const { t } = useTranslation();\r\n const classes = useStyle();\r\n\r\n const [captcha, setCaptcha] = useState(\"\");\r\n const [captchaData, setCaptchaData] = useState(null);\r\n\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n const refreshCaptcha = () => {\r\n API.get(\"/site/captcha\")\r\n .then((response) => {\r\n setCaptchaData(response.data);\r\n setLoading(false);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"login.captchaError\", { message: error.message }),\r\n \"error\"\r\n );\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n ref.current = refreshCaptcha;\r\n refreshCaptcha();\r\n }, []);\r\n\r\n useEffect(() => {\r\n captchaRef.current.captchaCode = captcha;\r\n }, [captcha]);\r\n\r\n return (\r\n
\r\n \r\n {t(\"login.captcha\")}\r\n setCaptcha(e.target.value)}\r\n type=\"text\"\r\n id=\"captcha\"\r\n value={captcha}\r\n autoComplete\r\n />\r\n {\" \"}\r\n \r\n {captchaData === null && (\r\n \r\n )}\r\n {captchaData !== null && (\r\n \r\n )}\r\n
\r\n
\r\n );\r\n});\r\n\r\nexport default function useNormalCaptcha(captchaRefreshRef, setLoading) {\r\n const isValidate = useRef({\r\n isValidate: true,\r\n });\r\n\r\n const captchaParamsRef = useRef({\r\n captchaCode: \"\",\r\n });\r\n\r\n const CaptchaRender = useCallback(\r\n function Normal() {\r\n return (\r\n \r\n );\r\n },\r\n [captchaParamsRef, captchaRefreshRef, setLoading]\r\n );\r\n\r\n return {\r\n isValidate,\r\n validate: defaultValidate,\r\n captchaParamsRef,\r\n CaptchaRender,\r\n };\r\n}\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nexport default class ReCAPTCHA extends React.Component {\r\n constructor() {\r\n super();\r\n this.handleExpired = this.handleExpired.bind(this);\r\n this.handleErrored = this.handleErrored.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleRecaptchaRef = this.handleRecaptchaRef.bind(this);\r\n }\r\n\r\n getValue() {\r\n if (this.props.grecaptcha && this._widgetId !== undefined) {\r\n return this.props.grecaptcha.getResponse(this._widgetId);\r\n }\r\n return null;\r\n }\r\n\r\n getWidgetId() {\r\n if (this.props.grecaptcha && this._widgetId !== undefined) {\r\n return this._widgetId;\r\n }\r\n return null;\r\n }\r\n\r\n execute() {\r\n const { grecaptcha } = this.props;\r\n\r\n if (grecaptcha && this._widgetId !== undefined) {\r\n return grecaptcha.execute(this._widgetId);\r\n } else {\r\n this._executeRequested = true;\r\n }\r\n }\r\n\r\n reset() {\r\n if (this.props.grecaptcha && this._widgetId !== undefined) {\r\n this.props.grecaptcha.reset(this._widgetId);\r\n }\r\n }\r\n\r\n handleExpired() {\r\n if (this.props.onExpired) {\r\n this.props.onExpired();\r\n } else {\r\n this.handleChange(null);\r\n }\r\n }\r\n\r\n handleErrored() {\r\n if (this.props.onErrored) this.props.onErrored();\r\n }\r\n\r\n handleChange(token) {\r\n if (this.props.onChange) this.props.onChange(token);\r\n }\r\n\r\n explicitRender() {\r\n if (\r\n this.props.grecaptcha &&\r\n this.props.grecaptcha.render &&\r\n this._widgetId === undefined\r\n ) {\r\n const wrapper = document.createElement(\"div\");\r\n this._widgetId = this.props.grecaptcha.render(wrapper, {\r\n sitekey: this.props.sitekey,\r\n callback: this.handleChange,\r\n theme: this.props.theme,\r\n type: this.props.type,\r\n tabindex: this.props.tabindex,\r\n \"expired-callback\": this.handleExpired,\r\n \"error-callback\": this.handleErrored,\r\n size: this.props.size,\r\n stoken: this.props.stoken,\r\n hl: this.props.hl,\r\n badge: this.props.badge,\r\n });\r\n this.captcha.appendChild(wrapper);\r\n }\r\n if (\r\n this._executeRequested &&\r\n this.props.grecaptcha &&\r\n this._widgetId !== undefined\r\n ) {\r\n this._executeRequested = false;\r\n this.execute();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.explicitRender();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.explicitRender();\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._widgetId !== undefined) {\r\n this.delayOfCaptchaIframeRemoving();\r\n this.reset();\r\n }\r\n }\r\n\r\n delayOfCaptchaIframeRemoving() {\r\n const temporaryNode = document.createElement(\"div\");\r\n document.body.appendChild(temporaryNode);\r\n temporaryNode.style.display = \"none\";\r\n\r\n // move of the recaptcha to a temporary node\r\n while (this.captcha.firstChild) {\r\n temporaryNode.appendChild(this.captcha.firstChild);\r\n }\r\n\r\n // delete the temporary node after reset will be done\r\n setTimeout(() => {\r\n document.body.removeChild(temporaryNode);\r\n }, 5000);\r\n }\r\n\r\n handleRecaptchaRef(elem) {\r\n this.captcha = elem;\r\n }\r\n\r\n render() {\r\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\r\n /* eslint-disable no-unused-vars */\r\n /* eslint-disable @typescript-eslint/no-unused-vars */\r\n const {\r\n sitekey,\r\n onChange,\r\n theme,\r\n type,\r\n tabindex,\r\n onExpired,\r\n onErrored,\r\n size,\r\n stoken,\r\n grecaptcha,\r\n badge,\r\n hl,\r\n ...childProps\r\n } = this.props;\r\n /* eslint-enable no-unused-vars */\r\n return
;\r\n }\r\n}\r\n\r\nReCAPTCHA.displayName = \"ReCAPTCHA\";\r\nReCAPTCHA.propTypes = {\r\n sitekey: PropTypes.string.isRequired,\r\n onChange: PropTypes.func,\r\n grecaptcha: PropTypes.object,\r\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\r\n type: PropTypes.oneOf([\"image\", \"audio\"]),\r\n tabindex: PropTypes.number,\r\n onExpired: PropTypes.func,\r\n onErrored: PropTypes.func,\r\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\r\n stoken: PropTypes.string,\r\n hl: PropTypes.string,\r\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"]),\r\n};\r\nReCAPTCHA.defaultProps = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n onChange: () => {},\r\n theme: \"light\",\r\n type: \"image\",\r\n tabindex: 0,\r\n size: \"normal\",\r\n badge: \"bottomright\",\r\n};\r\n","import ReCAPTCHA from \"./ReCaptchaWrapper\";\r\nimport makeAsyncScriptLoader from \"react-async-script\";\r\n\r\nconst callbackName = \"onloadcallback\";\r\nconst globalName = \"grecaptcha\";\r\n\r\nfunction getURL() {\r\n const hostname = \"recaptcha.net\";\r\n return `https://${hostname}/recaptcha/api.js?onload=${callbackName}&render=explicit`;\r\n}\r\n\r\nexport default makeAsyncScriptLoader(getURL, {\r\n callbackName,\r\n globalName,\r\n})(ReCAPTCHA);\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { FormControl } from \"@material-ui/core\";\r\nimport ReCaptcha from \"../component/Login/ReCaptcha\";\r\nimport { defaultValidate, useStyle } from \"./useCaptcha\";\r\n\r\nconst Recaptcha = ({ captchaRef, setLoading }) => {\r\n const classes = useStyle();\r\n\r\n const [captcha, setCaptcha] = useState(\"\");\r\n\r\n const reCaptchaKey = useSelector(\r\n (state) => state.siteConfig.captcha_ReCaptchaKey\r\n );\r\n\r\n useEffect(() => {\r\n captchaRef.current.captchaCode = captcha;\r\n }, [captcha]);\r\n\r\n useEffect(() => setLoading(false), []);\r\n\r\n return (\r\n
\r\n \r\n
\r\n setCaptcha(value)}\r\n id=\"captcha\"\r\n name=\"captcha\"\r\n />\r\n
\r\n
{\" \"}\r\n
\r\n );\r\n};\r\n\r\nexport default function useRecaptcha(setLoading) {\r\n const isValidate = useRef({\r\n isValidate: true,\r\n });\r\n\r\n const captchaParamsRef = useRef({\r\n captchaCode: \"\",\r\n });\r\n\r\n const CaptchaRender = useCallback(\r\n function RecaptchaRender() {\r\n return (\r\n \r\n );\r\n },\r\n [captchaParamsRef, setLoading]\r\n );\r\n\r\n return {\r\n isValidate,\r\n validate: defaultValidate,\r\n captchaParamsRef,\r\n CaptchaRender,\r\n };\r\n}\r\n","import React, { forwardRef, useCallback, useRef } from \"react\";\r\nimport Script from \"react-load-script\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst TCaptcha = forwardRef(function TCaptcha(\r\n { captchaRef, setLoading, isValidateRef, submitRef },\r\n ref\r\n) {\r\n const appid = useSelector(\r\n (state) => state.siteConfig.tcaptcha_captcha_app_id\r\n );\r\n const onLoad = () => {\r\n try {\r\n ref.current = new window.TencentCaptcha(appid, function (res) {\r\n if (res.ret === 0) {\r\n captchaRef.current.ticket = res.ticket;\r\n captchaRef.current.randstr = res.randstr;\r\n\r\n isValidateRef.current.isValidate = true;\r\n submitRef.current.submit();\r\n console.log(submitRef);\r\n } else {\r\n submitRef.current.setLoading(false);\r\n }\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n setLoading(false);\r\n };\r\n return (\r\n \r\n );\r\n});\r\n\r\nexport default function useTCaptcha(setLoading) {\r\n const isValidate = useRef({\r\n isValidate: false,\r\n });\r\n const captchaParamsRef = useRef({\r\n ticket: \"\",\r\n randstr: \"\",\r\n });\r\n const submitRef = useRef({\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n submit: () => {},\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n setLoading: () => {},\r\n });\r\n\r\n const captchaRef = useRef();\r\n\r\n const CaptchaRender = useCallback(\r\n function TCaptchaRender() {\r\n return (\r\n \r\n );\r\n },\r\n [captchaParamsRef, setLoading, isValidate, submitRef, captchaRef]\r\n );\r\n\r\n return {\r\n isValidate: isValidate,\r\n validate: (submit, setLoading) => {\r\n submitRef.current.submit = submit;\r\n submitRef.current.setLoading = setLoading;\r\n captchaRef.current.show();\r\n },\r\n captchaParamsRef,\r\n CaptchaRender,\r\n };\r\n}\r\n","import { useSelector } from \"react-redux\";\r\nimport { useRef, useState } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport useNormalCaptcha from \"./normal\";\r\nimport useRecaptcha from \"./recaptcha\";\r\nimport useTCaptcha from \"./tcaptcha\";\r\n\r\nexport const useStyle = makeStyles((theme) => ({\r\n captchaContainer: {\r\n display: \"flex\",\r\n marginTop: \"10px\",\r\n alignItems: 'center',\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginTop: 0,\r\n display: \"block\",\r\n },\r\n },\r\n captchaImageContainer: {\r\n cursor: 'pointer',\r\n marginLeft: \"1rem\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: 0,\r\n },\r\n },\r\n captchaImage: {\r\n borderRadius: 4,\r\n },\r\n}));\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\r\nexport const defaultValidate = (submit, setLoading) => {};\r\n\r\nexport const useCaptcha = () => {\r\n const captchaType = useSelector((state) => state.siteConfig.captcha_type);\r\n\r\n const [captchaLoading, setCaptchaLoading] = useState(true);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n const captchaRefreshRef = useRef(() => {});\r\n\r\n const normal = useNormalCaptcha(captchaRefreshRef, setCaptchaLoading);\r\n const recaptcha = useRecaptcha(setCaptchaLoading);\r\n const tcaptcha = useTCaptcha(setCaptchaLoading);\r\n\r\n switch (captchaType) {\r\n case \"normal\":\r\n return { ...normal, captchaRefreshRef, captchaLoading };\r\n case \"recaptcha\":\r\n return { ...recaptcha, captchaRefreshRef, captchaLoading };\r\n case \"tcaptcha\":\r\n return { ...tcaptcha, captchaRefreshRef, captchaLoading };\r\n default:\r\n return { ...normal, captchaRefreshRef, captchaLoading };\r\n }\r\n};\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\r\nimport {\r\n Avatar,\r\n Button,\r\n Divider,\r\n FormControl,\r\n Input,\r\n InputLabel,\r\n Link,\r\n makeStyles,\r\n Paper,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { Link as RouterLink, useHistory } from \"react-router-dom\";\r\nimport API from \"../../middleware/Api\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport { bufferDecode, bufferEncode } from \"../../utils/index\";\r\nimport { Fingerprint, VpnKey } from \"@material-ui/icons\";\r\nimport VpnIcon from \"@material-ui/icons/VpnKeyOutlined\";\r\nimport { useLocation } from \"react-router\";\r\nimport { useCaptcha } from \"../../hooks/useCaptcha\";\r\nimport {\r\n applyThemes,\r\n setSessionStatus,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"110px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: 400,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n marginBottom: 110,\r\n },\r\n paper: {\r\n marginTop: theme.spacing(8),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\r\n 3\r\n )}px`,\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n form: {\r\n width: \"100%\", // Fix IE 11 issue.\r\n marginTop: theme.spacing(1),\r\n },\r\n submit: {\r\n marginTop: theme.spacing(3),\r\n },\r\n link: {\r\n marginTop: \"20px\",\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\",\r\n },\r\n buttonContainer: {\r\n display: \"flex\",\r\n },\r\n authnLink: {\r\n textAlign: \"center\",\r\n marginTop: 16,\r\n },\r\n}));\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nfunction LoginForm() {\r\n const { t } = useTranslation();\r\n\r\n const [email, setEmail] = useState(\"\");\r\n const [pwd, setPwd] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const [useAuthn, setUseAuthn] = useState(false);\r\n const [twoFA, setTwoFA] = useState(false);\r\n const [faCode, setFACode] = useState(\"\");\r\n\r\n const loginCaptcha = useSelector((state) => state.siteConfig.loginCaptcha);\r\n const registerEnabled = useSelector(\r\n (state) => state.siteConfig.registerEnabled\r\n );\r\n const title = useSelector((state) => state.siteConfig.title);\r\n const authn = useSelector((state) => state.siteConfig.authn);\r\n\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const ApplyThemes = useCallback((theme) => dispatch(applyThemes(theme)), [\r\n dispatch,\r\n ]);\r\n const SetSessionStatus = useCallback(\r\n (status) => dispatch(setSessionStatus(status)),\r\n [dispatch]\r\n );\r\n\r\n const history = useHistory();\r\n const location = useLocation();\r\n const {\r\n captchaLoading,\r\n isValidate,\r\n validate,\r\n CaptchaRender,\r\n captchaRefreshRef,\r\n captchaParamsRef,\r\n } = useCaptcha();\r\n const query = useQuery();\r\n\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n setEmail(query.get(\"username\"));\r\n }, [location]);\r\n\r\n const afterLogin = (data) => {\r\n Auth.authenticate(data);\r\n\r\n // 设置用户主题色\r\n if (data[\"preferred_theme\"] !== \"\") {\r\n ApplyThemes(data[\"preferred_theme\"]);\r\n }\r\n\r\n // 设置登录状态\r\n SetSessionStatus(true);\r\n\r\n history.push(\"/home\");\r\n ToggleSnackbar(\"top\", \"right\", t(\"login.success\"), \"success\");\r\n\r\n localStorage.removeItem(\"siteConfigCache\");\r\n };\r\n\r\n const authnLogin = (e) => {\r\n e.preventDefault();\r\n if (!navigator.credentials) {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"login.browserNotSupport\"),\r\n \"warning\"\r\n );\r\n\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n\r\n API.get(\"/user/authn/\" + email)\r\n .then((response) => {\r\n const credentialRequestOptions = response.data;\r\n console.log(credentialRequestOptions);\r\n credentialRequestOptions.publicKey.challenge = bufferDecode(\r\n credentialRequestOptions.publicKey.challenge\r\n );\r\n credentialRequestOptions.publicKey.allowCredentials.forEach(\r\n function (listItem) {\r\n listItem.id = bufferDecode(listItem.id);\r\n }\r\n );\r\n\r\n return navigator.credentials.get({\r\n publicKey: credentialRequestOptions.publicKey,\r\n });\r\n })\r\n .then((assertion) => {\r\n const authData = assertion.response.authenticatorData;\r\n const clientDataJSON = assertion.response.clientDataJSON;\r\n const rawId = assertion.rawId;\r\n const sig = assertion.response.signature;\r\n const userHandle = assertion.response.userHandle;\r\n\r\n return API.post(\r\n \"/user/authn/finish/\" + email,\r\n JSON.stringify({\r\n id: assertion.id,\r\n rawId: bufferEncode(rawId),\r\n type: assertion.type,\r\n response: {\r\n authenticatorData: bufferEncode(authData),\r\n clientDataJSON: bufferEncode(clientDataJSON),\r\n signature: bufferEncode(sig),\r\n userHandle: bufferEncode(userHandle),\r\n },\r\n })\r\n );\r\n })\r\n .then((response) => {\r\n afterLogin(response.data);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\r\n })\r\n .then(() => {\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const login = (e) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n if (!isValidate.current.isValidate && loginCaptcha) {\r\n validate(() => login(e), setLoading);\r\n return;\r\n }\r\n API.post(\"/user/session\", {\r\n userName: email,\r\n Password: pwd,\r\n ...captchaParamsRef.current,\r\n })\r\n .then((response) => {\r\n setLoading(false);\r\n if (response.rawData.code === 203) {\r\n setTwoFA(true);\r\n } else {\r\n afterLogin(response.data);\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\r\n captchaRefreshRef.current();\r\n });\r\n };\r\n\r\n const twoFALogin = (e) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n API.post(\"/user/2fa\", {\r\n code: faCode,\r\n })\r\n .then((response) => {\r\n setLoading(false);\r\n afterLogin(response.data);\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\r\n });\r\n };\r\n\r\n return (\r\n
\r\n {!twoFA && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {t(\"login.title\", { title })}\r\n \r\n {!useAuthn && (\r\n
\r\n \r\n \r\n {t(\"login.email\")}\r\n \r\n \r\n setEmail(e.target.value)\r\n }\r\n autoComplete\r\n value={email}\r\n autoFocus\r\n />\r\n \r\n \r\n \r\n {t(\"login.password\")}\r\n \r\n setPwd(e.target.value)}\r\n type=\"password\"\r\n id=\"password\"\r\n value={pwd}\r\n autoComplete\r\n />\r\n \r\n {loginCaptcha && }\r\n\r\n \r\n {t(\"login.signIn\")}\r\n \r\n \r\n )}\r\n {useAuthn && (\r\n
\r\n \r\n \r\n {t(\"login.email\")}\r\n \r\n \r\n setEmail(e.target.value)\r\n }\r\n autoComplete\r\n value={email}\r\n autoFocus\r\n />\r\n \r\n \r\n {t(\"login.continue\")}\r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n {t(\"login.forgetPassword\")}\r\n \r\n
\r\n
\r\n {registerEnabled && (\r\n \r\n {t(\"login.signUpAccount\")}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n\r\n {authn && (\r\n
\r\n setUseAuthn(!useAuthn)}\r\n >\r\n {!useAuthn && (\r\n <>\r\n \r\n {t(\"login.useFIDO2\")}\r\n \r\n )}\r\n {useAuthn && (\r\n <>\r\n \r\n {t(\"login.usePassword\")}\r\n \r\n )}\r\n \r\n
\r\n )}\r\n \r\n )}\r\n {twoFA && (\r\n \r\n \r\n \r\n \r\n \r\n {t(\"login.2FA\")}\r\n \r\n
\r\n \r\n \r\n {t(\"login.input2FACode\")}\r\n \r\n \r\n setFACode(event.target.value)\r\n }\r\n autoComplete\r\n value={faCode}\r\n autoFocus\r\n />\r\n \r\n \r\n {t(\"login.continue\")}\r\n {\" \"}\r\n {\" \"}\r\n \r\n
\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default LoginForm;\r\n","import Highlighter from \"react-highlight-words\";\r\nimport { trimPrefix } from \"../Uploader/core/utils\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n highlight: {\r\n backgroundColor: theme.palette.warning.light,\r\n },\r\n}));\r\n\r\nexport default function FileName({ name }) {\r\n const classes = useStyles();\r\n const search = useSelector((state) => state.explorer.search);\r\n if (!search) {\r\n return name;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport classNames from \"classnames\";\r\nimport {\r\n ButtonBase,\r\n fade,\r\n Tooltip,\r\n Typography,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport TypeIcon from \"./TypeIcon\";\r\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport { Folder } from \"@material-ui/icons\";\r\nimport FileName from \"./FileName\";\r\n\r\nconst styles = (theme) => ({\r\n container: {\r\n padding: \"7px\",\r\n },\r\n\r\n selected: {\r\n \"&:hover\": {\r\n border: \"1px solid #d0d0d0\",\r\n },\r\n backgroundColor: fade(\r\n theme.palette.primary.main,\r\n theme.palette.type === \"dark\" ? 0.3 : 0.18\r\n ),\r\n },\r\n notSelected: {\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.background.default,\r\n border: \"1px solid #d0d0d0\",\r\n },\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n\r\n button: {\r\n height: \"50px\",\r\n border: \"1px solid \" + theme.palette.divider,\r\n width: \"100%\",\r\n borderRadius: \"6px\",\r\n boxSizing: \"border-box\",\r\n transition:\r\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\",\r\n display: \"flex\",\r\n justifyContent: \"left\",\r\n alignItems: \"initial\",\r\n },\r\n icon: {\r\n margin: \"10px 10px 10px 16px\",\r\n height: \"30px\",\r\n minWidth: \"30px\",\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: \"90%\",\r\n paddingTop: \"3px\",\r\n color: theme.palette.text.secondary,\r\n },\r\n folderNameSelected: {\r\n color:\r\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\r\n fontWeight: \"500\",\r\n },\r\n folderNameNotSelected: {\r\n color: theme.palette.text.secondary,\r\n },\r\n folderName: {\r\n marginTop: \"15px\",\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n marginRight: \"20px\",\r\n },\r\n checkIcon: {\r\n color: theme.palette.primary.main,\r\n },\r\n});\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n selected: state.explorer.selected,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = () => {\r\n return {};\r\n};\r\n\r\nclass SmallIconCompoment extends Component {\r\n state = {};\r\n\r\n shouldComponentUpdate(nextProps, nextState, nextContext) {\r\n const isSelectedCurrent =\r\n this.props.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n const isSelectedNext =\r\n nextProps.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n if (\r\n nextProps.selected !== this.props.selected &&\r\n isSelectedCurrent === isSelectedNext\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const isSelected =\r\n this.props.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n\r\n return (\r\n \r\n \r\n {!isSelected && (\r\n <>\r\n {this.props.isFolder && }\r\n {!this.props.isFolder && (\r\n \r\n )}\r\n \r\n )}\r\n {isSelected && (\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nSmallIconCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n file: PropTypes.object.isRequired,\r\n};\r\n\r\nconst SmallIcon = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(SmallIconCompoment));\r\n\r\nexport default SmallIcon;\r\n","import {\r\n ButtonBase,\r\n Divider,\r\n fade,\r\n Tooltip,\r\n Typography,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\nimport React, { Component } from \"react\";\r\nimport ContentLoader from \"react-content-loader\";\r\nimport { LazyLoadImage } from \"react-lazy-load-image-component\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router\";\r\nimport { baseURL } from \"../../middleware/Api\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport TypeIcon from \"./TypeIcon\";\r\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\r\nimport statusHelper from \"../../utils/page\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport FileName from \"./FileName\";\r\n\r\nconst styles = (theme) => ({\r\n container: {},\r\n\r\n selected: {\r\n \"&:hover\": {\r\n border: \"1px solid #d0d0d0\",\r\n },\r\n backgroundColor: fade(\r\n theme.palette.primary.main,\r\n theme.palette.type === \"dark\" ? 0.3 : 0.18\r\n ),\r\n },\r\n\r\n notSelected: {\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.background.default,\r\n border: \"1px solid #d0d0d0\",\r\n },\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n\r\n button: {\r\n border: \"1px solid \" + theme.palette.divider,\r\n width: \"100%\",\r\n borderRadius: \"6px\",\r\n boxSizing: \"border-box\",\r\n transition:\r\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\",\r\n alignItems: \"initial\",\r\n display: \"initial\",\r\n },\r\n folderNameSelected: {\r\n color:\r\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\r\n fontWeight: \"500\",\r\n },\r\n folderNameNotSelected: {\r\n color: theme.palette.text.secondary,\r\n },\r\n folderName: {\r\n marginTop: \"15px\",\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n marginRight: \"20px\",\r\n },\r\n preview: {\r\n overflow: \"hidden\",\r\n height: \"150px\",\r\n width: \"100%\",\r\n borderRadius: \"6px 6px 0 0\",\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n previewIcon: {\r\n overflow: \"hidden\",\r\n height: \"149px\",\r\n width: \"100%\",\r\n borderRadius: \"5px 5px 0 0\",\r\n backgroundColor: theme.palette.background.paper,\r\n paddingTop: \"50px\",\r\n },\r\n iconBig: {\r\n fontSize: 50,\r\n },\r\n picPreview: {\r\n objectFit: \"cover\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n fileInfo: {\r\n height: \"50px\",\r\n display: \"flex\",\r\n },\r\n icon: {\r\n margin: \"10px 10px 10px 16px\",\r\n height: \"30px\",\r\n minWidth: \"30px\",\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: \"90%\",\r\n paddingTop: \"3px\",\r\n color: theme.palette.text.secondary,\r\n },\r\n hide: {\r\n display: \"none\",\r\n },\r\n loadingAnimation: {\r\n borderRadius: \"6px 6px 0 0\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n },\r\n shareFix: {\r\n marginLeft: \"20px\",\r\n },\r\n checkIcon: {\r\n color: theme.palette.primary.main,\r\n },\r\n noDrag: {\r\n userDrag: \"none\",\r\n },\r\n});\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n path: state.navigator.path,\r\n selected: state.explorer.selected,\r\n shareInfo: state.viewUpdate.shareInfo,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = () => {\r\n return {};\r\n};\r\n\r\nclass FileIconCompoment extends Component {\r\n static defaultProps = {\r\n share: false,\r\n };\r\n\r\n state = {\r\n loading: false,\r\n showPicIcon: false,\r\n };\r\n\r\n shouldComponentUpdate(nextProps, nextState, nextContext) {\r\n const isSelectedCurrent =\r\n this.props.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n const isSelectedNext =\r\n nextProps.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n if (\r\n nextProps.selected !== this.props.selected &&\r\n isSelectedCurrent === isSelectedNext\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const isSelected =\r\n this.props.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n const isSharePage = pathHelper.isSharePage(\r\n this.props.location.pathname\r\n );\r\n const isMobile = statusHelper.isMobile();\r\n\r\n return (\r\n
\r\n \r\n {this.props.file.pic !== \"\" &&\r\n !this.state.showPicIcon &&\r\n this.props.file.pic !== \" \" &&\r\n this.props.file.pic !== \"null,null\" && (\r\n
\r\n \r\n this.setState({ loading: false })\r\n }\r\n beforeLoad={() =>\r\n this.setState({ loading: true })\r\n }\r\n onError={() =>\r\n this.setState({ showPicIcon: true })\r\n }\r\n />\r\n \r\n \r\n \r\n
\r\n )}\r\n {(this.props.file.pic === \"\" ||\r\n this.state.showPicIcon ||\r\n this.props.file.pic === \" \" ||\r\n this.props.file.pic === \"null,null\") && (\r\n
\r\n \r\n
\r\n )}\r\n {(this.props.file.pic === \"\" ||\r\n this.state.showPicIcon ||\r\n this.props.file.pic === \" \" ||\r\n this.props.file.pic === \"null,null\") && }\r\n
\r\n {!this.props.share && (\r\n \r\n {!isSelected && (\r\n \r\n )}\r\n {isSelected && (\r\n \r\n \r\n \r\n )}\r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nFileIconCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n file: PropTypes.object.isRequired,\r\n};\r\n\r\nconst FileIcon = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(FileIconCompoment)));\r\n\r\nexport default FileIcon;\r\n","import React from \"react\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport classNames from \"classnames\";\r\nimport {\r\n ButtonBase,\r\n fade,\r\n makeStyles,\r\n Tooltip,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { useSelector } from \"react-redux\";\r\nimport statusHelper from \"../../utils/page\";\r\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n padding: \"7px\",\r\n },\r\n\r\n selected: {\r\n \"&:hover\": {\r\n border: \"1px solid #d0d0d0\",\r\n },\r\n backgroundColor: fade(\r\n theme.palette.primary.main,\r\n theme.palette.type === \"dark\" ? 0.3 : 0.18\r\n ),\r\n },\r\n\r\n notSelected: {\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.background.default,\r\n border: \"1px solid #d0d0d0\",\r\n },\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n\r\n button: {\r\n height: \"50px\",\r\n border: \"1px solid \" + theme.palette.divider,\r\n width: \"100%\",\r\n borderRadius: \"6px\",\r\n boxSizing: \"border-box\",\r\n transition:\r\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\",\r\n display: \"flex\",\r\n justifyContent: \"left\",\r\n alignItems: \"initial\",\r\n },\r\n icon: {\r\n margin: \"10px 10px 10px 16px\",\r\n height: \"30px\",\r\n minWidth: \"30px\",\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: \"90%\",\r\n paddingTop: \"3px\",\r\n color: theme.palette.text.secondary,\r\n },\r\n folderNameSelected: {\r\n color:\r\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\r\n fontWeight: \"500\",\r\n },\r\n folderNameNotSelected: {\r\n color: theme.palette.text.secondary,\r\n },\r\n folderName: {\r\n marginTop: \"15px\",\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n marginRight: \"20px\",\r\n },\r\n active: {\r\n boxShadow: \"0 0 0 2px \" + theme.palette.primary.light,\r\n },\r\n checkIcon: {\r\n color: theme.palette.primary.main,\r\n },\r\n}));\r\n\r\nexport default function Folder({ folder, isActive, onIconClick }) {\r\n const selected = useSelector((state) => state.explorer.selected);\r\n const classes = useStyles();\r\n const isMobile = statusHelper.isMobile();\r\n const isSelected =\r\n selected.findIndex((value) => {\r\n return value === folder;\r\n }) !== -1;\r\n\r\n return (\r\n \r\n \r\n {!isSelected && }\r\n {isSelected && (\r\n \r\n )}\r\n
\r\n \r\n \r\n {folder.name}\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport SmallIcon from \"../SmallIcon\";\r\nimport FileIcon from \"../FileIcon\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport Folder from \"../Folder\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n dragging: {\r\n width: \"200px\",\r\n },\r\n cardDragged: {\r\n position: \"absolute\",\r\n \"transform-origin\": \"bottom left\",\r\n },\r\n}));\r\n\r\nconst diliverIcon = (object, viewMethod, classes) => {\r\n if (object.type === \"dir\") {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n if (object.type === \"file\" && viewMethod === \"icon\") {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n if (\r\n (object.type === \"file\" && viewMethod === \"smallIcon\") ||\r\n viewMethod === \"list\"\r\n ) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n};\r\n\r\nconst Preview = (props) => {\r\n const selected = useSelector((state) => state.explorer.selected);\r\n const viewMethod = useSelector(\r\n (state) => state.viewUpdate.explorerViewMethod\r\n );\r\n const classes = useStyles();\r\n return (\r\n <>\r\n {selected.length === 0 &&\r\n diliverIcon(props.object, viewMethod, classes)}\r\n {selected.length > 0 && (\r\n <>\r\n {selected.slice(0, 3).map((card, i) => (\r\n \r\n {diliverIcon(card, viewMethod, classes)}\r\n
\r\n ))}\r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default Preview;\r\n","import React, { useMemo } from \"react\";\r\nimport { useDragLayer } from \"react-dnd\";\r\nimport Preview from \"./Preview\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst layerStyles = {\r\n position: \"fixed\",\r\n pointerEvents: \"none\",\r\n zIndex: 100,\r\n left: 0,\r\n top: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n};\r\n\r\nfunction getItemStyles(\r\n initialOffset,\r\n currentOffset,\r\n pointerOffset,\r\n viewMethod\r\n) {\r\n if (!initialOffset || !currentOffset) {\r\n return {\r\n display: \"none\",\r\n };\r\n }\r\n let { x, y } = currentOffset;\r\n if (viewMethod === \"list\") {\r\n x += pointerOffset.x - initialOffset.x;\r\n y += pointerOffset.y - initialOffset.y;\r\n }\r\n\r\n const transform = `translate(${x}px, ${y}px)`;\r\n return {\r\n opacity: 0.5,\r\n transform,\r\n WebkitTransform: transform,\r\n };\r\n}\r\nconst CustomDragLayer = (props) => {\r\n const {\r\n itemType,\r\n isDragging,\r\n item,\r\n initialOffset,\r\n currentOffset,\r\n pointerOffset,\r\n } = useDragLayer((monitor) => ({\r\n item: monitor.getItem(),\r\n itemType: monitor.getItemType(),\r\n initialOffset: monitor.getInitialSourceClientOffset(),\r\n currentOffset: monitor.getSourceClientOffset(),\r\n pointerOffset: monitor.getInitialClientOffset(),\r\n isDragging: monitor.isDragging(),\r\n }));\r\n const viewMethod = useSelector(\r\n (state) => state.viewUpdate.explorerViewMethod\r\n );\r\n const image = useMemo(() => {\r\n switch (itemType) {\r\n case \"object\":\r\n return ;\r\n default:\r\n return null;\r\n }\r\n }, [itemType, item]);\r\n if (!isDragging) {\r\n return null;\r\n }\r\n return (\r\n
\r\n \r\n {image}\r\n
\r\n \r\n );\r\n};\r\nexport default CustomDragLayer;\r\n","import {\r\n Divider,\r\n ListItemIcon,\r\n MenuItem,\r\n Typography,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport Menu from \"@material-ui/core/Menu\";\r\nimport { Archive, InfoOutlined, Unarchive } from \"@material-ui/icons\";\r\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\r\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\r\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\r\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\r\nimport OpenFolderIcon from \"@material-ui/icons/FolderOpen\";\r\nimport MoveIcon from \"@material-ui/icons/Input\";\r\nimport LinkIcon from \"@material-ui/icons/InsertLink\";\r\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport { FolderUpload, MagnetOn, FilePlus } from \"mdi-material-ui\";\r\nimport PropTypes from \"prop-types\";\r\nimport React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { isCompressFile, isPreviewable, isTorrent } from \"../../config\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport {\r\n batchGetSource,\r\n openPreview,\r\n setSelectedTarget,\r\n startBatchDownload,\r\n startDownload,\r\n toggleObjectInfoSidebar,\r\n} from \"../../redux/explorer/action\";\r\nimport {\r\n changeContextMenu,\r\n navigateTo,\r\n openCompressDialog,\r\n openCopyDialog,\r\n openCreateFileDialog,\r\n openCreateFolderDialog,\r\n openDecompressDialog,\r\n openLoadingDialog,\r\n openMoveDialog,\r\n openMusicDialog,\r\n openRemoteDownloadDialog,\r\n openRemoveDialog,\r\n openRenameDialog,\r\n openShareDialog,\r\n openTorrentDownloadDialog,\r\n refreshFileList,\r\n setNavigatorLoadingStatus,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { pathJoin } from \"../Uploader/core/utils\";\r\nimport {\r\n openFileSelector,\r\n openFolderSelector,\r\n} from \"../../redux/viewUpdate/action\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst styles = () => ({\r\n propover: {},\r\n divider: {\r\n marginTop: 4,\r\n marginBottom: 4,\r\n },\r\n});\r\n\r\nconst StyledListItemIcon = withStyles({\r\n root: {\r\n minWidth: 38,\r\n },\r\n})(ListItemIcon);\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n menuType: state.viewUpdate.contextType,\r\n menuOpen: state.viewUpdate.contextOpen,\r\n isMultiple: state.explorer.selectProps.isMultiple,\r\n withFolder: state.explorer.selectProps.withFolder,\r\n withFile: state.explorer.selectProps.withFile,\r\n withSourceEnabled: state.explorer.selectProps.withSourceEnabled,\r\n path: state.navigator.path,\r\n selected: state.explorer.selected,\r\n search: state.explorer.search,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n changeContextMenu: (type, open) => {\r\n dispatch(changeContextMenu(type, open));\r\n },\r\n setNavigatorLoadingStatus: (status) => {\r\n dispatch(setNavigatorLoadingStatus(status));\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n navigateTo: (path) => {\r\n dispatch(navigateTo(path));\r\n },\r\n openCreateFolderDialog: () => {\r\n dispatch(openCreateFolderDialog());\r\n },\r\n openCreateFileDialog: () => {\r\n dispatch(openCreateFileDialog());\r\n },\r\n openRenameDialog: () => {\r\n dispatch(openRenameDialog());\r\n },\r\n openMoveDialog: () => {\r\n dispatch(openMoveDialog());\r\n },\r\n openRemoveDialog: () => {\r\n dispatch(openRemoveDialog());\r\n },\r\n openShareDialog: () => {\r\n dispatch(openShareDialog());\r\n },\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n openMusicDialog: () => {\r\n dispatch(openMusicDialog());\r\n },\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n openRemoteDownloadDialog: () => {\r\n dispatch(openRemoteDownloadDialog());\r\n },\r\n openTorrentDownloadDialog: () => {\r\n dispatch(openTorrentDownloadDialog());\r\n },\r\n openCopyDialog: () => {\r\n dispatch(openCopyDialog());\r\n },\r\n openLoadingDialog: (text) => {\r\n dispatch(openLoadingDialog(text));\r\n },\r\n openDecompressDialog: () => {\r\n dispatch(openDecompressDialog());\r\n },\r\n openCompressDialog: () => {\r\n dispatch(openCompressDialog());\r\n },\r\n refreshFileList: () => {\r\n dispatch(refreshFileList());\r\n },\r\n openPreview: (share) => {\r\n dispatch(openPreview(share));\r\n },\r\n toggleObjectInfoSidebar: (open) => {\r\n dispatch(toggleObjectInfoSidebar(open));\r\n },\r\n startBatchDownload: (share) => {\r\n dispatch(startBatchDownload(share));\r\n },\r\n openFileSelector: () => {\r\n dispatch(openFileSelector());\r\n },\r\n openFolderSelector: () => {\r\n dispatch(openFolderSelector());\r\n },\r\n startDownload: (share, file) => {\r\n dispatch(startDownload(share, file));\r\n },\r\n batchGetSource: () => {\r\n dispatch(batchGetSource());\r\n },\r\n };\r\n};\r\n\r\nclass ContextMenuCompoment extends Component {\r\n X = 0;\r\n Y = 0;\r\n\r\n state = {};\r\n\r\n componentDidMount = () => {\r\n window.document.addEventListener(\"mousemove\", this.setPoint);\r\n };\r\n\r\n setPoint = (e) => {\r\n this.Y = e.clientY;\r\n this.X = e.clientX;\r\n };\r\n\r\n openArchiveDownload = () => {\r\n this.props.startBatchDownload(this.props.share);\r\n };\r\n\r\n openDownload = () => {\r\n this.props.startDownload(this.props.share, this.props.selected[0]);\r\n };\r\n\r\n enterFolder = () => {\r\n this.props.navigateTo(\r\n pathJoin([this.props.path, this.props.selected[0].name])\r\n );\r\n };\r\n\r\n // 暂时只对空白处右键菜单使用这个函数,疑似有bug会导致的一个菜单被默认选中。\r\n // 相关issue: https://github.com/mui-org/material-ui/issues/23747\r\n renderMenuItems = (items) => {\r\n const res = [];\r\n let key = 0;\r\n\r\n [\"top\", \"center\", \"bottom\"].forEach((position) => {\r\n let visibleCount = 0;\r\n items[position].forEach((item) => {\r\n if (item.condition) {\r\n res.push(\r\n \r\n {item.icon}\r\n \r\n {item.text}\r\n \r\n \r\n );\r\n key++;\r\n visibleCount++;\r\n }\r\n });\r\n if (visibleCount > 0 && position != \"bottom\") {\r\n res.push(\r\n \r\n );\r\n key++;\r\n }\r\n });\r\n\r\n return res;\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const user = Auth.GetUser();\r\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\r\n const emptyMenuList = {\r\n top: [\r\n {\r\n condition: true,\r\n onClick: () => {\r\n this.props.refreshFileList();\r\n this.props.changeContextMenu(\r\n this.props.menuType,\r\n false\r\n );\r\n },\r\n icon: ,\r\n text: \"刷新\",\r\n },\r\n ],\r\n center: [\r\n {\r\n condition: true,\r\n onClick: () => this.props.openFileSelector(),\r\n icon: ,\r\n text: \"上传文件\",\r\n },\r\n {\r\n condition: true,\r\n onClick: () => this.props.openFolderSelector(),\r\n icon: ,\r\n text: \"上传目录\",\r\n },\r\n {\r\n condition: user.group.allowRemoteDownload,\r\n onClick: () => this.props.openRemoteDownloadDialog(),\r\n icon: ,\r\n text: \"离线下载\",\r\n },\r\n ],\r\n bottom: [\r\n {\r\n condition: true,\r\n onClick: () => this.props.openCreateFolderDialog(),\r\n icon: ,\r\n text: \"创建文件夹\",\r\n },\r\n {\r\n condition: true,\r\n onClick: () => this.props.openCreateFileDialog(),\r\n icon: ,\r\n text: \"创建文件\",\r\n },\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n \r\n this.props.changeContextMenu(this.props.menuType, false)\r\n }\r\n anchorReference=\"anchorPosition\"\r\n anchorPosition={{ top: this.Y, left: this.X }}\r\n anchorOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n >\r\n {this.props.menuType === \"empty\" && (\r\n
\r\n {\r\n this.props.refreshFileList();\r\n this.props.changeContextMenu(\r\n this.props.menuType,\r\n false\r\n );\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.refresh\")}\r\n \r\n \r\n \r\n this.props.openFileSelector()}\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.uploadFiles\")}\r\n \r\n \r\n this.props.openFolderSelector()}\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.uploadFolder\")}\r\n \r\n \r\n {user.group.allowRemoteDownload && (\r\n \r\n this.props.openRemoteDownloadDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.newRemoteDownloads\")}\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n this.props.openCreateFolderDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.newFolder\")}\r\n \r\n \r\n \r\n this.props.openCreateFileDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.newFile\")}\r\n \r\n \r\n
\r\n )}\r\n {this.props.menuType !== \"empty\" && (\r\n
\r\n {!this.props.isMultiple && this.props.withFolder && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {t(\"fileManager.enter\")}\r\n \r\n \r\n {isHomePage && (\r\n \r\n )}\r\n
\r\n )}\r\n {!this.props.isMultiple &&\r\n this.props.withFile &&\r\n (!this.props.share ||\r\n this.props.share.preview) &&\r\n isPreviewable(this.props.selected[0].name) && (\r\n
\r\n \r\n this.props.openPreview()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.open\")}\r\n \r\n \r\n
\r\n )}\r\n\r\n {!this.props.isMultiple && this.props.withFile && (\r\n
\r\n \r\n this.openDownload(this.props.share)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.download\")}\r\n \r\n \r\n {isHomePage && (\r\n \r\n )}\r\n
\r\n )}\r\n\r\n {(this.props.isMultiple ||\r\n this.props.withFolder) && (\r\n this.openArchiveDownload()}\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.batchDownload\")}\r\n \r\n \r\n )}\r\n\r\n {isHomePage &&\r\n user.group.sourceBatch > 0 &&\r\n this.props.withSourceEnabled && (\r\n \r\n this.props.batchGetSource()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {this.props.isMultiple ||\r\n (this.props.withFolder &&\r\n !this.props.withFile)\r\n ? t(\r\n \"fileManager.getSourceLinkInBatch\"\r\n )\r\n : t(\r\n \"fileManager.getSourceLink\"\r\n )}\r\n \r\n \r\n )}\r\n\r\n {!this.props.isMultiple &&\r\n isHomePage &&\r\n user.group.allowRemoteDownload &&\r\n this.props.withFile &&\r\n isTorrent(this.props.selected[0].name) && (\r\n \r\n this.props.openTorrentDownloadDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\r\n \"fileManager.createRemoteDownloadForTorrent\"\r\n )}\r\n \r\n \r\n )}\r\n {!this.props.isMultiple &&\r\n isHomePage &&\r\n user.group.compress &&\r\n this.props.withFile &&\r\n isCompressFile(this.props.selected[0].name) && (\r\n \r\n this.props.openDecompressDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.decompress\")}\r\n \r\n \r\n )}\r\n\r\n {isHomePage && user.group.compress && (\r\n \r\n this.props.openCompressDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.compress\")}\r\n \r\n \r\n )}\r\n\r\n {!this.props.isMultiple && isHomePage && (\r\n this.props.openShareDialog()}\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.createShareLink\")}\r\n \r\n \r\n )}\r\n\r\n {!this.props.isMultiple && isHomePage && (\r\n \r\n this.props.toggleObjectInfoSidebar(true)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.viewDetails\")}\r\n \r\n \r\n )}\r\n\r\n {!this.props.isMultiple && isHomePage && (\r\n \r\n )}\r\n\r\n {!this.props.isMultiple && isHomePage && (\r\n
\r\n \r\n this.props.openRenameDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.rename\")}\r\n \r\n \r\n {!this.props.search && (\r\n \r\n this.props.openCopyDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.copy\")}\r\n \r\n \r\n )}\r\n
\r\n )}\r\n {isHomePage && (\r\n
\r\n {!this.props.search && (\r\n \r\n this.props.openMoveDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.move\")}\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n this.props.openRemoveDialog()\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"fileManager.delete\")}\r\n \r\n \r\n
\r\n )}\r\n
\r\n )}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nContextMenuCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n menuType: PropTypes.string.isRequired,\r\n};\r\n\r\nconst ContextMenu = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(ContextMenuCompoment))));\r\n\r\nexport default ContextMenu;\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport classNames from \"classnames\";\r\nimport { sizeToString } from \"../../utils/index\";\r\nimport {\r\n fade,\r\n TableCell,\r\n TableRow,\r\n Typography,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport TypeIcon from \"./TypeIcon\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport statusHelper from \"../../utils/page\";\r\nimport { withRouter } from \"react-router\";\r\nimport KeyboardReturnIcon from \"@material-ui/icons/KeyboardReturn\";\r\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport { formatLocalTime } from \"../../utils/datetime\";\r\nimport FileName from \"./FileName\";\r\n\r\nconst styles = (theme) => ({\r\n selected: {\r\n \"&:hover\": {},\r\n backgroundColor: fade(theme.palette.primary.main, 0.18),\r\n },\r\n\r\n selectedShared: {\r\n \"&:hover\": {},\r\n backgroundColor: fade(theme.palette.primary.main, 0.18),\r\n },\r\n\r\n notSelected: {\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n icon: {\r\n verticalAlign: \"middle\",\r\n marginRight: \"20px\",\r\n color: theme.palette.text.secondary,\r\n },\r\n tableIcon: {\r\n marginRight: \"20px\",\r\n verticalAlign: \"middle\",\r\n },\r\n folderNameSelected: {\r\n color:\r\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\r\n fontWeight: \"500\",\r\n userSelect: \"none\",\r\n },\r\n folderNameNotSelected: {\r\n color: theme.palette.text.secondary,\r\n userSelect: \"none\",\r\n },\r\n folderName: {\r\n marginRight: \"20px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n hideAuto: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n tableRow: {\r\n padding: \"10px 16px\",\r\n },\r\n checkIcon: {\r\n color: theme.palette.primary.main,\r\n },\r\n active: {\r\n backgroundColor: fade(theme.palette.primary.main, 0.1),\r\n },\r\n});\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n selected: state.explorer.selected,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = () => {\r\n return {};\r\n};\r\n\r\nclass TableRowCompoment extends Component {\r\n state = {};\r\n\r\n shouldComponentUpdate(nextProps, nextState, nextContext) {\r\n const isSelectedCurrent =\r\n this.props.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n const isSelectedNext =\r\n nextProps.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n if (\r\n nextProps.selected !== this.props.selected &&\r\n isSelectedCurrent === isSelectedNext\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const isShare = pathHelper.isSharePage(this.props.location.pathname);\r\n\r\n let icon;\r\n if (this.props.file.type === \"dir\") {\r\n icon = ;\r\n } else if (this.props.file.type === \"up\") {\r\n icon = ;\r\n } else {\r\n icon = (\r\n \r\n );\r\n }\r\n const isSelected =\r\n this.props.selected.findIndex((value) => {\r\n return value === this.props.file;\r\n }) !== -1;\r\n const isMobile = statusHelper.isMobile();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {!isSelected && icon}\r\n {isSelected && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\" \"}\r\n {this.props.file.type !== \"dir\" &&\r\n this.props.file.type !== \"up\" &&\r\n sizeToString(this.props.file.size)}\r\n \r\n \r\n \r\n \r\n {\" \"}\r\n {formatLocalTime(this.props.file.date)}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTableRowCompoment.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n file: PropTypes.object.isRequired,\r\n};\r\n\r\nconst TableItem = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(TableRowCompoment)));\r\n\r\nexport default TableItem;\r\n","import React from \"react\";\r\nimport { useDrop } from \"react-dnd\";\r\nimport Folder from \"../Folder\";\r\nimport classNames from \"classnames\";\r\nimport TableItem from \"../TableRow\";\r\nexport default function FolderDropWarpper({\r\n isListView,\r\n folder,\r\n onIconClick,\r\n contextMenu,\r\n handleClick,\r\n handleDoubleClick,\r\n className,\r\n pref,\r\n}) {\r\n const [{ canDrop, isOver }, drop] = useDrop({\r\n accept: \"object\",\r\n drop: () => ({ folder }),\r\n collect: (monitor) => ({\r\n isOver: monitor.isOver(),\r\n canDrop: monitor.canDrop(),\r\n }),\r\n });\r\n const isActive = canDrop && isOver;\r\n if (!isListView) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return (\r\n \r\n );\r\n}\r\n","import { useRef } from \"react\";\r\nimport { throttle } from \"lodash\";\r\n\r\nconst useDragScrolling = () => {\r\n const isScrolling = useRef(false);\r\n const target = document.querySelector(\"#explorer-container\");\r\n\r\n const goDown = () => {\r\n target.scrollTop += 10;\r\n\r\n const { offsetHeight, scrollTop, scrollHeight } = target;\r\n const isScrollEnd = offsetHeight + scrollTop >= scrollHeight;\r\n\r\n if (isScrolling.current && !isScrollEnd) {\r\n window.requestAnimationFrame(goDown);\r\n }\r\n };\r\n\r\n const goUp = () => {\r\n target.scrollTop -= 10;\r\n\r\n if (isScrolling.current && target.scrollTop > 0) {\r\n window.requestAnimationFrame(goUp);\r\n }\r\n };\r\n\r\n const onDragOver = (event) => {\r\n const isMouseOnTop = event.clientY < 100;\r\n const isMouseOnDown = window.innerHeight - event.clientY < 100;\r\n\r\n if (!isScrolling.current && (isMouseOnTop || isMouseOnDown)) {\r\n isScrolling.current = true;\r\n\r\n if (isMouseOnTop) {\r\n window.requestAnimationFrame(goUp);\r\n }\r\n\r\n if (isMouseOnDown) {\r\n window.requestAnimationFrame(goDown);\r\n }\r\n } else if (!isMouseOnTop && !isMouseOnDown) {\r\n isScrolling.current = false;\r\n }\r\n };\r\n\r\n const throttleOnDragOver = throttle(onDragOver, 300);\r\n\r\n const addEventListenerForWindow = () => {\r\n window.addEventListener(\"dragover\", throttleOnDragOver, false);\r\n };\r\n\r\n const removeEventListenerForWindow = () => {\r\n window.removeEventListener(\"dragover\", throttleOnDragOver, false);\r\n isScrolling.current = false;\r\n };\r\n\r\n return {\r\n addEventListenerForWindow,\r\n removeEventListenerForWindow,\r\n };\r\n};\r\n\r\nexport default useDragScrolling;\r\n","import React, { useCallback, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport statusHelper from \"../../utils/page\";\r\nimport FileIcon from \"./FileIcon\";\r\nimport SmallIcon from \"./SmallIcon\";\r\nimport TableItem from \"./TableRow\";\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport { useDrag } from \"react-dnd\";\r\nimport { getEmptyImage } from \"react-dnd-html5-backend\";\r\nimport DropWarpper from \"./DnD/DropWarpper\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { pathBack } from \"../../utils\";\r\nimport {\r\n changeContextMenu,\r\n dragAndDrop,\r\n navigateTo,\r\n openLoadingDialog,\r\n openPreview,\r\n selectFile,\r\n setSelectedTarget,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport useDragScrolling from \"./DnD/Scrolling\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n container: {\r\n padding: \"7px\",\r\n },\r\n fixFlex: {\r\n minWidth: 0,\r\n },\r\n dragging: {\r\n opacity: 0.4,\r\n },\r\n}));\r\n\r\nexport default function ObjectIcon(props) {\r\n const path = useSelector((state) => state.navigator.path);\r\n const shareInfo = useSelector((state) => state.viewUpdate.shareInfo);\r\n const selected = useSelector((state) => state.explorer.selected);\r\n const viewMethod = useSelector(\r\n (state) => state.viewUpdate.explorerViewMethod\r\n );\r\n const navigatorPath = useSelector((state) => state.navigator.path);\r\n const location = useLocation();\r\n\r\n const dispatch = useDispatch();\r\n const ContextMenu = useCallback(\r\n (type, open) => dispatch(changeContextMenu(type, open)),\r\n [dispatch]\r\n );\r\n const SetSelectedTarget = useCallback(\r\n (targets) => dispatch(setSelectedTarget(targets)),\r\n [dispatch]\r\n );\r\n\r\n const NavitateTo = useCallback((targets) => dispatch(navigateTo(targets)), [\r\n dispatch,\r\n ]);\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const DragAndDrop = useCallback(\r\n (source, target) => dispatch(dragAndDrop(source, target)),\r\n [dispatch]\r\n );\r\n const OpenLoadingDialog = useCallback(\r\n (text) => dispatch(openLoadingDialog(text)),\r\n [dispatch]\r\n );\r\n const OpenPreview = useCallback((share) => dispatch(openPreview(share)), [\r\n dispatch,\r\n ]);\r\n const StartDownload = useCallback(\r\n (share, file) => dispatch(StartDownload(share, file)),\r\n [dispatch]\r\n );\r\n\r\n const classes = useStyles();\r\n\r\n const contextMenu = (e) => {\r\n if (props.file.type === \"up\") {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (\r\n selected.findIndex((value) => {\r\n return value === props.file;\r\n }) === -1\r\n ) {\r\n SetSelectedTarget([props.file]);\r\n }\r\n ContextMenu(\"file\", true);\r\n };\r\n\r\n const SelectFile = (e) => {\r\n dispatch(selectFile(props.file, e, props.index));\r\n };\r\n const enterFolder = () => {\r\n NavitateTo(\r\n path === \"/\" ? path + props.file.name : path + \"/\" + props.file.name\r\n );\r\n };\r\n const handleClick = (e) => {\r\n if (props.file.type === \"up\") {\r\n NavitateTo(pathBack(navigatorPath));\r\n return;\r\n }\r\n\r\n SelectFile(e);\r\n if (\r\n props.file.type === \"dir\" &&\r\n !e.ctrlKey &&\r\n !e.metaKey &&\r\n !e.shiftKey\r\n ) {\r\n enterFolder();\r\n }\r\n };\r\n\r\n const handleDoubleClick = () => {\r\n if (props.file.type === \"up\") {\r\n return;\r\n }\r\n if (props.file.type === \"dir\") {\r\n enterFolder();\r\n return;\r\n }\r\n\r\n OpenPreview(shareInfo);\r\n };\r\n\r\n const handleIconClick = (e) => {\r\n e.stopPropagation();\r\n if (!e.shiftKey) {\r\n e.ctrlKey = true;\r\n }\r\n SelectFile(e);\r\n return false;\r\n };\r\n\r\n const {\r\n addEventListenerForWindow,\r\n removeEventListenerForWindow,\r\n } = useDragScrolling();\r\n\r\n const [{ isDragging }, drag, preview] = useDrag({\r\n item: {\r\n object: props.file,\r\n type: \"object\",\r\n selected: [...selected],\r\n viewMethod: viewMethod,\r\n },\r\n begin: () => {\r\n addEventListenerForWindow();\r\n },\r\n end: (item, monitor) => {\r\n removeEventListenerForWindow();\r\n const dropResult = monitor.getDropResult();\r\n if (item && dropResult) {\r\n if (dropResult.folder) {\r\n if (\r\n item.object.id !== dropResult.folder.id ||\r\n item.object.type !== dropResult.folder.type\r\n ) {\r\n DragAndDrop(item.object, dropResult.folder);\r\n }\r\n }\r\n }\r\n },\r\n canDrag: () => {\r\n return (\r\n !statusHelper.isMobile() &&\r\n statusHelper.isHomePage(location.pathname)\r\n );\r\n },\r\n collect: (monitor) => ({\r\n isDragging: monitor.isDragging(),\r\n }),\r\n });\r\n\r\n useEffect(() => {\r\n preview(getEmptyImage(), { captureDraggingState: true });\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (viewMethod === \"list\") {\r\n return (\r\n <>\r\n {props.file.type === \"dir\" && (\r\n \r\n )}\r\n {props.file.type !== \"dir\" && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {props.file.type === \"dir\" && viewMethod !== \"list\" && (\r\n \r\n )}\r\n {props.file.type === \"file\" && viewMethod === \"icon\" && (\r\n \r\n )}\r\n {props.file.type === \"file\" && viewMethod === \"smallIcon\" && (\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","import {\r\n CircularProgress,\r\n Grid,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\r\nimport classNames from \"classnames\";\r\nimport React, { useCallback, useEffect, useMemo } from \"react\";\r\nimport { configure, GlobalHotKeys } from \"react-hotkeys\";\r\nimport explorer, {\r\n changeContextMenu,\r\n openRemoveDialog,\r\n setSelectedTarget,\r\n} from \"../../redux/explorer\";\r\nimport { isMac } from \"../../utils\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport ContextMenu from \"./ContextMenu\";\r\nimport ImgPreivew from \"./ImgPreview\";\r\nimport ObjectIcon from \"./ObjectIcon\";\r\nimport Nothing from \"../Placeholder/Nothing\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useLocation } from \"react-router\";\r\nimport { usePagination } from \"../../hooks/pagination\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n paper: {\r\n padding: theme.spacing(2),\r\n textAlign: \"center\",\r\n color: theme.palette.text.secondary,\r\n margin: \"10px\",\r\n },\r\n root: {\r\n padding: \"10px\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n height: \"calc(100vh - 113px)\",\r\n },\r\n },\r\n rootTable: {\r\n padding: \"0px\",\r\n backgroundColor: theme.palette.background.paper.white,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n height: \"calc(100vh - 113px)\",\r\n },\r\n },\r\n typeHeader: {\r\n margin: \"10px 25px\",\r\n color: \"#6b6b6b\",\r\n fontWeight: \"500\",\r\n },\r\n loading: {\r\n justifyContent: \"center\",\r\n display: \"flex\",\r\n marginTop: \"40px\",\r\n },\r\n errorBox: {\r\n padding: theme.spacing(4),\r\n },\r\n errorMsg: {\r\n marginTop: \"10px\",\r\n },\r\n hideAuto: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n flexFix: {\r\n minWidth: 0,\r\n },\r\n upButton: {\r\n marginLeft: \"20px\",\r\n marginTop: \"10px\",\r\n marginBottom: \"10px\",\r\n },\r\n clickAway: {\r\n height: \"100%\",\r\n width: \"100%\",\r\n },\r\n rootShare: {\r\n height: \"100%\",\r\n minHeight: 500,\r\n },\r\n visuallyHidden: {\r\n border: 0,\r\n clip: \"rect(0 0 0 0)\",\r\n height: 1,\r\n margin: -1,\r\n overflow: \"hidden\",\r\n padding: 0,\r\n position: \"absolute\",\r\n top: 20,\r\n width: 1,\r\n },\r\n gridContainer: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n gridTemplateColumns:\r\n \"repeat(auto-fill,minmax(180px,1fr))!important\",\r\n },\r\n [theme.breakpoints.up(\"md\")]: {\r\n gridTemplateColumns:\r\n \"repeat(auto-fill,minmax(220px,1fr))!important\",\r\n },\r\n display: \"grid!important\",\r\n },\r\n gridItem: {\r\n flex: \"1 1 220px!important\",\r\n },\r\n}));\r\n\r\nconst keyMap = {\r\n DELETE_FILE: \"del\",\r\n SELECT_ALL_SHOWED: `${isMac() ? \"command\" : \"ctrl\"}+a`,\r\n SELECT_ALL: `${isMac() ? \"command\" : \"ctrl\"}+shift+a`,\r\n DESELECT_ALL: \"esc\",\r\n};\r\n\r\nexport default function Explorer({ share }) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"fileManager\" });\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const selected = useSelector((state) => state.explorer.selected);\r\n const search = useSelector((state) => state.explorer.search);\r\n const loading = useSelector((state) => state.viewUpdate.navigatorLoading);\r\n const path = useSelector((state) => state.navigator.path);\r\n const sortMethod = useSelector((state) => state.viewUpdate.sortMethod);\r\n const navigatorErrorMsg = useSelector(\r\n (state) => state.viewUpdate.navigatorErrorMsg\r\n );\r\n const navigatorError = useSelector(\r\n (state) => state.viewUpdate.navigatorError\r\n );\r\n const viewMethod = useSelector(\r\n (state) => state.viewUpdate.explorerViewMethod\r\n );\r\n\r\n const OpenRemoveDialog = useCallback(() => dispatch(openRemoveDialog()), [\r\n dispatch,\r\n ]);\r\n const SetSelectedTarget = useCallback(\r\n (targets) => dispatch(setSelectedTarget(targets)),\r\n [dispatch]\r\n );\r\n const ChangeContextMenu = useCallback(\r\n (type, open) => dispatch(changeContextMenu(type, open)),\r\n [dispatch]\r\n );\r\n const ChangeSortMethod = useCallback(\r\n (method) => dispatch(explorer.actions.changeSortMethod(method)),\r\n [dispatch]\r\n );\r\n const SelectAll = useCallback(\r\n () => dispatch(explorer.actions.selectAll()),\r\n [dispatch]\r\n );\r\n\r\n const { dirList, fileList, startIndex } = usePagination();\r\n\r\n const handlers = {\r\n DELETE_FILE: () => {\r\n if (selected.length > 0 && !share) {\r\n OpenRemoveDialog();\r\n }\r\n },\r\n SELECT_ALL_SHOWED: (e) => {\r\n e.preventDefault();\r\n if (selected.length >= dirList.length + fileList.length) {\r\n SetSelectedTarget([]);\r\n } else {\r\n SetSelectedTarget([...dirList, ...fileList]);\r\n }\r\n },\r\n SELECT_ALL: (e) => {\r\n e.preventDefault();\r\n SelectAll();\r\n },\r\n DESELECT_ALL: (e) => {\r\n e.preventDefault();\r\n SetSelectedTarget([]);\r\n },\r\n };\r\n\r\n useEffect(\r\n () =>\r\n configure({\r\n ignoreTags: [\"input\", \"select\", \"textarea\"],\r\n }),\r\n []\r\n );\r\n\r\n const contextMenu = (e) => {\r\n e.preventDefault();\r\n if (!search && !pathHelper.isSharePage(location.pathname)) {\r\n if (!loading) {\r\n ChangeContextMenu(\"empty\", true);\r\n }\r\n }\r\n };\r\n\r\n const ClickAway = (e) => {\r\n const element = e.target;\r\n if (element.dataset.clickaway) {\r\n SetSelectedTarget([]);\r\n }\r\n };\r\n\r\n const classes = useStyles();\r\n const isHomePage = pathHelper.isHomePage(location.pathname);\r\n\r\n const showView =\r\n !loading && (dirList.length !== 0 || fileList.length !== 0);\r\n\r\n const listView = useMemo(\r\n () => (\r\n \r\n \r\n \r\n \r\n {\r\n ChangeSortMethod(\r\n sortMethod === \"namePos\"\r\n ? \"nameRev\"\r\n : \"namePos\"\r\n );\r\n }}\r\n >\r\n {t(\"name\")}\r\n {sortMethod === \"namePos\" ||\r\n sortMethod === \"nameRev\" ? (\r\n \r\n {sortMethod === \"nameRev\"\r\n ? \"sorted descending\"\r\n : \"sorted ascending\"}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n {\r\n ChangeSortMethod(\r\n sortMethod === \"sizePos\"\r\n ? \"sizeRes\"\r\n : \"sizePos\"\r\n );\r\n }}\r\n >\r\n {t(\"size\")}\r\n {sortMethod === \"sizePos\" ||\r\n sortMethod === \"sizeRes\" ? (\r\n \r\n {sortMethod === \"sizeRes\"\r\n ? \"sorted descending\"\r\n : \"sorted ascending\"}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n {\r\n ChangeSortMethod(\r\n sortMethod === \"modifyTimePos\"\r\n ? \"modifyTimeRev\"\r\n : \"modifyTimePos\"\r\n );\r\n }}\r\n >\r\n {t(\"lastModified\")}\r\n {sortMethod === \"modifyTimePos\" ||\r\n sortMethod === \"modifyTimeRev\" ? (\r\n \r\n {sortMethod === \"sizeRes\"\r\n ? \"sorted descending\"\r\n : \"sorted ascending\"}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n {pathHelper.isMobile() && path !== \"/\" && (\r\n \r\n )}\r\n {dirList.map((value, index) => (\r\n \r\n ))}\r\n {fileList.map((value, index) => (\r\n \r\n ))}\r\n \r\n
\r\n ),\r\n [dirList, fileList, path, sortMethod, ChangeSortMethod, classes]\r\n );\r\n\r\n const normalView = useMemo(\r\n () => (\r\n
\r\n {dirList.length !== 0 && (\r\n <>\r\n \r\n {t(\"folders\")}\r\n \r\n \r\n {dirList.map((value, index) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n {fileList.length !== 0 && (\r\n <>\r\n \r\n {t(\"files\")}\r\n \r\n \r\n {fileList.map((value, index) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n
\r\n ),\r\n [dirList, fileList, classes]\r\n );\r\n\r\n const view = viewMethod === \"list\" ? listView : normalView;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {navigatorError && (\r\n \r\n \r\n {t(\"listError\")}\r\n \r\n \r\n {navigatorErrorMsg.message}\r\n \r\n \r\n )}\r\n\r\n {loading && !navigatorError && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {!search &&\r\n isHomePage &&\r\n dirList.length === 0 &&\r\n fileList.length === 0 &&\r\n !loading &&\r\n !navigatorError && (\r\n \r\n )}\r\n {((search &&\r\n dirList.length === 0 &&\r\n fileList.length === 0 &&\r\n !loading &&\r\n !navigatorError) ||\r\n (dirList.length === 0 &&\r\n fileList.length === 0 &&\r\n !loading &&\r\n !navigatorError &&\r\n !isHomePage)) && }\r\n {showView && view}\r\n \r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst paginate = (array, page_size, page_number) =>\r\n page_size === -1\r\n ? array\r\n : array.slice((page_number - 1) * page_size, page_number * page_size);\r\n\r\nexport function usePagination() {\r\n const files = useSelector((state) => state.explorer.fileList);\r\n const folders = useSelector((state) => state.explorer.dirList);\r\n const pagination = useSelector((state) => state.viewUpdate.pagination);\r\n\r\n const { dirList, fileList, startIndex } = useMemo(() => {\r\n const all = paginate(\r\n [...folders, ...files],\r\n pagination.size,\r\n pagination.page\r\n );\r\n const dirList = [];\r\n const fileList = [];\r\n all.forEach((v) =>\r\n v.type === \"dir\" ? dirList.push(v) : fileList.push(v)\r\n );\r\n const startIndex = pagination.size * (pagination.page - 1);\r\n return { dirList, fileList, startIndex };\r\n }, [folders, files, pagination]);\r\n return { dirList, fileList, startIndex };\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport { useDrop } from \"react-dnd\";\r\nimport classNames from \"classnames\";\r\nimport MoreIcon from \"@material-ui/icons/MoreHoriz\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n expandMore: {\r\n color: \"#8d8d8d\",\r\n },\r\n active: {\r\n boxShadow: \"0 0 0 2px \" + theme.palette.primary.light,\r\n },\r\n button: {\r\n textTransform: \"none\",\r\n },\r\n}));\r\n\r\nexport default function PathButton(props) {\r\n const inputRef = React.useRef(null);\r\n\r\n const [{ canDrop, isOver }, drop] = useDrop({\r\n accept: \"object\",\r\n drop: () => {\r\n if (props.more) {\r\n inputRef.current.click();\r\n } else {\r\n return {\r\n folder: {\r\n id: -1,\r\n path: props.path,\r\n name: props.folder === \"/\" ? \"\" : props.folder,\r\n },\r\n };\r\n }\r\n },\r\n collect: (monitor) => ({\r\n isOver: monitor.isOver(),\r\n canDrop: monitor.canDrop(),\r\n }),\r\n });\r\n\r\n const isActive = canDrop && isOver;\r\n\r\n useEffect(() => {\r\n if (props.more && isActive) {\r\n inputRef.current.click();\r\n }\r\n // eslint-disable-next-line\r\n }, [isActive]);\r\n\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n {props.more && }\r\n {!props.more && (\r\n <>\r\n {props.folder}\r\n {props.last && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport { MenuItem, ListItemIcon, ListItemText } from \"@material-ui/core\";\r\nimport { useDrop } from \"react-dnd\";\r\nimport classNames from \"classnames\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n active: {\r\n border: \"2px solid \" + theme.palette.primary.light,\r\n },\r\n}));\r\n\r\nexport default function DropDownItem(props) {\r\n const [{ canDrop, isOver }, drop] = useDrop({\r\n accept: \"object\",\r\n drop: () => {\r\n console.log({\r\n folder: {\r\n id: -1,\r\n path: props.path,\r\n name: props.folder === \"/\" ? \"\" : props.folder,\r\n },\r\n });\r\n },\r\n collect: (monitor) => ({\r\n isOver: monitor.isOver(),\r\n canDrop: monitor.canDrop(),\r\n }),\r\n });\r\n\r\n const isActive = canDrop && isOver;\r\n\r\n useEffect(() => {\r\n props.setActiveStatus(props.id, isActive);\r\n // eslint-disable-next-line\r\n }, [isActive]);\r\n\r\n const classes = useStyles();\r\n return (\r\n props.navigateTo(e, props.id)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport DropDownItem from \"./DropDownItem\";\r\n\r\nexport default function DropDown(props) {\r\n let timer;\r\n let first = props.folders.length;\r\n const status = [];\r\n for (let index = 0; index < props.folders.length; index++) {\r\n status[index] = false;\r\n }\r\n\r\n const setActiveStatus = (id, value) => {\r\n status[id] = value;\r\n if (value) {\r\n clearTimeout(timer);\r\n } else {\r\n let shouldClose = true;\r\n status.forEach((element) => {\r\n if (element) {\r\n shouldClose = false;\r\n }\r\n });\r\n if (shouldClose) {\r\n if (first <= 0) {\r\n timer = setTimeout(() => {\r\n props.onClose();\r\n }, 100);\r\n } else {\r\n first--;\r\n }\r\n }\r\n }\r\n console.log(status);\r\n };\r\n\r\n return (\r\n <>\r\n {props.folders.map((folder, id) => (\r\n \r\n ))}\r\n \r\n );\r\n}\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport RightIcon from \"@material-ui/icons/KeyboardArrowRight\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport explorer, {\r\n drawerToggleAction,\r\n navigateTo,\r\n navigateUp,\r\n openCompressDialog,\r\n openCreateFileDialog,\r\n openCreateFolderDialog,\r\n openShareDialog,\r\n refreshFileList,\r\n setNavigatorError,\r\n setNavigatorLoadingStatus,\r\n setSelectedTarget,\r\n} from \"../../../redux/explorer\";\r\nimport { fixUrlHash, setGetParameter } from \"../../../utils/index\";\r\nimport {\r\n Divider,\r\n ListItemIcon,\r\n Menu,\r\n MenuItem,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport PathButton from \"./PathButton\";\r\nimport DropDown from \"./DropDown\";\r\nimport pathHelper from \"../../../utils/page\";\r\nimport classNames from \"classnames\";\r\nimport Auth from \"../../../middleware/Auth\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport { Archive } from \"@material-ui/icons\";\r\nimport { FilePlus } from \"mdi-material-ui\";\r\nimport SubActions from \"./SubActions\";\r\nimport { setCurrentPolicy } from \"../../../redux/explorer/action\";\r\nimport { list } from \"../../../services/navigate\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n path: state.navigator.path,\r\n refresh: state.navigator.refresh,\r\n drawerDesktopOpen: state.viewUpdate.open,\r\n viewMethod: state.viewUpdate.explorerViewMethod,\r\n search: state.explorer.search,\r\n sortMethod: state.viewUpdate.sortMethod,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n navigateToPath: (path) => {\r\n dispatch(navigateTo(path));\r\n },\r\n navigateUp: () => {\r\n dispatch(navigateUp());\r\n },\r\n setNavigatorError: (status, msg) => {\r\n dispatch(setNavigatorError(status, msg));\r\n },\r\n updateFileList: (list) => {\r\n dispatch(explorer.actions.updateFileList(list));\r\n },\r\n setNavigatorLoadingStatus: (status) => {\r\n dispatch(setNavigatorLoadingStatus(status));\r\n },\r\n refreshFileList: () => {\r\n dispatch(refreshFileList());\r\n },\r\n setSelectedTarget: (target) => {\r\n dispatch(setSelectedTarget(target));\r\n },\r\n openCreateFolderDialog: () => {\r\n dispatch(openCreateFolderDialog());\r\n },\r\n openCreateFileDialog: () => {\r\n dispatch(openCreateFileDialog());\r\n },\r\n openShareDialog: () => {\r\n dispatch(openShareDialog());\r\n },\r\n handleDesktopToggle: (open) => {\r\n dispatch(drawerToggleAction(open));\r\n },\r\n openCompressDialog: () => {\r\n dispatch(openCompressDialog());\r\n },\r\n setCurrentPolicy: (policy) => {\r\n dispatch(setCurrentPolicy(policy));\r\n },\r\n };\r\n};\r\n\r\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\r\n\r\nconst styles = (theme) => ({\r\n container: {\r\n [theme.breakpoints.down(\"xs\")]: {\r\n display: \"none\",\r\n },\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n navigatorContainer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n nav: {\r\n height: \"48px\",\r\n padding: \"5px 15px\",\r\n display: \"flex\",\r\n },\r\n optionContainer: {\r\n paddingTop: \"6px\",\r\n marginRight: \"10px\",\r\n },\r\n rightIcon: {\r\n marginTop: \"6px\",\r\n verticalAlign: \"top\",\r\n color: \"#868686\",\r\n },\r\n expandMore: {\r\n color: \"#8d8d8d\",\r\n },\r\n roundBorder: {\r\n borderRadius: \"4px 4px 0 0\",\r\n },\r\n});\r\n\r\nclass NavigatorComponent extends Component {\r\n search = undefined;\r\n currentID = 0;\r\n\r\n state = {\r\n hidden: false,\r\n hiddenFolders: [],\r\n folders: [],\r\n anchorEl: null,\r\n hiddenMode: false,\r\n anchorHidden: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.element = React.createRef();\r\n }\r\n\r\n componentDidMount = () => {\r\n const url = new URL(fixUrlHash(window.location.href));\r\n const c = url.searchParams.get(\"path\");\r\n this.renderPath(c === null ? \"/\" : c);\r\n\r\n if (!this.props.isShare) {\r\n // 如果是在个人文件管理页,首次加载时打开侧边栏\r\n this.props.handleDesktopToggle(true);\r\n }\r\n\r\n // 后退操作时重新导航\r\n window.onpopstate = () => {\r\n const url = new URL(fixUrlHash(window.location.href));\r\n const c = url.searchParams.get(\"path\");\r\n if (c !== null) {\r\n this.props.navigateToPath(c);\r\n }\r\n };\r\n };\r\n\r\n renderPath = (path = null) => {\r\n this.props.setNavigatorError(false, null);\r\n this.setState({\r\n folders:\r\n path !== null\r\n ? path.substr(1).split(\"/\")\r\n : this.props.path.substr(1).split(\"/\"),\r\n });\r\n const newPath = path !== null ? path : this.props.path;\r\n list(\r\n newPath,\r\n this.props.share,\r\n this.search ? this.search.keywords : \"\",\r\n this.search ? this.search.searchPath : \"\"\r\n )\r\n .then((response) => {\r\n this.currentID = response.data.parent;\r\n this.props.updateFileList(response.data.objects);\r\n this.props.setNavigatorLoadingStatus(false);\r\n if (!this.search) {\r\n setGetParameter(\"path\", encodeURIComponent(newPath));\r\n }\r\n if (response.data.policy) {\r\n this.props.setCurrentPolicy({\r\n id: response.data.policy.id,\r\n name: response.data.policy.name,\r\n type: response.data.policy.type,\r\n maxSize: response.data.policy.max_size,\r\n allowedSuffix: response.data.policy.file_type,\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n this.props.setNavigatorError(true, error);\r\n });\r\n\r\n this.checkOverFlow(true);\r\n };\r\n\r\n redresh = (path) => {\r\n this.props.setNavigatorLoadingStatus(true);\r\n this.props.setNavigatorError(false, \"error\");\r\n this.renderPath(path);\r\n };\r\n\r\n UNSAFE_componentWillReceiveProps = (nextProps) => {\r\n if (this.props.search !== nextProps.search) {\r\n this.search = nextProps.search;\r\n }\r\n if (this.props.path !== nextProps.path) {\r\n this.renderPath(nextProps.path);\r\n }\r\n if (this.props.refresh !== nextProps.refresh) {\r\n this.redresh(nextProps.path);\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.updateFileList([]);\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevStates) => {\r\n if (this.state.folders !== prevStates.folders) {\r\n this.checkOverFlow(true);\r\n }\r\n if (this.props.drawerDesktopOpen !== prevProps.drawerDesktopOpen) {\r\n delay(500).then(() => this.checkOverFlow());\r\n }\r\n };\r\n\r\n checkOverFlow = (force) => {\r\n if (this.overflowInitLock && !force) {\r\n return;\r\n }\r\n if (this.element.current !== null) {\r\n const hasOverflowingChildren =\r\n this.element.current.offsetHeight <\r\n this.element.current.scrollHeight ||\r\n this.element.current.offsetWidth <\r\n this.element.current.scrollWidth;\r\n if (hasOverflowingChildren) {\r\n this.overflowInitLock = true;\r\n this.setState({ hiddenMode: true });\r\n }\r\n if (!hasOverflowingChildren && this.state.hiddenMode) {\r\n this.setState({ hiddenMode: false });\r\n }\r\n }\r\n };\r\n\r\n navigateTo = (event, id) => {\r\n if (id === this.state.folders.length - 1) {\r\n //最后一个路径\r\n this.setState({ anchorEl: event.currentTarget });\r\n } else if (\r\n id === -1 &&\r\n this.state.folders.length === 1 &&\r\n this.state.folders[0] === \"\"\r\n ) {\r\n this.props.refreshFileList();\r\n this.handleClose();\r\n } else if (id === -1) {\r\n this.props.navigateToPath(\"/\");\r\n this.handleClose();\r\n } else {\r\n this.props.navigateToPath(\r\n \"/\" + this.state.folders.slice(0, id + 1).join(\"/\")\r\n );\r\n this.handleClose();\r\n }\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ anchorEl: null, anchorHidden: null, anchorSort: null });\r\n };\r\n\r\n showHiddenPath = (e) => {\r\n this.setState({ anchorHidden: e.currentTarget });\r\n };\r\n\r\n performAction = (e) => {\r\n this.handleClose();\r\n if (e === \"refresh\") {\r\n this.redresh();\r\n return;\r\n }\r\n const presentPath = this.props.path.split(\"/\");\r\n const newTarget = [\r\n {\r\n id: this.currentID,\r\n type: \"dir\",\r\n name: presentPath.pop(),\r\n path: presentPath.length === 1 ? \"/\" : presentPath.join(\"/\"),\r\n },\r\n ];\r\n //this.props.navitateUp();\r\n switch (e) {\r\n case \"share\":\r\n this.props.setSelectedTarget(newTarget);\r\n this.props.openShareDialog();\r\n break;\r\n case \"newfolder\":\r\n this.props.openCreateFolderDialog();\r\n break;\r\n case \"compress\":\r\n this.props.setSelectedTarget(newTarget);\r\n this.props.openCompressDialog();\r\n break;\r\n case \"newFile\":\r\n this.props.openCreateFileDialog();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\r\n const user = Auth.GetUser();\r\n\r\n const presentFolderMenu = (\r\n \r\n this.performAction(\"refresh\")}>\r\n \r\n \r\n \r\n {t(\"fileManager.refresh\")}\r\n \r\n {!this.props.search && isHomePage && (\r\n
\r\n \r\n this.performAction(\"share\")}>\r\n \r\n \r\n \r\n {t(\"fileManager.share\")}\r\n \r\n {user.group.compress && (\r\n this.performAction(\"compress\")}\r\n >\r\n \r\n \r\n \r\n {t(\"fileManager.compress\")}\r\n \r\n )}\r\n \r\n this.performAction(\"newfolder\")}\r\n >\r\n \r\n \r\n \r\n {t(\"fileManager.newFolder\")}\r\n \r\n this.performAction(\"newFile\")}>\r\n \r\n \r\n \r\n {t(\"fileManager.newFile\")}\r\n \r\n
\r\n )}\r\n \r\n );\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n this.navigateTo(e, -1)}\r\n />\r\n \r\n \r\n {this.state.hiddenMode && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.navigateTo(\r\n e,\r\n this.state.folders.length - 1\r\n )\r\n }\r\n />\r\n {presentFolderMenu}\r\n \r\n )}\r\n {!this.state.hiddenMode &&\r\n this.state.folders.map((folder, id, folders) => (\r\n \r\n {folder !== \"\" && (\r\n \r\n \r\n this.navigateTo(e, id)\r\n }\r\n />\r\n {id === folders.length - 1 &&\r\n presentFolderMenu}\r\n {id !== folders.length - 1 && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n ))}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nNavigatorComponent.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n path: PropTypes.string.isRequired,\r\n};\r\n\r\nconst Navigator = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(NavigatorComponent))));\r\n\r\nexport default Navigator;\r\n","import React from \"react\";\r\nimport { BulletList } from \"react-content-loader\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n loader: {\r\n width: \"100%\",\r\n // padding: 40,\r\n // [theme.breakpoints.down(\"md\")]: {\r\n // width: \"100%\",\r\n // padding: 10\r\n // }\r\n },\r\n}));\r\n\r\nconst MyLoader = (props) => (\r\n \r\n);\r\n\r\nfunction ListLoading() {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default ListLoading;\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport { Clear, Folder } from \"@material-ui/icons\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport { setSideBar } from \"../../../redux/explorer/action\";\r\nimport TypeIcon from \"../TypeIcon\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport API from \"../../../middleware/Api\";\r\nimport { filename, sizeToString } from \"../../../utils\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport TimeAgo from \"timeago-react\";\r\nimport ListLoading from \"../../Placeholder/ListLoading\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Slide from \"@material-ui/core/Slide\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport { formatLocalTime } from \"../../../utils/datetime\";\r\nimport { navigateTo, toggleSnackbar } from \"../../../redux/explorer\";\r\nimport { Trans, useTranslation } from \"react-i18next\";\r\n\r\nconst drawerWidth = 350;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n drawerPaper: {\r\n width: drawerWidth,\r\n boxShadow:\r\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%)\",\r\n },\r\n drawerContainer: {\r\n overflow: \"auto\",\r\n },\r\n header: {\r\n display: \"flex\",\r\n padding: theme.spacing(3),\r\n placeContent: \"space-between\",\r\n },\r\n fileIcon: { width: 33, height: 33 },\r\n fileIconSVG: { fontSize: 20 },\r\n folderIcon: {\r\n color: theme.palette.text.secondary,\r\n width: 33,\r\n height: 33,\r\n },\r\n fileName: {\r\n marginLeft: theme.spacing(2),\r\n marginRight: theme.spacing(2),\r\n wordBreak: \"break-all\",\r\n flexGrow: 2,\r\n },\r\n closeIcon: {\r\n placeSelf: \"flex-start\",\r\n marginTop: 2,\r\n },\r\n propsContainer: {\r\n padding: theme.spacing(3),\r\n },\r\n propsLabel: {\r\n color: theme.palette.text.secondary,\r\n padding: theme.spacing(1),\r\n },\r\n propsTime: {\r\n color: theme.palette.text.disabled,\r\n padding: theme.spacing(1),\r\n },\r\n propsValue: {\r\n padding: theme.spacing(1),\r\n wordBreak: \"break-all\",\r\n },\r\n appBar: {\r\n position: \"relative\",\r\n },\r\n title: {\r\n marginLeft: theme.spacing(2),\r\n flex: 1,\r\n },\r\n}));\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nexport default function SideDrawer() {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const sideBarOpen = useSelector((state) => state.explorer.sideBarOpen);\r\n const selected = useSelector((state) => state.explorer.selected);\r\n const SetSideBar = useCallback((open) => dispatch(setSideBar(open)), [\r\n dispatch,\r\n ]);\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\r\n const search = useSelector((state) => state.explorer.search);\r\n const [target, setTarget] = useState(null);\r\n const [details, setDetails] = useState(null);\r\n const loadProps = (object) => {\r\n API.get(\r\n \"/object/property/\" +\r\n object.id +\r\n \"?trace_root=\" +\r\n (search ? \"true\" : \"false\") +\r\n \"&is_folder=\" +\r\n (object.type === \"dir\").toString()\r\n )\r\n .then((response) => {\r\n setDetails(response.data);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n setDetails(null);\r\n if (sideBarOpen) {\r\n if (selected.length !== 1) {\r\n SetSideBar(false);\r\n } else {\r\n setTarget(selected[0]);\r\n loadProps(selected[0]);\r\n }\r\n }\r\n }, [selected, sideBarOpen]);\r\n\r\n const classes = useStyles();\r\n const propsItem = [\r\n {\r\n label: t(\"fileManager.size\"),\r\n value: (d, target) =>\r\n sizeToString(d.size) +\r\n t(\"fileManager.bytes\", { bytes: d.size.toLocaleString() }),\r\n show: (d) => true,\r\n },\r\n {\r\n label: t(\"fileManager.storagePolicy\"),\r\n value: (d, target) => d.policy,\r\n show: (d) => d.type === \"file\",\r\n },\r\n {\r\n label: t(\"fileManager.childFolders\"),\r\n value: (d, target) =>\r\n t(\"fileManager.childCount\", {\r\n num: d.child_folder_num.toLocaleString(),\r\n }),\r\n show: (d) => d.type === \"dir\",\r\n },\r\n {\r\n label: t(\"fileManager.childFiles\"),\r\n value: (d, target) =>\r\n t(\"fileManager.childCount\", {\r\n num: d.child_file_num.toLocaleString(),\r\n }),\r\n show: (d) => d.type === \"dir\",\r\n },\r\n {\r\n label: t(\"fileManager.parentFolder\"),\r\n // eslint-disable-next-line react/display-name\r\n value: (d, target) => {\r\n const path = d.path === \"\" ? target.path : d.path;\r\n const name = filename(path);\r\n return (\r\n \r\n NavigateTo(path)}\r\n >\r\n {name === \"\" ? t(\"fileManager.rootFolder\") : name}\r\n \r\n \r\n );\r\n },\r\n show: (d) => true,\r\n },\r\n {\r\n label: t(\"fileManager.modifiedAt\"),\r\n value: (d, target) => formatLocalTime(d.updated_at),\r\n show: (d) => true,\r\n },\r\n {\r\n label: t(\"fileManager.createdAt\"),\r\n value: (d) => formatLocalTime(d.created_at),\r\n show: (d) => true,\r\n },\r\n ];\r\n const content = (\r\n \r\n {!details && }\r\n {details && (\r\n <>\r\n {propsItem.map((item) => {\r\n if (item.show(target)) {\r\n return (\r\n <>\r\n \r\n {item.label}\r\n \r\n \r\n {item.value(details, target)}\r\n \r\n \r\n );\r\n }\r\n })}\r\n {target.type === \"dir\" && (\r\n \r\n ,\r\n ,\r\n ,\r\n ]}\r\n />\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n return (\r\n <>\r\n \r\n \r\n {target && (\r\n <>\r\n \r\n \r\n SetSideBar(false)}\r\n aria-label=\"close\"\r\n >\r\n \r\n \r\n \r\n {target.name}\r\n \r\n \r\n \r\n {content}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {target && (\r\n <>\r\n
\r\n {target.type === \"dir\" && (\r\n \r\n )}\r\n {target.type !== \"dir\" && (\r\n \r\n )}\r\n
\r\n \r\n {target.name}\r\n \r\n
\r\n SetSideBar(false)}\r\n className={classes.closeIcon}\r\n aria-label=\"close\"\r\n size={\"small\"}\r\n >\r\n \r\n \r\n
\r\n \r\n )}\r\n \r\n {content}\r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { useDrop } from \"react-dnd\";\r\nimport { PaginationItem } from \"@material-ui/lab\";\r\n\r\nexport default function CustomPaginationItem(props) {\r\n const inputRef = useRef(null);\r\n\r\n const [{ canDrop, isOver }, drop] = useDrop({\r\n accept: \"object\",\r\n collect: (monitor) => ({\r\n isOver: monitor.isOver(),\r\n canDrop: monitor.canDrop(),\r\n }),\r\n });\r\n\r\n const isActive = canDrop && isOver;\r\n\r\n useEffect(() => {\r\n if (\r\n isActive &&\r\n props.onClick &&\r\n props.type !== \"start-ellipsis\" &&\r\n props.type !== \"end-ellipsis\"\r\n ) {\r\n console.log(\"ss\");\r\n props.onClick();\r\n }\r\n }, [isActive, inputRef]);\r\n\r\n if (\r\n props.isMobile &&\r\n (props.type === \"start-ellipsis\" ||\r\n props.type === \"end-ellipsis\" ||\r\n props.type === \"page\")\r\n ) {\r\n if (props.selected) {\r\n return (\r\n
\r\n {props.page} / {props.count}\r\n
\r\n );\r\n }\r\n return <>;\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import React, { useCallback, useMemo } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Pagination } from \"@material-ui/lab\";\r\nimport CustomPaginationItem from \"./PaginationItem\";\r\nimport { setPagination } from \"../../redux/viewUpdate/action\";\r\nimport AutoHidden from \"../Dial/AutoHidden\";\r\nimport statusHelper from \"../../utils/page\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n position: \"fixed\",\r\n bottom: 23,\r\n /* left: 8px; */\r\n background: theme.palette.background.paper,\r\n borderRadius: 24,\r\n boxShadow:\r\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%)\",\r\n padding: \"8px 4px 8px 4px\",\r\n marginLeft: 20,\r\n },\r\n placeholder: {\r\n marginTop: 80,\r\n },\r\n}));\r\n\r\nexport default function PaginationFooter() {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const files = useSelector((state) => state.explorer.fileList);\r\n const folders = useSelector((state) => state.explorer.dirList);\r\n const pagination = useSelector((state) => state.viewUpdate.pagination);\r\n const loading = useSelector((state) => state.viewUpdate.navigatorLoading);\r\n const location = useLocation();\r\n\r\n const SetPagination = useCallback((p) => dispatch(setPagination(p)), [\r\n dispatch,\r\n ]);\r\n\r\n const handleChange = (event, value) => {\r\n SetPagination({ ...pagination, page: value });\r\n };\r\n\r\n const count = useMemo(\r\n () => Math.ceil((files.length + folders.length) / pagination.size),\r\n [files, folders, pagination.size]\r\n );\r\n\r\n const isMobile = statusHelper.isMobile();\r\n const isSharePage = statusHelper.isSharePage(location.pathname);\r\n\r\n if (count > 1 && !loading) {\r\n return (\r\n <>\r\n {!isMobile && !isSharePage && (\r\n
\r\n )}\r\n \r\n
\r\n (\r\n \r\n )}\r\n color=\"secondary\"\r\n count={count}\r\n page={pagination.page}\r\n onChange={handleChange}\r\n />\r\n
\r\n \r\n \r\n );\r\n }\r\n return
;\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport HTML5Backend from \"react-dnd-html5-backend\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport DragLayer from \"./DnD/DragLayer\";\r\nimport Explorer from \"./Explorer\";\r\nimport Modals from \"./Modals\";\r\nimport Navigator from \"./Navigator/Navigator\";\r\nimport SideDrawer from \"./Sidebar/SideDrawer\";\r\nimport classNames from \"classnames\";\r\nimport {\r\n closeAllModals,\r\n navigateTo,\r\n setSelectedTarget,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport PaginationFooter from \"./Pagination\";\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: \"calc(100vh - 64px)\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n height: \"100%\",\r\n },\r\n },\r\n rootShare: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: \"100%\",\r\n minHeight: 500,\r\n },\r\n explorer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflowY: \"auto\",\r\n minHeight: 500,\r\n },\r\n});\r\n\r\nconst mapStateToProps = () => ({});\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n changeSubTitle: (text) => {\r\n dispatch(changeSubTitle(text));\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n closeAllModals: () => {\r\n dispatch(closeAllModals());\r\n },\r\n navigateTo: (path) => {\r\n dispatch(navigateTo(path));\r\n },\r\n };\r\n};\r\n\r\nclass FileManager extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.image = React.createRef();\r\n }\r\n componentWillUnmount() {\r\n this.props.setSelectedTarget([]);\r\n this.props.closeAllModals();\r\n this.props.navigateTo(\"/\");\r\n }\r\n\r\n componentDidMount() {\r\n if (pathHelper.isHomePage(this.props.location.pathname)) {\r\n this.props.changeSubTitle(null);\r\n }\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nFileManager.propTypes = {};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(FileManager)));\r\n","import React from \"react\";\r\nimport {\r\n Icon,\r\n ListItemIcon,\r\n makeStyles,\r\n Menu,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icon: {\r\n minWidth: 38,\r\n },\r\n}));\r\n\r\nexport default function SelectMenu({\r\n options,\r\n anchorEl,\r\n handleClose,\r\n callback,\r\n selected,\r\n showIcon = true,\r\n}) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {options.map((item) => (\r\n <>\r\n callback(item)}\r\n >\r\n {showIcon && (\r\n \r\n {item.name !== selected ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n\r\n {item.name}\r\n \r\n \r\n ))}\r\n \r\n );\r\n}\r\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\r\nimport { Button, Paper } from \"@material-ui/core\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\r\nimport { getPreviewURL } from \"../../middleware/Api\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { basename, fileNameNoExt, isMobileSafari } from \"../../utils\";\r\nimport { list } from \"../../services/navigate\";\r\nimport { getViewerURL } from \"../../redux/explorer/action\";\r\nimport { subtitleSuffix, videoPreviewSuffix } from \"../../config\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport { pathJoin } from \"../Uploader/core/utils\";\r\nimport { Launch, PlaylistPlay, Subtitles } from \"@material-ui/icons\";\r\nimport TextLoading from \"../Placeholder/TextLoading\";\r\nimport SelectMenu from \"./SelectMenu\";\r\nimport { getDownloadURL } from \"../../services/file\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst Artplayer = React.lazy(() =>\r\n import(\r\n /* webpackChunkName: \"artplayer\" */ \"artplayer/examples/react/Artplayer\"\r\n )\r\n);\r\n\r\nconst externalPlayers = [\r\n {\r\n name: \"PotPlayer\",\r\n url: (source, title) => `potplayer://${source}`,\r\n },\r\n {\r\n name: \"VLC\",\r\n url: (source, title) => `vlc://${source}`,\r\n },\r\n {\r\n name: \"IINA\",\r\n url: (source, title) => `iina://weblink?url=${source}`,\r\n },\r\n {\r\n name: \"nPlayer\",\r\n url: (source, title) => `nplayer-${source}`,\r\n },\r\n {\r\n name: \"MXPlayer (Free)\",\r\n url: (source, title) =>\r\n `intent:${source}#Intent;package=com.mxtech.videoplayer.ad;S.title=${title};end`,\r\n },\r\n {\r\n name: \"MXPlayer (Pro)\",\r\n url: (source, title) =>\r\n `intent:${source}#Intent;package=com.mxtech.videoplayer.pro;S.title=${title};end`,\r\n },\r\n];\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"30px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n marginBottom: 50,\r\n },\r\n player: {\r\n borderRadius: \"4px\",\r\n height: 600,\r\n },\r\n actions: {\r\n marginTop: theme.spacing(2),\r\n },\r\n actionButton: {\r\n marginRight: theme.spacing(1),\r\n marginTop: theme.spacing(1),\r\n },\r\n}));\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nexport default function VideoViewer() {\r\n const { t } = useTranslation();\r\n const math = useRouteMatch();\r\n const location = useLocation();\r\n const query = useQuery();\r\n const { id } = useParams();\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n const { title, path } = UseFileSubTitle(query, math, location);\r\n const theme = useTheme();\r\n const [art, setArt] = useState(null);\r\n const history = useHistory();\r\n const [files, setFiles] = useState([]);\r\n const [subtitles, setSubtitles] = useState([]);\r\n const [playlist, setPlaylist] = useState([]);\r\n const [subtitleOpen, setSubtitleOpen] = useState(null);\r\n const [subtitleSelected, setSubtitleSelected] = useState(\"\");\r\n const [playlistOpen, setPlaylistOpen] = useState(null);\r\n const [externalPlayerOpen, setExternalPlayerOpen] = useState(null);\r\n const isShare = pathHelper.isSharePage(location.pathname);\r\n\r\n useEffect(() => {\r\n art &&\r\n art.on(\"ready\", () => {\r\n art.autoHeight = true;\r\n });\r\n return () => {\r\n if (\r\n art !== null &&\r\n !isMobileSafari() &&\r\n document.pictureInPictureEnabled &&\r\n art.playing\r\n ) {\r\n art.pip = true;\r\n art.query(\".art-video\").addEventListener(\r\n \"leavepictureinpicture\",\r\n () => {\r\n art.pause();\r\n },\r\n false\r\n );\r\n }\r\n };\r\n }, [art]);\r\n\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n if (art !== null) {\r\n const newURL = getPreviewURL(\r\n isShare,\r\n id,\r\n query.get(\"id\"),\r\n query.get(\"share_path\")\r\n );\r\n if (newURL !== art.url) {\r\n if (art.subtitle) {\r\n art.subtitle.show = false;\r\n }\r\n art.switchUrl(newURL);\r\n if (path && path !== \"\") {\r\n list(\r\n basename(path),\r\n isShare ? { key: id } : null,\r\n \"\",\r\n \"\"\r\n ).then((res) => {\r\n setFiles(\r\n res.data.objects.filter((o) => o.type === \"file\")\r\n );\r\n setPlaylist(\r\n res.data.objects.filter(\r\n (o) =>\r\n o.type === \"file\" &&\r\n videoPreviewSuffix.indexOf(\r\n o.name.split(\".\").pop().toLowerCase()\r\n ) !== -1\r\n )\r\n );\r\n });\r\n }\r\n }\r\n }\r\n }, [art, id, location, path]);\r\n\r\n const switchSubtitle = (f) => {\r\n if (art !== null) {\r\n const fileType = f.name.split(\".\").pop().toLowerCase();\r\n art.subtitle.switch(\r\n getPreviewURL(\r\n isShare,\r\n id,\r\n f.id,\r\n pathJoin([basename(query.get(\"share_path\")), f.name])\r\n ),\r\n {\r\n type: fileType,\r\n }\r\n );\r\n art.subtitle.show = true;\r\n setSubtitleSelected(f.name);\r\n ToggleSnackbar(\r\n \"top\",\r\n \"center\",\r\n t(\"fileManager.subtitleSwitchTo\", {\r\n subtitle: f.name,\r\n }),\r\n \"info\"\r\n );\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (files.length > 0) {\r\n const options = files.filter((f) => {\r\n const fileType = f.name.split(\".\").pop().toLowerCase();\r\n if (subtitleSuffix.indexOf(fileType) !== -1) {\r\n if (fileNameNoExt(f.name) === fileNameNoExt(title)) {\r\n switchSubtitle(f);\r\n }\r\n return true;\r\n }\r\n return false;\r\n });\r\n setSubtitles(options);\r\n }\r\n }, [files]);\r\n\r\n const switchVideo = (file) => {\r\n if (isShare) {\r\n file.key = id;\r\n }\r\n if (isMobileSafari()) {\r\n window.location.href = getViewerURL(\"video\", file, isShare);\r\n } else {\r\n history.push(getViewerURL(\"video\", file, isShare));\r\n }\r\n };\r\n\r\n const setSubtitle = (sub) => {\r\n setSubtitleOpen(null);\r\n switchSubtitle(sub);\r\n };\r\n\r\n const startSelectSubTitle = (e) => {\r\n if (subtitles.length === 0) {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"fileManager.noSubtitleAvailable\"),\r\n \"warning\"\r\n );\r\n return;\r\n }\r\n setSubtitleOpen(e.currentTarget);\r\n };\r\n\r\n const openInExternalPlayer = (player) => {\r\n const current = { name: title };\r\n current.id = query.get(\"id\");\r\n current.path = basename(path);\r\n if (isShare) {\r\n current.key = id;\r\n }\r\n\r\n setExternalPlayerOpen(null);\r\n getDownloadURL(current)\r\n .then((response) => {\r\n window.location.assign(player.url(response.data, title));\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n }>\r\n setArt(a)}\r\n />\r\n \r\n \r\n
\r\n }\r\n variant=\"outlined\"\r\n >\r\n {t(\"fileManager.subtitle\")}\r\n \r\n {playlist.length >= 2 && (\r\n setPlaylistOpen(e.currentTarget)}\r\n className={classes.actionButton}\r\n startIcon={}\r\n variant=\"outlined\"\r\n >\r\n {t(\"fileManager.playlist\")}\r\n \r\n )}\r\n setExternalPlayerOpen(e.currentTarget)}\r\n className={classes.actionButton}\r\n startIcon={}\r\n variant=\"outlined\"\r\n >\r\n {t(\"fileManager.openInExternalPlayer\")}\r\n \r\n
\r\n setSubtitleOpen(null)}\r\n />\r\n setPlaylistOpen(null)}\r\n />\r\n setExternalPlayerOpen(null)}\r\n />\r\n
\r\n );\r\n}\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\n\r\nimport {\r\n Avatar,\r\n Card,\r\n CardHeader,\r\n Grid,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport API from \"../../middleware/Api\";\r\nimport TypeIcon from \"../FileManager/TypeIcon\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { useLocation } from \"react-router\";\r\nimport TimeAgo from \"timeago-react\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport Nothing from \"../Placeholder/Nothing\";\r\nimport { Trans, useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n cardContainer: {\r\n padding: theme.spacing(1),\r\n },\r\n card: {\r\n maxWidth: 400,\r\n margin: \"0 auto\",\r\n },\r\n actions: {\r\n display: \"flex\",\r\n },\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"50px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n },\r\n shareTitle: {\r\n maxWidth: \"200px\",\r\n },\r\n avatarFile: {\r\n backgroundColor: theme.palette.primary.light,\r\n },\r\n avatarFolder: {\r\n backgroundColor: theme.palette.secondary.light,\r\n },\r\n gird: {\r\n marginTop: \"30px\",\r\n },\r\n loadMore: {\r\n textAlign: \"right\",\r\n marginTop: \"20px\",\r\n marginBottom: \"40px\",\r\n },\r\n badge: {\r\n marginLeft: theme.spacing(1),\r\n height: 17,\r\n },\r\n orderSelect: {\r\n textAlign: \"right\",\r\n marginTop: 5,\r\n },\r\n cardAction: {\r\n marginTop: 0,\r\n },\r\n}));\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nexport default function SearchResult() {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"share\" });\r\n const { t: tGlobal } = useTranslation();\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n\r\n const query = useQuery();\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n const [page, setPage] = useState(1);\r\n const [total, setTotal] = useState(0);\r\n const [shareList, setShareList] = useState([]);\r\n const [orderBy, setOrderBy] = useState(\"created_at DESC\");\r\n\r\n const search = useCallback((keywords, page, orderBy) => {\r\n const order = orderBy.split(\" \");\r\n API.get(\r\n \"/share/search?page=\" +\r\n page +\r\n \"&order_by=\" +\r\n order[0] +\r\n \"&order=\" +\r\n order[1] +\r\n \"&keywords=\" +\r\n encodeURIComponent(keywords)\r\n )\r\n .then((response) => {\r\n setTotal(response.data.total);\r\n setShareList(response.data.items);\r\n })\r\n .catch(() => {\r\n ToggleSnackbar(\"top\", \"right\", t(\"listLoadingError\"), \"error\");\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n const keywords = query.get(\"keywords\");\r\n if (keywords) {\r\n search(keywords, page, orderBy);\r\n } else {\r\n ToggleSnackbar(\"top\", \"right\", t(\"enterKeywords\"), \"warning\");\r\n }\r\n }, [location]);\r\n\r\n const handlePageChange = (event, value) => {\r\n setPage(value);\r\n const keywords = query.get(\"keywords\");\r\n search(keywords, value, orderBy);\r\n };\r\n\r\n const handleOrderChange = (event) => {\r\n setOrderBy(event.target.value);\r\n const keywords = query.get(\"keywords\");\r\n search(keywords, page, event.target.value);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {t(\"searchResult\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"createdAtDesc\")}\r\n \r\n \r\n {t(\"createdAtAsc\")}\r\n \r\n \r\n {t(\"downloadsDesc\")}\r\n \r\n \r\n {t(\"downloadsAsc\")}\r\n \r\n \r\n {t(\"viewsDesc\")}\r\n \r\n \r\n {t(\"viewsAsc\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {shareList.length === 0 && }\r\n {shareList.map((value) => (\r\n \r\n \r\n \r\n {!value.is_dir && (\r\n \r\n )}{\" \"}\r\n {value.is_dir && (\r\n \r\n \r\n \r\n )}\r\n
\r\n }\r\n action={\r\n \r\n \r\n history.push(\"/s/\" + value.key)\r\n }\r\n >\r\n \r\n \r\n \r\n }\r\n title={\r\n \r\n \r\n {value.source\r\n ? value.source.name\r\n : t(\"sourceNotFound\")}\r\n \r\n \r\n }\r\n subheader={\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n }\r\n />\r\n \r\n \r\n ))}\r\n \r\n
\r\n \r\n
{\" \"}\r\n \r\n );\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport LockIcon from \"@material-ui/icons/Lock\";\r\nimport UnlockIcon from \"@material-ui/icons/LockOpen\";\r\nimport EyeIcon from \"@material-ui/icons/RemoveRedEye\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\n\r\nimport {\r\n Avatar,\r\n Button,\r\n Card,\r\n CardActions,\r\n CardHeader,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton,\r\n TextField,\r\n Tooltip,\r\n Typography,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport API from \"../../middleware/Api\";\r\nimport TypeIcon from \"../FileManager/TypeIcon\";\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport { VisibilityOff, VpnKey } from \"@material-ui/icons\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport ToggleIcon from \"material-ui-toggle-icon\";\r\nimport { formatLocalTime } from \"../../utils/datetime\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport Nothing from \"../Placeholder/Nothing\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst styles = (theme) => ({\r\n cardContainer: {\r\n padding: theme.spacing(1),\r\n },\r\n card: {\r\n maxWidth: 400,\r\n margin: \"0 auto\",\r\n },\r\n actions: {\r\n display: \"flex\",\r\n },\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"50px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n },\r\n shareTitle: {\r\n maxWidth: \"200px\",\r\n },\r\n avatarFile: {\r\n backgroundColor: theme.palette.primary.light,\r\n },\r\n avatarFolder: {\r\n backgroundColor: theme.palette.secondary.light,\r\n },\r\n gird: {\r\n marginTop: \"30px\",\r\n },\r\n loadMore: {\r\n textAlign: \"right\",\r\n marginTop: \"20px\",\r\n marginBottom: \"40px\",\r\n },\r\n badge: {\r\n marginLeft: theme.spacing(1),\r\n height: 17,\r\n },\r\n orderSelect: {\r\n textAlign: \"right\",\r\n marginTop: 5,\r\n },\r\n});\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n };\r\n};\r\n\r\nclass MyShareCompoment extends Component {\r\n state = {\r\n page: 1,\r\n total: 0,\r\n shareList: [],\r\n showPwd: null,\r\n orderBy: \"created_at DESC\",\r\n };\r\n\r\n componentDidMount = () => {\r\n this.loadList(1, this.state.orderBy);\r\n };\r\n\r\n showPwd = (pwd) => {\r\n this.setState({ showPwd: pwd });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ showPwd: null });\r\n };\r\n\r\n removeShare = (id) => {\r\n API.delete(\"/share/\" + id)\r\n .then(() => {\r\n let oldList = this.state.shareList;\r\n oldList = oldList.filter((value) => {\r\n return value.key !== id;\r\n });\r\n this.setState({\r\n shareList: oldList,\r\n total: this.state.total - 1,\r\n });\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"share.shareCanceled\"),\r\n \"success\"\r\n );\r\n if (oldList.length === 0) {\r\n this.loadList(1, this.state.orderBy);\r\n }\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n });\r\n };\r\n\r\n changePermission = (id) => {\r\n const newPwd = Math.random().toString(36).substr(2).slice(2, 8);\r\n const oldList = this.state.shareList;\r\n const shareIndex = oldList.findIndex((value) => {\r\n return value.key === id;\r\n });\r\n API.patch(\"/share/\" + id, {\r\n prop: \"password\",\r\n value: oldList[shareIndex].password === \"\" ? newPwd : \"\",\r\n })\r\n .then((response) => {\r\n oldList[shareIndex].password = response.data;\r\n this.setState({\r\n shareList: oldList,\r\n });\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n });\r\n };\r\n\r\n changePreviewOption = (id) => {\r\n const oldList = this.state.shareList;\r\n const shareIndex = oldList.findIndex((value) => {\r\n return value.key === id;\r\n });\r\n API.patch(\"/share/\" + id, {\r\n prop: \"preview_enabled\",\r\n value: oldList[shareIndex].preview ? \"false\" : \"true\",\r\n })\r\n .then((response) => {\r\n oldList[shareIndex].preview = response.data;\r\n this.setState({\r\n shareList: oldList,\r\n });\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n });\r\n };\r\n\r\n loadList = (page, orderBy) => {\r\n const order = orderBy.split(\" \");\r\n API.get(\r\n \"/share?page=\" +\r\n page +\r\n \"&order_by=\" +\r\n order[0] +\r\n \"&order=\" +\r\n order[1]\r\n )\r\n .then((response) => {\r\n this.setState({\r\n total: response.data.total,\r\n shareList: response.data.items,\r\n });\r\n })\r\n .catch(() => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"share.listLoadingError\"),\r\n \"error\"\r\n );\r\n });\r\n };\r\n\r\n handlePageChange = (event, value) => {\r\n this.setState({\r\n page: value,\r\n });\r\n this.loadList(value, this.state.orderBy);\r\n };\r\n\r\n handleOrderChange = (event) => {\r\n this.setState({\r\n orderBy: event.target.value,\r\n });\r\n this.loadList(this.state.page, event.target.value);\r\n };\r\n\r\n isExpired = (share) => {\r\n return share.expire < -1 || share.remain_downloads === 0;\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {t(\"share.sharedFiles\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"share.createdAtDesc\")}\r\n \r\n \r\n {t(\"share.createdAtAsc\")}\r\n \r\n \r\n {t(\"share.downloadsDesc\")}\r\n \r\n \r\n {t(\"share.downloadsAsc\")}\r\n \r\n \r\n {t(\"share.viewsDesc\")}\r\n \r\n \r\n {t(\"share.viewsAsc\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.shareList.length === 0 && (\r\n \r\n )}\r\n {this.state.shareList.map((value) => (\r\n \r\n \r\n \r\n {!value.is_dir && (\r\n \r\n )}{\" \"}\r\n {value.is_dir && (\r\n \r\n \r\n \r\n )}\r\n
\r\n }\r\n title={\r\n \r\n \r\n {value.source\r\n ? value.source.name\r\n : t(\"share.sourceNotFound\")}\r\n \r\n \r\n }\r\n subheader={\r\n \r\n {formatLocalTime(value.create_date)}\r\n {this.isExpired(value) && (\r\n \r\n )}\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n this.props.history.push(\r\n \"/s/\" +\r\n value.key +\r\n (value.password === \"\"\r\n ? \"\"\r\n : \"?password=\" +\r\n value.password)\r\n )\r\n }\r\n >\r\n \r\n \r\n {\" \"}\r\n {value.password !== \"\" && (\r\n <>\r\n \r\n this.changePermission(\r\n value.key\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n this.showPwd(value.password)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {value.password === \"\" && (\r\n \r\n this.changePermission(value.key)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n this.changePreviewOption(value.key)\r\n }\r\n >\r\n \r\n \r\n }\r\n offIcon={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n this.removeShare(value.key)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n \r\n
{\" \"}\r\n \r\n {t(\"share.sharePassword\")} {\" \"}\r\n \r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst MyShare = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(MyShareCompoment))));\r\n\r\nexport default MyShare;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Button,\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n makeStyles,\r\n} from \"@material-ui/core\";\r\nimport FormGroup from \"@material-ui/core/FormGroup\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n contentFix: {\r\n padding: \"10px 24px 0px 24px\",\r\n },\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: \"relative\",\r\n },\r\n buttonProgress: {\r\n color: theme.palette.secondary.light,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n content: {\r\n padding: 0,\r\n },\r\n}));\r\n\r\nexport default function SelectFileDialog(props) {\r\n const { t } = useTranslation();\r\n const [files, setFiles] = useState(props.files);\r\n\r\n useEffect(() => {\r\n setFiles(props.files);\r\n }, [props.files]);\r\n\r\n const handleChange = (index) => (event) => {\r\n const filesCopy = [...files];\r\n // eslint-disable-next-line\r\n filesCopy.map((v, k) => {\r\n if (v.index === index) {\r\n filesCopy[k] = {\r\n ...filesCopy[k],\r\n selected: event.target.checked ? \"true\" : \"false\",\r\n };\r\n }\r\n });\r\n setFiles(filesCopy);\r\n };\r\n\r\n const submit = () => {\r\n const index = [];\r\n // eslint-disable-next-line\r\n files.map((v) => {\r\n if (v.selected === \"true\") {\r\n index.push(parseInt(v.index));\r\n }\r\n });\r\n props.onSubmit(index);\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {t(\"download.selectDownloadingFile\")}\r\n \r\n \r\n {files.map((v, k) => {\r\n return (\r\n \r\n \r\n \r\n }\r\n label={v.path}\r\n />\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n
\r\n \r\n {t(\"ok\", { ns: \"common\" })}\r\n {props.modalsLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import {\r\n Card,\r\n CardContent,\r\n darken,\r\n IconButton,\r\n lighten,\r\n LinearProgress,\r\n makeStyles,\r\n Typography,\r\n useTheme,\r\n} from \"@material-ui/core\";\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\r\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\r\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { ExpandMore, HighlightOff } from \"@material-ui/icons\";\r\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\r\nimport classNames from \"classnames\";\r\nimport React, { useCallback, useEffect } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport TimeAgo from \"timeago-react\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport API from \"../../middleware/Api\";\r\nimport { hex2bin, sizeToString } from \"../../utils\";\r\nimport TypeIcon from \"../FileManager/TypeIcon\";\r\nimport SelectFileDialog from \"../Modals/SelectFile\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useTranslation } from \"react-i18next\";\r\nconst ExpansionPanel = withStyles({\r\n root: {\r\n maxWidth: \"100%\",\r\n boxShadow: \"none\",\r\n \"&:not(:last-child)\": {\r\n borderBottom: 0,\r\n },\r\n \"&:before\": {\r\n display: \"none\",\r\n },\r\n \"&$expanded\": {},\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanel);\r\n\r\nconst ExpansionPanelSummary = withStyles({\r\n root: {\r\n minHeight: 0,\r\n padding: 0,\r\n\r\n \"&$expanded\": {\r\n minHeight: 56,\r\n },\r\n },\r\n content: {\r\n maxWidth: \"100%\",\r\n margin: 0,\r\n display: \"flex\",\r\n \"&$expanded\": {\r\n margin: \"0\",\r\n },\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanelSummary);\r\n\r\nconst ExpansionPanelDetails = withStyles((theme) => ({\r\n root: {\r\n display: \"block\",\r\n padding: theme.spacing(0),\r\n },\r\n}))(MuiExpansionPanelDetails);\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n card: {\r\n marginTop: \"20px\",\r\n justifyContent: \"space-between\",\r\n },\r\n iconContainer: {\r\n width: \"90px\",\r\n height: \"96px\",\r\n padding: \" 35px 29px 29px 29px\",\r\n paddingLeft: \"35px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n content: {\r\n width: \"100%\",\r\n minWidth: 0,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n borderInlineStart: \"1px \" + theme.palette.divider + \" solid\",\r\n },\r\n },\r\n contentSide: {\r\n minWidth: 0,\r\n paddingTop: \"24px\",\r\n paddingRight: \"28px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n iconBig: {\r\n fontSize: \"30px\",\r\n },\r\n iconMultiple: {\r\n fontSize: \"30px\",\r\n color: \"#607D8B\",\r\n },\r\n progress: {\r\n marginTop: 8,\r\n marginBottom: 4,\r\n },\r\n expand: {\r\n transition: \".15s transform ease-in-out\",\r\n },\r\n expanded: {\r\n transform: \"rotate(180deg)\",\r\n },\r\n subFileName: {\r\n display: \"flex\",\r\n },\r\n subFileIcon: {\r\n marginRight: \"20px\",\r\n },\r\n scroll: {\r\n overflowY: \"auto\",\r\n },\r\n action: {\r\n padding: theme.spacing(2),\r\n textAlign: \"right\",\r\n },\r\n actionButton: {\r\n marginLeft: theme.spacing(1),\r\n },\r\n info: {\r\n padding: theme.spacing(2),\r\n },\r\n infoTitle: {\r\n fontWeight: 700,\r\n },\r\n infoValue: {\r\n color: theme.palette.text.secondary,\r\n },\r\n bitmap: {\r\n width: \"100%\",\r\n height: \"50px\",\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n}));\r\n\r\nexport default function DownloadingCard(props) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"download\" });\r\n const { t: tGlobal } = useTranslation();\r\n const canvasRef = React.createRef();\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const history = useHistory();\r\n\r\n const [expanded, setExpanded] = React.useState(\"\");\r\n const [task, setTask] = React.useState(props.task);\r\n const [loading, setLoading] = React.useState(false);\r\n const [selectDialogOpen, setSelectDialogOpen] = React.useState(false);\r\n const [selectFileOption, setSelectFileOption] = React.useState([]);\r\n\r\n const handleChange = (panel) => (event, newExpanded) => {\r\n setExpanded(newExpanded ? panel : false);\r\n };\r\n\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n setTask(props.task);\r\n }, [props.task]);\r\n\r\n useEffect(() => {\r\n if (task.info.bitfield === \"\") {\r\n return;\r\n }\r\n let result = \"\";\r\n task.info.bitfield.match(/.{1,2}/g).forEach((str) => {\r\n result += hex2bin(str);\r\n });\r\n const canvas = canvasRef.current;\r\n const context = canvas.getContext(\"2d\");\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n context.strokeStyle = theme.palette.primary.main;\r\n for (let i = 0; i < canvas.width; i++) {\r\n let bit =\r\n result[\r\n Math.round(((i + 1) / canvas.width) * task.info.numPieces)\r\n ];\r\n bit = bit ? bit : result.slice(-1);\r\n if (bit === \"1\") {\r\n context.beginPath();\r\n context.moveTo(i, 0);\r\n context.lineTo(i, canvas.height);\r\n context.stroke();\r\n }\r\n }\r\n // eslint-disable-next-line\r\n }, [task.info.bitfield, task.info.numPieces, theme]);\r\n\r\n const getPercent = (completed, total) => {\r\n if (total === 0) {\r\n return 0;\r\n }\r\n return (completed / total) * 100;\r\n };\r\n\r\n const activeFiles = useCallback(() => {\r\n return task.info.files.filter((v) => v.selected === \"true\");\r\n }, [task.info.files]);\r\n\r\n const deleteFile = (index) => {\r\n setLoading(true);\r\n const current = activeFiles();\r\n const newIndex = [];\r\n const newFiles = [];\r\n // eslint-disable-next-line\r\n current.map((v) => {\r\n if (v.index !== index && v.selected) {\r\n newIndex.push(parseInt(v.index));\r\n newFiles.push({\r\n ...v,\r\n selected: \"true\",\r\n });\r\n } else {\r\n newFiles.push({\r\n ...v,\r\n selected: \"false\",\r\n });\r\n }\r\n });\r\n API.put(\"/aria2/select/\" + task.info.gid, {\r\n indexes: newIndex,\r\n })\r\n .then(() => {\r\n setTask({\r\n ...task,\r\n info: {\r\n ...task.info,\r\n files: newFiles,\r\n },\r\n });\r\n ToggleSnackbar(\"top\", \"right\", t(\"taskFileDeleted\"), \"success\");\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n })\r\n .then(() => {\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const getDownloadName = useCallback(() => {\r\n if (task.info.bittorrent.info.name !== \"\") {\r\n return task.info.bittorrent.info.name;\r\n }\r\n return task.name === \".\" ? t(\"unknownTaskName\") : task.name;\r\n }, [task]);\r\n\r\n const getIcon = useCallback(() => {\r\n if (task.info.bittorrent.mode === \"multi\") {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n // eslint-disable-next-line\r\n }, [task, classes]);\r\n\r\n const cancel = () => {\r\n setLoading(true);\r\n API.delete(\"/aria2/task/\" + task.info.gid)\r\n .then(() => {\r\n ToggleSnackbar(\"top\", \"right\", t(\"taskCanceled\"), \"success\");\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n })\r\n .then(() => {\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const changeSelectedFile = (fileIndex) => {\r\n setLoading(true);\r\n API.put(\"/aria2/select/\" + task.info.gid, {\r\n indexes: fileIndex,\r\n })\r\n .then(() => {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"operationSubmitted\"),\r\n \"success\"\r\n );\r\n setSelectDialogOpen(false);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n })\r\n .then(() => {\r\n setLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n setSelectDialogOpen(false)}\r\n modalsLoading={loading}\r\n files={selectFileOption}\r\n onSubmit={changeSelectedFile}\r\n />\r\n \r\n \r\n
{getIcon()}
\r\n \r\n \r\n \r\n {getDownloadName()}\r\n \r\n \r\n \r\n \r\n {task.total > 0 && (\r\n \r\n {getPercent(\r\n task.downloaded,\r\n task.total\r\n ).toFixed(2)}\r\n % -{\" \"}\r\n {task.downloaded === 0\r\n ? \"0Bytes\"\r\n : sizeToString(task.downloaded)}\r\n /\r\n {task.total === 0\r\n ? \"0Bytes\"\r\n : sizeToString(task.total)}{\" \"}\r\n -{\" \"}\r\n {task.speed === \"0\"\r\n ? \"0B/s\"\r\n : sizeToString(task.speed) + \"/s\"}\r\n \r\n )}\r\n {task.total === 0 && - }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {task.info.bittorrent.mode === \"multi\" && (\r\n
\r\n \r\n \r\n {activeFiles().map((value) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {value.path}\r\n \r\n \r\n \r\n \r\n {\" \"}\r\n {sizeToString(\r\n value.length\r\n )}\r\n \r\n \r\n \r\n \r\n {getPercent(\r\n value.completedLength,\r\n value.length\r\n ).toFixed(2)}\r\n %\r\n \r\n \r\n \r\n \r\n \r\n deleteFile(\r\n value.index\r\n )\r\n }\r\n disabled={loading}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n
\r\n )}\r\n\r\n
\r\n \r\n history.push(\r\n \"/home?path=\" + encodeURIComponent(task.dst)\r\n )\r\n }\r\n >\r\n {t(\"openDstFolder\")}\r\n \r\n {task.info.bittorrent.mode === \"multi\" && (\r\n {\r\n setSelectDialogOpen(true);\r\n setSelectFileOption([\r\n ...props.task.info.files,\r\n ]);\r\n }}\r\n >\r\n {t(\"selectDownloadingFile\")}\r\n \r\n )}\r\n \r\n {t(\"cancelTask\")}\r\n \r\n
\r\n \r\n
\r\n {task.info.bitfield !== \"\" && (\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n {t(\"updatedAt\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"uploaded\")}\r\n \r\n \r\n {sizeToString(task.info.uploadLength)}\r\n \r\n \r\n \r\n \r\n {t(\"uploadSpeed\")}\r\n \r\n \r\n {sizeToString(task.info.uploadSpeed)} / s\r\n \r\n \r\n {task.info.bittorrent.mode !== \"\" && (\r\n <>\r\n \r\n \r\n {t(\"InfoHash\")}\r\n \r\n \r\n {task.info.infoHash}\r\n \r\n \r\n \r\n \r\n {t(\"seederCount\")}\r\n \r\n \r\n {task.info.numSeeders}\r\n \r\n \r\n \r\n \r\n {t(\"seeding\")}\r\n \r\n \r\n {task.info.seeder === \"true\"\r\n ? t(\"isSeeding\")\r\n : t(\"notSeeding\")}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {t(\"chunkSize\")}\r\n \r\n \r\n {sizeToString(task.info.pieceLength)}\r\n \r\n \r\n \r\n \r\n {t(\"chunkNumbers\")}\r\n \r\n \r\n {task.info.numPieces}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport {\r\n Card,\r\n CardContent,\r\n IconButton,\r\n makeStyles,\r\n Typography,\r\n useTheme,\r\n} from \"@material-ui/core\";\r\nimport { sizeToString } from \"../../utils\";\r\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\r\nimport TypeIcon from \"../FileManager/TypeIcon\";\r\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\r\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\r\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport { ExpandMore } from \"@material-ui/icons\";\r\nimport classNames from \"classnames\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport API from \"../../middleware/Api\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { formatLocalTime } from \"../../utils/datetime\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst ExpansionPanel = withStyles({\r\n root: {\r\n maxWidth: \"100%\",\r\n boxShadow: \"none\",\r\n \"&:not(:last-child)\": {\r\n borderBottom: 0,\r\n },\r\n \"&:before\": {\r\n display: \"none\",\r\n },\r\n \"&$expanded\": {},\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanel);\r\n\r\nconst ExpansionPanelSummary = withStyles({\r\n root: {\r\n minHeight: 0,\r\n padding: 0,\r\n\r\n \"&$expanded\": {\r\n minHeight: 56,\r\n },\r\n },\r\n content: {\r\n maxWidth: \"100%\",\r\n margin: 0,\r\n display: \"flex\",\r\n \"&$expanded\": {\r\n margin: \"0\",\r\n },\r\n },\r\n expanded: {},\r\n})(MuiExpansionPanelSummary);\r\n\r\nconst ExpansionPanelDetails = withStyles((theme) => ({\r\n root: {\r\n display: \"block\",\r\n padding: theme.spacing(0),\r\n },\r\n}))(MuiExpansionPanelDetails);\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n card: {\r\n marginTop: \"20px\",\r\n justifyContent: \"space-between\",\r\n },\r\n iconContainer: {\r\n width: \"90px\",\r\n height: \"96px\",\r\n padding: \" 35px 29px 29px 29px\",\r\n paddingLeft: \"35px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n content: {\r\n width: \"100%\",\r\n minWidth: 0,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n borderInlineStart: \"1px \" + theme.palette.divider + \" solid\",\r\n },\r\n textAlign: \"left\",\r\n },\r\n contentSide: {\r\n minWidth: 0,\r\n paddingTop: \"24px\",\r\n paddingRight: \"28px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n iconBig: {\r\n fontSize: \"30px\",\r\n },\r\n iconMultiple: {\r\n fontSize: \"30px\",\r\n color: \"#607D8B\",\r\n },\r\n progress: {\r\n marginTop: 8,\r\n marginBottom: 4,\r\n },\r\n expand: {\r\n transition: \".15s transform ease-in-out\",\r\n },\r\n expanded: {\r\n transform: \"rotate(180deg)\",\r\n },\r\n subFileName: {\r\n display: \"flex\",\r\n },\r\n subFileIcon: {\r\n marginRight: \"20px\",\r\n },\r\n scroll: {\r\n overflowY: \"auto\",\r\n },\r\n action: {\r\n padding: theme.spacing(2),\r\n textAlign: \"right\",\r\n },\r\n actionButton: {\r\n marginLeft: theme.spacing(1),\r\n },\r\n info: {\r\n padding: theme.spacing(2),\r\n },\r\n infoTitle: {\r\n fontWeight: 700,\r\n },\r\n infoValue: {\r\n color: theme.palette.text.secondary,\r\n },\r\n}));\r\n\r\nexport default function FinishedCard(props) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"download\" });\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const history = useHistory();\r\n\r\n const [expanded, setExpanded] = React.useState(false);\r\n const [loading, setLoading] = React.useState(false);\r\n\r\n const dispatch = useDispatch();\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n const handleChange = () => (event, newExpanded) => {\r\n setExpanded(!!newExpanded);\r\n };\r\n\r\n const getPercent = (completed, total) => {\r\n if (total === 0) {\r\n return 0;\r\n }\r\n return (completed / total) * 100;\r\n };\r\n\r\n const cancel = () => {\r\n setLoading(true);\r\n API.delete(\"/aria2/task/\" + props.task.gid)\r\n .then(() => {\r\n ToggleSnackbar(\"top\", \"right\", t(\"taskDeleted\"), \"success\");\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n })\r\n .then(() => {\r\n window.location.reload();\r\n });\r\n };\r\n\r\n const getDownloadName = useCallback(() => {\r\n return props.task.name === \".\" ? t(\"unknownTaskName\") : props.task.name;\r\n }, [props.task.name]);\r\n\r\n const activeFiles = useCallback(() => {\r\n return props.task.files.filter((v) => v.selected === \"true\");\r\n }, [props.task.files]);\r\n\r\n const getIcon = useCallback(() => {\r\n if (props.task.files.length > 1) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }, [props.task, classes]);\r\n\r\n const getTaskError = (error) => {\r\n try {\r\n const res = JSON.parse(error);\r\n return res.msg + \":\" + res.error;\r\n } catch (e) {\r\n return t(\"transferFailed\");\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
{getIcon()}
\r\n \r\n \r\n \r\n {getDownloadName()}\r\n \r\n \r\n {props.task.status === 3 && (\r\n \r\n \r\n {t(\"downloadFailed\", {\r\n msg: props.task.error,\r\n })}\r\n \r\n \r\n )}\r\n {props.task.status === 5 && (\r\n \r\n {t(\"canceledStatus\")}\r\n {props.task.error !== \"\" && (\r\n ({props.task.error})\r\n )}\r\n \r\n )}\r\n {props.task.status === 4 &&\r\n props.task.task_status === 4 && (\r\n \r\n {t(\"finishedStatus\")}\r\n \r\n )}\r\n {props.task.status === 4 &&\r\n props.task.task_status === 0 && (\r\n \r\n {t(\"transferring\")}\r\n \r\n )}\r\n {props.task.status === 4 &&\r\n props.task.task_status === 1 && (\r\n \r\n {t(\"transferring\")}\r\n \r\n )}\r\n {props.task.status === 4 &&\r\n props.task.task_status === 2 && (\r\n \r\n {getTaskError(props.task.task_error)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.task.files.length > 1 && (\r\n
\r\n \r\n \r\n {activeFiles().map((value) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {value.path}\r\n \r\n \r\n \r\n \r\n {\" \"}\r\n {sizeToString(\r\n value.length\r\n )}\r\n \r\n \r\n \r\n \r\n {getPercent(\r\n value.completedLength,\r\n value.length\r\n ).toFixed(2)}\r\n %\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n
\r\n )}\r\n\r\n
\r\n \r\n history.push(\r\n \"/#/home?path=\" +\r\n encodeURIComponent(props.task.dst)\r\n )\r\n }\r\n >\r\n {t(\"openDstFolder\")}\r\n \r\n \r\n {t(\"deleteRecord\")}\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {t(\"createdAt\")}\r\n \r\n \r\n {formatLocalTime(props.task.create)}\r\n \r\n \r\n \r\n \r\n {t(\"updatedAt\")}\r\n \r\n \r\n {formatLocalTime(props.task.update)}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import React, { useCallback } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport AutoHidden from \"./AutoHidden\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport Fab from \"@material-ui/core/Fab\";\r\nimport { Add } from \"@material-ui/icons\";\r\nimport Modals from \"../FileManager/Modals\";\r\nimport { openRemoteDownloadDialog } from \"../../redux/explorer\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n fab: {\r\n margin: 0,\r\n top: \"auto\",\r\n right: 20,\r\n bottom: 20,\r\n left: \"auto\",\r\n zIndex: 5,\r\n position: \"fixed\",\r\n },\r\n}));\r\n\r\nexport default function RemoteDownloadButton() {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n\r\n const OpenRemoteDownloadDialog = useCallback(\r\n () => dispatch(openRemoteDownloadDialog()),\r\n [dispatch]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n OpenRemoteDownloadDialog()}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { Button, IconButton, Typography, withStyles } from \"@material-ui/core\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport API from \"../../middleware/Api\";\r\nimport DownloadingCard from \"./DownloadingCard\";\r\nimport FinishedCard from \"./FinishedCard\";\r\nimport RemoteDownloadButton from \"../Dial/Aria2\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport Nothing from \"../Placeholder/Nothing\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst styles = (theme) => ({\r\n actions: {\r\n display: \"flex\",\r\n },\r\n title: {\r\n marginTop: \"20px\",\r\n },\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"30px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 700,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n },\r\n shareTitle: {\r\n maxWidth: \"200px\",\r\n },\r\n avatarFile: {\r\n backgroundColor: theme.palette.primary.light,\r\n },\r\n avatarFolder: {\r\n backgroundColor: theme.palette.secondary.light,\r\n },\r\n gird: {\r\n marginTop: \"30px\",\r\n },\r\n hide: {\r\n display: \"none\",\r\n },\r\n loadingAnimation: {\r\n borderRadius: \"6px 6px 0 0\",\r\n },\r\n shareFix: {\r\n marginLeft: \"20px\",\r\n },\r\n loadMore: {\r\n textAlign: \"center\",\r\n marginTop: \"20px\",\r\n marginBottom: \"20px\",\r\n },\r\n margin: {\r\n marginTop: theme.spacing(2),\r\n },\r\n});\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n };\r\n};\r\n\r\nclass DownloadComponent extends Component {\r\n page = 0;\r\n interval = 0;\r\n previousDownloading = -1;\r\n\r\n state = {\r\n downloading: [],\r\n loading: false,\r\n finishedList: [],\r\n continue: true,\r\n };\r\n\r\n componentDidMount = () => {\r\n this.loadDownloading();\r\n };\r\n\r\n componentWillUnmount() {\r\n clearTimeout(this.interval);\r\n }\r\n\r\n loadDownloading = () => {\r\n this.setState({\r\n loading: true,\r\n });\r\n API.get(\"/aria2/downloading\")\r\n .then((response) => {\r\n this.setState({\r\n downloading: response.data,\r\n loading: false,\r\n });\r\n // 设定自动更新\r\n clearTimeout(this.interval);\r\n if (response.data.length > 0) {\r\n this.interval = setTimeout(\r\n this.loadDownloading,\r\n 1000 *\r\n response.data.reduce(function (prev, current) {\r\n return prev.interval < current.interval\r\n ? prev\r\n : current;\r\n }).interval\r\n );\r\n }\r\n\r\n // 下载中条目变更时刷新已完成列表\r\n if (response.data.length !== this.previousDownloading) {\r\n this.page = 0;\r\n this.setState({\r\n finishedList: [],\r\n continue: true,\r\n });\r\n this.loadMore();\r\n }\r\n this.previousDownloading = response.data.length;\r\n })\r\n .catch((error) => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n });\r\n };\r\n\r\n loadMore = () => {\r\n this.setState({\r\n loading: true,\r\n });\r\n API.get(\"/aria2/finished?page=\" + ++this.page)\r\n .then((response) => {\r\n this.setState({\r\n finishedList: [\r\n ...this.state.finishedList,\r\n ...response.data,\r\n ],\r\n loading: false,\r\n continue: response.data.length >= 10,\r\n });\r\n })\r\n .catch(() => {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"download.failedToLoad\"),\r\n \"error\"\r\n );\r\n this.setState({\r\n loading: false,\r\n });\r\n });\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n const user = Auth.GetUser();\r\n\r\n return (\r\n
\r\n {user.group.allowRemoteDownload && }\r\n \r\n {t(\"download.active\")}\r\n \r\n \r\n \r\n \r\n {this.state.downloading.length === 0 && (\r\n \r\n )}\r\n {this.state.downloading.map((value, k) => (\r\n \r\n ))}\r\n \r\n {t(\"download.finished\")}\r\n \r\n
\r\n {this.state.finishedList.length === 0 && (\r\n \r\n )}\r\n {this.state.finishedList.map((value, k) => {\r\n if (value.files) {\r\n return ;\r\n }\r\n return null;\r\n })}\r\n \r\n {t(\"download.loadMore\")}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst Download = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withTranslation()(DownloadComponent)));\r\n\r\nexport default Download;\r\n","import React from \"react\";\r\nimport { Facebook } from \"react-content-loader\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n loader: {\r\n width: \"80%\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: \" 50%\",\r\n },\r\n\r\n marginTop: 30,\r\n },\r\n}));\r\n\r\nconst MyLoader = (props) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nfunction PageLoading() {\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PageLoading;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport {\r\n Avatar,\r\n Button,\r\n Card,\r\n CardActions,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n TextField,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport { withRouter } from \"react-router\";\r\nimport { formatLocalTime } from \"../../utils/datetime\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nconst styles = (theme) => ({\r\n card: {\r\n maxWidth: 400,\r\n margin: \"0 auto\",\r\n },\r\n actions: {\r\n display: \"flex\",\r\n },\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"110px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n },\r\n continue: {\r\n marginLeft: \"auto\",\r\n marginRight: \"10px\",\r\n marginRottom: \"10px\",\r\n },\r\n});\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n };\r\n};\r\n\r\nclass LockedFileCompoment extends Component {\r\n constructor(props) {\r\n super(props);\r\n const query = new URLSearchParams(this.props.location.search);\r\n this.state = {\r\n pwd: query.get(\"password\"),\r\n };\r\n }\r\n\r\n handleChange = (name) => (event) => {\r\n this.setState({ [name]: event.target.value });\r\n };\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if (this.state.pwd === \"\") {\r\n return;\r\n }\r\n this.props.setPassowrd(this.state.pwd);\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n }\r\n title={t(\"share.privateShareTitle\", {\r\n nick: this.props.share.creator.nick,\r\n })}\r\n subheader={formatLocalTime(\r\n this.props.share.create_date\r\n )}\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {t(\"share.continue\")}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst LockedFile = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(LockedFileCompoment))));\r\n\r\nexport default LockedFile;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { Avatar, Typography } from \"@material-ui/core\";\r\nimport { useHistory } from \"react-router\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport { formatLocalTime } from \"../../utils/datetime\";\r\nimport { Trans, useTranslation } from \"react-i18next\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n boxHeader: {\r\n textAlign: \"center\",\r\n padding: 24,\r\n },\r\n avatar: {\r\n backgroundColor: theme.palette.secondary.main,\r\n margin: \"0 auto\",\r\n width: 50,\r\n height: 50,\r\n cursor: \"pointer\",\r\n },\r\n shareDes: {\r\n marginTop: 12,\r\n },\r\n shareInfo: {\r\n color: theme.palette.text.disabled,\r\n fontSize: 14,\r\n },\r\n}));\r\n\r\nexport default function Creator(props) {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"share\" });\r\n const classes = useStyles();\r\n const history = useHistory();\r\n \r\n const getSecondDes = () => {\r\n if (props.share.expire > 0) {\r\n if (props.share.expire >= 24 * 3600) {\r\n return t(\"expireInXDays\", {\r\n num: Math.round(props.share.expire / (24 * 3600)),\r\n });\r\n }\r\n\r\n return t(\"expireInXHours\", {\r\n num: Math.round(props.share.expire / 3600),\r\n });\r\n }\r\n return formatLocalTime(props.share.create_date);\r\n };\r\n\r\n const userProfile = () => {\r\n history.push(\"/profile/\" + props.share.creator.key);\r\n props.onClose && props.onClose();\r\n };\r\n return (\r\n \r\n
\r\n userProfile()}\r\n />\r\n \r\n {props.isFolder && (\r\n userProfile()}\r\n href={\"javascript:void(0)\"}\r\n color=\"inherit\"\r\n />,\r\n ]}\r\n />\r\n )}\r\n {!props.isFolder && (\r\n userProfile()}\r\n href={\"javascript:void(0)\"}\r\n color=\"inherit\"\r\n />,\r\n ]}\r\n />\r\n )}\r\n \r\n \r\n {t(\"statistics\", {\r\n views: props.share.views,\r\n downloads: props.share.downloads,\r\n time: getSecondDes(),\r\n })}\r\n \r\n
\r\n );\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { sizeToString, vhCheck } from \"../../utils\";\r\nimport { isPreviewable } from \"../../config\";\r\nimport { Button, Typography, withStyles } from \"@material-ui/core\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport TypeIcon from \"../FileManager/TypeIcon\";\r\nimport Auth from \"../../middleware/Auth\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Creator from \"./Creator\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport {\r\n openMusicDialog,\r\n openResaveDialog,\r\n setSelectedTarget,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { startDownload } from \"../../redux/explorer/action\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nvhCheck();\r\nconst styles = (theme) => ({\r\n layout: {\r\n width: \"auto\",\r\n marginTop: \"90px\",\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginTop: \"90px\",\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginTop: 0,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n justifyContent: \"center\",\r\n display: \"flex\",\r\n },\r\n player: {\r\n borderRadius: \"4px\",\r\n },\r\n fileCotainer: {\r\n width: \"200px\",\r\n margin: \"0 auto\",\r\n },\r\n buttonCotainer: {\r\n width: \"400px\",\r\n margin: \"0 auto\",\r\n textAlign: \"center\",\r\n marginTop: \"20px\",\r\n },\r\n paper: {\r\n padding: theme.spacing(2),\r\n },\r\n icon: {\r\n borderRadius: \"10%\",\r\n marginTop: 2,\r\n },\r\n\r\n box: {\r\n width: \"100%\",\r\n maxWidth: 440,\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: 12,\r\n boxShadow: \"0 8px 16px rgba(29,39,55,.25)\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n height: \"calc(var(--vh, 100vh) - 56px)\",\r\n borderRadius: 0,\r\n maxWidth: 1000,\r\n },\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n boxContent: {\r\n padding: 24,\r\n display: \"flex\",\r\n flex: \"1\",\r\n },\r\n fileName: {\r\n marginLeft: 20,\r\n },\r\n fileSize: {\r\n color: theme.palette.text.disabled,\r\n fontSize: 14,\r\n },\r\n boxFooter: {\r\n display: \"flex\",\r\n padding: \"20px 16px\",\r\n justifyContent: \"space-between\",\r\n },\r\n downloadButton: {\r\n marginLeft: 8,\r\n },\r\n});\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n openMusicDialog: () => {\r\n dispatch(openMusicDialog());\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n openResave: (key) => {\r\n dispatch(openResaveDialog(key));\r\n },\r\n startDownload: (share, file) => {\r\n dispatch(startDownload(share, file));\r\n },\r\n };\r\n};\r\n\r\nconst Modals = React.lazy(() => import(\"../FileManager/Modals\"));\r\nconst ImgPreview = React.lazy(() => import(\"../FileManager/ImgPreview\"));\r\n\r\nclass SharedFileCompoment extends Component {\r\n state = {\r\n anchorEl: null,\r\n open: false,\r\n purchaseCallback: null,\r\n loading: false,\r\n };\r\n\r\n downloaded = false;\r\n\r\n // TODO merge into react thunk\r\n preview = () => {\r\n if (pathHelper.isSharePage(this.props.location.pathname)) {\r\n const user = Auth.GetUser();\r\n if (!Auth.Check() && user && !user.group.shareDownload) {\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"share.pleaseLogin\"),\r\n \"warning\"\r\n );\r\n return;\r\n }\r\n }\r\n\r\n switch (isPreviewable(this.props.share.source.name)) {\r\n case \"img\":\r\n this.props.showImgPreivew({\r\n key: this.props.share.key,\r\n name: this.props.share.source.name,\r\n });\r\n return;\r\n case \"msDoc\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/doc?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"audio\":\r\n this.props.setSelectedTarget([\r\n {\r\n key: this.props.share.key,\r\n type: \"share\",\r\n },\r\n ]);\r\n this.props.openMusicDialog();\r\n return;\r\n case \"video\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/video?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"edit\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/text?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"pdf\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/pdf?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"code\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/code?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n case \"epub\":\r\n this.props.history.push(\r\n this.props.share.key +\r\n \"/epub?name=\" +\r\n encodeURIComponent(this.props.share.source.name)\r\n );\r\n return;\r\n default:\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n this.props.t(\"share.cannotShare\"),\r\n \"warning\"\r\n );\r\n return;\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.setSelectedTarget([]);\r\n }\r\n\r\n scoreHandle = (callback) => (event) => {\r\n callback(event);\r\n };\r\n\r\n download = () => {\r\n this.props.startDownload(this.props.share, null);\r\n };\r\n\r\n render() {\r\n const { classes, t } = this.props;\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {this.props.share.source.name}\r\n \r\n \r\n {sizeToString(this.props.share.source.size)}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.props.share.preview && (\r\n \r\n {t(\"share.preview\")}\r\n \r\n )}\r\n
\r\n
\r\n \r\n {t(\"fileManager.download\")}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst SharedFile = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(withTranslation()(SharedFileCompoment))));\r\n\r\nexport default SharedFile;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Typography, withStyles } from \"@material-ui/core\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport FileManager from \"../FileManager/FileManager\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Popover from \"@material-ui/core/Popover\";\r\nimport Creator from \"./Creator\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport {\r\n openMusicDialog,\r\n openResaveDialog,\r\n setSelectedTarget,\r\n setShareUserPopover,\r\n showImgPreivew,\r\n toggleSnackbar,\r\n} from \"../../redux/explorer\";\r\nimport { setShareInfo } from \"../../redux/viewUpdate/action\";\r\n\r\nconst styles = (theme) => ({\r\n layout: {\r\n width: \"auto\",\r\n marginTop: 30,\r\n marginBottom: 30,\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\r\n width: 1100,\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginTop: theme.spacing(2),\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n },\r\n },\r\n managerContainer: {\r\n overflowY: \"auto\",\r\n },\r\n});\r\n\r\nconst ReadMe = React.lazy(() => import(\"./ReadMe\"));\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n anchorEl: state.viewUpdate.shareUserPopoverAnchorEl,\r\n fileList: state.explorer.fileList,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n toggleSnackbar: (vertical, horizontal, msg, color) => {\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\r\n },\r\n openMusicDialog: () => {\r\n dispatch(openMusicDialog());\r\n },\r\n setSelectedTarget: (targets) => {\r\n dispatch(setSelectedTarget(targets));\r\n },\r\n showImgPreivew: (first) => {\r\n dispatch(showImgPreivew(first));\r\n },\r\n openResave: (key) => {\r\n dispatch(openResaveDialog(key));\r\n },\r\n setShareUserPopover: (e) => {\r\n dispatch(setShareUserPopover(e));\r\n },\r\n setShareInfo: (s) => {\r\n dispatch(setShareInfo(s));\r\n },\r\n };\r\n};\r\n\r\nclass SharedFolderComponent extends Component {\r\n state = {};\r\n\r\n UNSAFE_componentWillMount() {\r\n this.props.setShareInfo(this.props.share);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.setShareInfo(null);\r\n this.props.setSelectedTarget([]);\r\n }\r\n\r\n handleClickAway = (e) => {\r\n const ignore = e && e.clientY && e.clientY <= 64;\r\n if (!pathHelper.isMobile() && !ignore) {\r\n this.props.setSelectedTarget([]);\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n let readmeShowed = false;\r\n const id = this.props.anchorEl !== null ? \"simple-popover\" : undefined;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {/* eslint-disable-next-line */}\r\n {this.props.fileList.map((value) => {\r\n if (\r\n (value.name.toLowerCase() === \"readme.md\" ||\r\n value.name.toLowerCase() === \"readme.txt\") &&\r\n !readmeShowed\r\n ) {\r\n readmeShowed = true;\r\n return ;\r\n }\r\n })}\r\n this.props.setShareUserPopover(null)}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"center\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"center\",\r\n }}\r\n >\r\n \r\n this.props.setShareUserPopover(null)}\r\n share={this.props.share}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst SharedFolder = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(withRouter(SharedFolderComponent)));\r\n\r\nexport default SharedFolder;\r\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\r\nimport PageLoading from \"../Placeholder/PageLoading\";\r\nimport { useParams } from \"react-router\";\r\nimport API from \"../../middleware/Api\";\r\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Notice from \"./NotFound\";\r\nimport LockedFile from \"./LockedFile\";\r\nimport SharedFile from \"./SharedFile\";\r\nimport SharedFolder from \"./SharedFolder\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport default function SharePreload() {\r\n const { t } = useTranslation(\"application\", { keyPrefix: \"share\" });\r\n const dispatch = useDispatch();\r\n const { id } = useParams();\r\n\r\n const [share, setShare] = useState(undefined);\r\n const [loading, setLoading] = useState(false);\r\n const [password, setPassword] = useState(\"\");\r\n\r\n const SetSubTitle = useCallback(\r\n (title) => dispatch(changeSubTitle(title)),\r\n [dispatch]\r\n );\r\n\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n if (share) {\r\n if (share.locked) {\r\n SetSubTitle(\r\n t(\"privateShareTitle\", { nick: share.creator.nick })\r\n );\r\n if (password !== \"\") {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n t(\"incorrectPassword\"),\r\n \"warning\"\r\n );\r\n }\r\n } else {\r\n SetSubTitle(share.source.name);\r\n }\r\n } else {\r\n SetSubTitle();\r\n }\r\n }, [share, SetSubTitle, ToggleSnackbar]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n SetSubTitle();\r\n };\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n let withPassword = \"\";\r\n if (password !== \"\") {\r\n withPassword = \"?password=\" + password;\r\n }\r\n API.get(\"/share/info/\" + id + withPassword)\r\n .then((response) => {\r\n setShare(response.data);\r\n setLoading(false);\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n if (error.code === 404) {\r\n setShare(null);\r\n } else {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n }\r\n });\r\n }, [id, password, ToggleSnackbar]);\r\n\r\n return (\r\n }>\r\n {share === undefined && }\r\n {share === null && }\r\n {share && share.locked && (\r\n \r\n )}\r\n {share && !share.locked && !share.is_dir && (\r\n \r\n )}\r\n {share && !share.locked && share.is_dir && (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\r\nimport API from \"../../middleware/Api\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport pathHelper from \"../../utils/page\";\r\nimport { toggleSnackbar } from \"../../redux/explorer\";\r\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n layout: {\r\n width: \"auto\",\r\n },\r\n\r\n container: {\r\n border: \"none\",\r\n width: \"100%\",\r\n height: \"calc(100vh - 64px)\",\r\n marginBottom: -10,\r\n },\r\n}));\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nexport default function DocViewer() {\r\n const [url, setURL] = useState(\"\");\r\n const math = useRouteMatch();\r\n const location = useLocation();\r\n const query = useQuery();\r\n const { id } = useParams();\r\n UseFileSubTitle(query, math, location);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const ToggleSnackbar = useCallback(\r\n (vertical, horizontal, msg, color) =>\r\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n let requestURL = \"/file/doc/\" + query.get(\"id\");\r\n if (pathHelper.isSharePage(location.pathname)) {\r\n requestURL = \"/share/doc/\" + id;\r\n if (query.get(\"share_path\") !== \"\") {\r\n requestURL +=\r\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\r\n }\r\n }\r\n API.get(requestURL)\r\n .then((response) => {\r\n setURL(response.data);\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n });\r\n // eslint-disable-next-line\r\n }, [math.params[0], location]);\r\n\r\n const classes = useStyles();\r\n return (\r\n
\r\n {url !== \"\" && (\r\n