{"version":3,"sources":["middleware/Api.js","redux/explorer/action.ts","redux/explorer/reducer.ts","utils/page.js","component/Dial/AutoHidden.js","middleware/Auth.ts","component/Placeholder/TextLoading.js","component/Navbar/DarkModeSwitcher.js","actions/explorer.js","actions/index.js","component/FileManager/Navigator/SubActions.js","component/Modals/Report.js","component/Modals/PurchaseShare.js","component/Modals/Loading.js","component/Modals/Copy.js","component/Modals/CreateShare.js","component/Modals/Decompress.js","component/Modals/Compress.js","component/Modals/Relocate.js","component/FileManager/Modals.js","component/Dial/Save.js","utils/index.js","component/Viewer/Code.js","component/Common/Snackbar.js","component/Navbar/UserAvatarPopover.js","component/Navbar/PolicySwitcher.js","component/Navbar/UserAvatar.js","component/Navbar/Navbar.js","component/Navbar/SearchBar.js","component/Navbar/StorageBar.js","component/Navbar/UserInfo.js","component/Navbar/FileTags.js","utils/datetime.js","component/FileManager/ImgPreview.js","config.js","loader/utils.js","loader/index.js","component/Upload/FileList.js","component/Dial/Create.js","component/Upload/Uploader.js","component/Admin/Common/SizeInput.js","component/FileManager/TypeIcon.js","component/FileManager/PathSelector.js","serviceWorker.js","middleware/AuthRoute.js","component/Placeholder/PageLoading.js","component/Share/NotFound.js","middleware/Init.js","component/Common/ICPFooter.js","component/Common/WxLogin.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","redux/explorer/index.ts","component/FileManager/Navigator/PathButton.js","component/FileManager/Navigator/DropDownItem.js","component/FileManager/Navigator/DropDown.js","component/FileManager/Navigator/Navigator.js","component/FileManager/SmallIcon.js","component/FileManager/FileIcon.js","component/FileManager/Folder.js","component/FileManager/DnD/Preview.js","component/FileManager/DnD/DragLayer.js","component/FileManager/TableRow.js","component/FileManager/DnD/DropWarpper.js","component/FileManager/ObjectIcon.js","component/FileManager/ContextMenu.js","component/FileManager/Explorer.js","component/Placeholder/ListLoading.js","component/FileManager/Sidebar/SideDrawer.js","component/FileManager/FileManager.js","component/Viewer/Video.js","component/Share/SearchResult.js","component/Share/MyShare.js","component/Modals/SelectFile.js","component/Download/DownloadingCard.js","component/Download/FinishedCard.js","component/Dial/Aria2.js","component/Download/Download.js","component/Share/LockedFile.js","component/Share/Creator.js","component/Share/SharedFile.js","component/Share/SharedFolder.js","component/Share/SharePreload.js","component/Viewer/Doc.js","component/Viewer/Text.js","component/VAS/Quota.js","component/VAS/PackSelect.js","component/VAS/JiFenPackSelect.js","component/VAS/BuyQuota.js","component/Modals/CreateWebDAVAccount.js","component/Modals/CreateWebDAVMount.js","component/Setting/WebDAV.js","component/Setting/Tasks.js","component/Admin/Dialogs/Withdrawals.js","component/Setting/Profile.js","component/Setting/WxBind.js","component/Setting/SetWithdrawals.js","component/Setting/Authn.js","component/Modals/TimeZone.js","component/Setting/UserSetting.js","component/Login/QQ.js","component/Login/Register.js","component/Login/Activication.js","component/Login/ResetForm.js","component/Login/Reset.js","component/Login/WxLoginBack.js","component/Modals/SiteNotice.js","component/FileManager/MusicPlayer.js","App.js","redux/viewUpdate/reducer.ts","reducers/index.js","component/Placeholder/ErrorBoundary.js","index.js","redux/combineReducers.ts","redux/viewUpdate/action.ts"],"names":["baseURL","getBaseURL","instance","axios","create","withCredentials","crossDomain","AppError","message","code","error","this","stack","Error","prototype","Object","constructor","interceptors","response","use","rawData","data","undefined","Auth","signout","window","location","href","msg","Promise","reject","setFileList","list","type","setDirList","setSortMethod","method","setSideBar","open","sortMethodFuncs","sizePos","a","b","size","sizeRes","namePos","name","localeCompare","navigator","languages","language","numeric","ignorePunctuation","nameRev","timePos","Date","parse","date","timeRev","updateFileList","dispatch","getState","sortMethod","viewUpdate","dirList","filter","x","fileList","sortFunc","sort","changeSortMethod","explorer","toggleObjectInfoSidebar","closeContextMenu","initState","dndSignal","dndTarget","dndSource","selected","selectProps","isMultiple","withFolder","withFile","lastSelect","file","id","index","shiftSelectedIds","imgPreview","first","other","audioPreview","playingName","paused","isOpen","keywords","fileSave","sideBarOpen","checkSelectedProps","length","forEach","value","state","action","assign","target","source","addedSelected","targets","newSelected","fileIds","filteredSelected","includes","statusHelper","isHomePage","path","isSharePage","startsWith","isAdminPage","isLoginPage","isMobile","innerWidth","AutoHidden","children","enable","useState","hidden","setHidden","prev","scrollY","lastUpdate","useEffect","addEventListener","e","currentTarget","handleNavigation","in","isAuthenticated","authenticate","cb","SetUser","GetUser","JSON","localStorage","getItem","newUser","setItem","stringify","Check","anonymous","oldUser","SetPreference","key","preference","GetPreference","useStyles","makeStyles","theme","loader","width","padding","breakpoints","down","MyLoader","props","backgroundColor","dark","foregroundColor","className","TextLoading","useTheme","classes","palette","icon","color","opacity","DarkModeSwitcher","position","ThemeType","useSelector","siteConfig","useDispatch","ToggleThemeMode","useCallback","toggleDaylightMode","isDayLight","isDark","title","placement","classNames","onClick","removeSelectedTargets","addSelectedTargets","setSelectedTarget","openPreview","pathname","router","isShare","pathHelper","user","group","shareDownload","toggleSnackbar","changeContextMenu","previewPath","isPreviewable","showImgPreivew","push","encodeURIComponent","showAudioPreview","selectFile","event","fileIndex","ctrlKey","metaKey","shiftKey","Boolean","isMacbook","isMac","map","v","begin","Math","min","end","max","newShiftSelected","slice","setLastSelect","setShiftSelectedIds","findIndex","setNavigator","navigatorLoading","navigateTo","navigateUp","pathSplit","split","pop","newPath","join","drawerToggleAction","dragAndDrop","changeViewMethod","menuType","setNavigatorLoadingStatus","status","setNavigatorError","openCreateFolderDialog","openCreateFileDialog","setUserPopover","anchor","setShareUserPopover","openRenameDialog","openResaveDialog","openMoveDialog","openRemoveDialog","openShareDialog","applyThemes","setSessionStatus","openMusicDialog","openRemoteDownloadDialog","openTorrentDownloadDialog","openDecompressDialog","openCompressDialog","openRelocateDialog","openGetSourceDialog","openCopyDialog","openLoadingDialog","text","closeAllModals","vertical","horizontal","enableLoadUploader","setModalsLoading","refreshFileList","searchMyFile","audioPreviewSetIsOpen","audioPreviewSetPlaying","refreshStorage","saveFile","setSiteConfig","config","sideButton","marginRight","sortOptions","SubActions","isSmall","share","inherit","viewMethod","explorerViewMethod","OpenLoadingDialog","ChangeSortMethod","OpenResaveDialog","SetShareUserPopover","anchorSort","setAnchorSort","selectedIndex","setSelectedIndex","openReport","setOpenReport","toggleViewMethod","newMethod","fontSize","anchorEl","onClose","option","0","1","2","3","4","5","handleMenuItemClick","creator","nick","style","height","src","widthAnimation","shareUrl","minWidth","wrapper","margin","spacing","buttonProgress","secondary","light","top","left","flexCenter","alignItems","noFlex","display","scoreCalc","marginTop","Report","reason","setReason","des","setDes","loading","setLoading","ToggleSnackbar","setTimeout","aria-labelledby","maxWidth","fullWidth","component","aria-label","onChange","reportReasons","k","toString","control","label","multiline","variant","rows","API","post","parseInt","then","catch","disabled","PurchaseShareDialog","callback","score","autoFocus","avatar","blue","loadingContainer","marginLeft","LoadingDialog","modals","loadingText","Dialog","DialogContent","DialogContentText","CircularProgress","contentFix","CopyDialog","selectedPath","setSelectedPath","selectedPathName","setSelectedPathName","SetModalsLoading","RefreshFileList","DialogTitle","PathSelector","presentPath","onSelect","folder","DialogActions","Button","preventDefault","dirs","items","src_dir","dst","modalsLoading","ExpansionPanel","withStyles","root","border","boxShadow","borderBottom","expanded","MuiExpansionPanel","ExpansionPanelSummary","content","MuiExpansionPanelSummary","ExpansionPanelDetails","background","default","MuiExpansionPanelDetails","CreatShare","setText","ClipboardJS","useRouteMatch","scoreEnabled","score_enabled","scoreRate","share_score_rate","shareScoreprice","share_score_price","React","setExpanded","shareURL","setShareURL","password","downloads","expires","showPassword","showScore_show_","get_score_","get_k_rmb_","values","setValues","expire","preview","isQZ","shareOption","setShareOption","handleChange","prop","handleExpand","panel","isExpanded","handleCheck","size_to_M","showScore","Divider","List","aria-controls","ListItem","button","ListItemIcon","ListItemText","primary","ListItemSecondaryAction","Checkbox","checked","FormControl","InputLabel","htmlFor","OutlinedInput","endAdornment","InputAdornment","Tooltip","IconButton","random","substr","edge","onMouseDown","on","onIcon","Visibility","offIcon","VisibilityOff","labelWidth","Select","labelId","MenuItem","Typography","readOnly","inputProps","showScore_show","out_score","get_score","get_k_rmb","parseFloat","toFixed","Number","html_","__html","dangerouslySetInnerHTML","GetShareScore","TextField","readonly","copyValue","copy","submitFormBody","is_dir","DecompressDialog","filePath","CompressDialog","fileName","setFileName","input","RelocateDialog","selectedPolicy","setSelectedPolicy","policies","setPolicies","get","options","current","dst_policy_id","ModalsCompoment","newFolderName","newFileName","newName","secretShare","sharePwd","downloadURL","remoteDownloadPathSelect","purchaseCallback","handleInputChange","setState","newNameSuffix","downloaded","UNSAFE_componentWillReceiveProps","nextProps","dndSignale","modalsStatus","rename","getSource","url","scoreHandler","archiveDownload","Download","dragMove","shareFree","reqURL","downloadPath","put","link","document","createElement","setAttribute","visibility","body","appendChild","click","removeChild","postBody","shareInfo","submitRemove","delete","submitResave","shareKey","submitMove","patch","DragSelectedPath","doMove","submitRename","new_name","submitCreateNewFolder","submitCreateNewFile","submitTorrentDownload","submitDownload","setMoveTarget","remoteDownloadNext","PurchaseShare","onSubmit","createNewFolder","createNewFile","move","resave","remove","music","controls","remoteDownload","placeholder","torrentDownload","decompress","compress","relocate","Component","Modals","connect","withRouter","fab","right","bottom","zIndex","badge","fabProgress","green","buttonSuccess","SaveButton","buttonClassname","clsx","sizeToString","bytes","i","floor","log","pow","fixUrlHash","setCookie","days","setTime","getTime","cookie","setGetParameter","paramName","paramValue","indexOf","prefix","substring","suffix","history","pushState","allowSharePreview","allowPreview","userInfo","uid","checkGetParameters","field","changeThemeColor","querySelector","bufferDecode","Uint8Array","from","atob","c","charCodeAt","bufferEncode","btoa","String","fromCharCode","apply","replace","pathBack","folders","hex2bin","hex","padStart","pathJoin","parts","sep","separator","part","RegExp","basename","pathList","filename","randomStr","result","characters","charactersLength","charAt","getNumber","base","conditions","platform","toUpperCase","vhCheck","vh","innerHeight","documentElement","setProperty","MonacoEditor","lazy","layout","up","editor","borderRadius","formControl","toobar","textAlign","CodeViewer","setContent","setStatus","setSuffix","math","useLocation","query","URLSearchParams","search","useParams","SetSubTitle","changeSubTitle","extension","codePreviewSuffix","params","requestURL","responseType","textdata","Buffer","elevation","Array","Set","keys","fallback","extraEditorClassName","variantIcon","success","CheckCircleIcon","warning","WarningIcon","ErrorIcon","info","InfoIcon","MySnackbarContentWrapper","main","iconVariant","Icon","aria-describedby","close","SnackbarCompoment","snackbar","toggle","handleClose","anchorOrigin","autoHideDuration","AlertBar","UserAvatarPopoverCompoment","openURL","sigOut","reload","Popover","transformOrigin","visitorMenu","header","largeAvatarContainer","Avatar","largeAvatar","noWrap","nickname","user_name","share_score","Chip","UserAvatarPopover","userPopoverAnchorEl","uploadFromFile","policySelected","UserAvatarCompoment","showUserInfo","returnHome","loginCheck","isLogin","mobileHidden","Grow","Home","UserAvatar","NavbarCompoment","componentDidMount","handleDrawerToggle","mobileOpen","loadUploader","openDownload","signOut","finally","UploaderRef","createRef","unlisten","listen","drawer","upDrawer","minStickDrawer","iconFix","iOS","process","browser","test","userAgent","appBar","menuButton","handleDesktopToggle","desktopOpen","menuButtonDesktop","menuIcon","subTitle","grow","sectionForFile","allowArchiveDownload","audioPreviewPlayingName","audioPreviewOpen","smUp","implementation","container","paper","drawerPaper","onOpen","disableDiscovery","ModalProps","keepMounted","xsDown","drawerPaperDesktop","drawerOpen","drawerClose","toolbar","Navbar","audioPreviewIsOpen","withTheme","flexShrink","drawerDesktop","mixins","overflowX","transition","transitions","easing","sharp","duration","enteringScreen","leavingScreen","flexGrow","nested","paddingLeft","extendedIcon","addButton","marginBottom","fabButton","badgeFix","dividerFix","folderShareIcon","verticalAlign","shareInfoContainer","textDecoration","shareAvatar","stickFooter","ownerInfo","overflowY","minHeight","configure","ignoreTags","keyMap","SEARCH","SearchBarCompoment","handlers","searchShare","blur","cancelSuggest","searchIcon","inputRoot","inputInput","onBlur","suggestBox","TransitionProps","timeout","square","SearchBar","shape","fade","common","white","pointerEvents","justifyContent","paddingTop","paddingRight","paddingBottom","StorageBarCompoment","percent","used","total","store","showExpand","showExpandJiFen","firstLoad","updateStatus","refresh","onMouseEnter","onMouseLeave","storageContainer2","iconFix2","detail","storageContainer","bar","StorageBar","storageRefresh","textFix","overflow","textOverflow","UserInfoCompoment","userNav","flexAvatar","avatarImg","storageCircle","nickName","groupName","UserInfo","backgroundImage","backgroundSize","expand","transform","hiddenButton","subMenu","overFlow","whiteSpace","icons","Circle","CircleOutline","Heart","HeartOutline","Hexagon","HexagonOutline","Hexagram","HexagramOutline","Rhombus","RhombusOutline","Square","SquareOutline","Triangle","TriangleOutline","FolderHeartOutline","AddTag","FileTag","useHistory","tagOpen","setTagOpen","addTagModal","setAddTagModal","tagHover","setTagHover","tags","setTags","SearchMyFile","NavigateTo","onSuccess","tag","newTags","expression","IconComponent","getIcon","dayjs","extend","utc","timezone","preferTimeZone","timeZone","refreshTimeZone","formatLocalTime","time","format","tz","validateTimeZone","ImagPreviewComponent","photoIndex","firstOne","newImg","intro","fileType","toLowerCase","imgPreviewSuffix","images","visible","onIndexChange","n","ImgPreivew","msDocPreviewSuffix","audioPreviewSuffix","videoPreviewSuffix","pdfPreviewSuffix","editSuffix","json","php","py","bat","cpp","h","cs","css","dockerfile","go","html","ini","java","js","jsx","less","lua","sh","sql","xml","yaml","mediaType","audio","video","image","pdf","word","ppt","excel","torrent","zip","excute","android","python","policyTypeMap","local","remote","qiniu","upyun","oss","cos","onedrive","s3","taskStatus","taskType","taskProgress","getTaskStatus","getTaskType","getTaskProgress","isFunction","val","noop","newScript","scriptElem","hasOwnProperty","call","keyIterator","cols","next","parallel","tasks","each","hasError","successed","ret","task","err","args","series","thunk","nextKey","nextThunk","isArray","iterator","loadedScript","pendingScripts","failedScript","addCache","entry","removeFailedScript","script","node","parentNode","uploaderLoader","WrappedComponent","ScriptLoader","context","isScriptLoaded","isScriptLoadSucceed","_isMounted","scripts","onComplete","loadNewScript","taskComplete","callbacks","startLoadingScripts","policyType","onScriptLoaded","refs","wrappedInstance","ref","defaultProps","hoistStatics","FileList","files","openFileList","cancelUpload","deQueue","reQueue","errMsg","addNewFile","getElementsByClassName","getProgressBackground","lighten","darken","filesNow","fileID","f","splice","ignoreMsg","Slide","direction","inRef","bind","enQueue","setComplete","setError","fullScreen","isWidthDown","TransitionComponent","Transition","AppBar","Toolbar","flex","dialogContent","minHight","item","progressContainer","progress","progressContent","TypeIcon","isUpload","listAction","plupload","formatSize","loaded","errorStatus","successStatus","progressBar","wordBreak","withWidth","UploadButton","setOpen","queued","setQueued","OpenNewFolderDialog","OpenNewFileDialog","Queued","openUpload","uploadButton","contains","uploadClicked","Badge","badgeContent","invisible","Backdrop","SpeedDial","ariaLabel","tooltipTitle","SpeedDialIcon","openIcon","FabProps","SpeedDialAction","tooltipOpen","UploaderComponent","uploader","addFile","start","fileAdd","currntPath","enqueFiles","isDsStore","removeFile","relativePath","pathCache","Qiniu","runtimes","browse_button","drop_element","max_file_size","policy","maxSize","dragdrop","chunk_size","getChunkSize","saveType","multi_selection","uptoken_url","uptoken","domain","max_retries","get_new_uptoken","auto_start","log_level","init","FilesAdded","BeforeUpload","QueueChanged","UploadProgress","UploadComplete","console","Fresh","FileUploaded","errTip","FilesRemoved","onError","setRef","Uploader","forwardRef","SizeInput","required","unit","setUnit","res","round","step","AudioIcon","VideoIcon","ImageIcon","PdfIcon","FileWordBox","FilePowerpointBox","FileExcelBox","ScriptText","MagnetOn","ZipBox","WindowRestore","Android","FileShowIcon","LanguagePhp","LanguageGo","LanguagePython","LanguageC","LanguageCpp","LanguageJavascript","fileSuffix","getColor","getColorValue","iconClassName","PathSelectorCompoment","selectedTarget","toBeLoad","enterFolder","back","paths","api","objects","unshift","handleSelect","selector","primaryTypographyProps","buttonIcon","iconWhite","maxHeight","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","isLocalhost","hostname","match","AuthRoute","rest","render","to","PageLoading","emptyContainer","emptyInfoBig","Notice","initUserConfig","themes","enableUploaderLoad","uploadConfig","defaultTheme","preferListMethod","share_view_method","home_view_method","icp","WXLogin","initScript","async","head","onOpenLogin","timer","initWX","clearTimeout","self","receiveMessageFromIndex","WXCode","wxLogin","removeEventListener","WxLogin","self_redirect","appid","scope","redirect_uri","origin","isLoading","flexDirection","letterSpacing","speed","primaryColor","secondaryColor","y","rx","ry","captchaPlacholder","NormalCaptcha","captchaRef","useStyle","captcha","setCaptcha","captchaData","setCaptchaData","refreshCaptcha","captchaCode","captchaContainer","Input","autoComplete","captchaPlaceholder","alt","ReCAPTCHA","handleExpired","handleErrored","handleRecaptchaRef","grecaptcha","_widgetId","getResponse","execute","_executeRequested","reset","onExpired","onErrored","token","sitekey","tabindex","stoken","hl","explicitRender","delayOfCaptchaIframeRemoving","temporaryNode","firstChild","elem","childProps","displayName","makeAsyncScriptLoader","callbackName","globalName","Recaptcha","reCaptchaKey","captcha_ReCaptchaKey","ReCaptcha","TCaptcha","isValidateRef","submitRef","tcaptcha_captcha_app_id","onLoad","TencentCaptcha","ticket","randstr","isValidate","submit","defaultValidate","useCaptcha","captchaType","captcha_type","captchaLoading","setCaptchaLoading","captchaRefreshRef","useRef","normal","captchaParamsRef","CaptchaRender","validate","useNormalCaptcha","recaptcha","useRecaptcha","tcaptcha","show","useTCaptcha","avatarSmall","form","buttonContainer","authnLink","linkSendSMS","linkSendSMSDark","linkMargn","linkMargn2","LoginForm","phone","setPhone","verification","setVerification","verificationStatus","setVerificationStatus","verCode","setVerCode","pwd","setPwd","UserPwdLogin","setUserPwdLogin","USMSLogin","setUSMSLogin","setTwoFA","weChatLogin","setWeChatLogin","loginCaptcha","QQLogin","authn","ApplyThemes","SetSessionStatus","afterLogin","removeItem","Paper","login","userName","Password","LoginType","SMSCode","Link","underline","PhoneNum","SMSType","timerCount","setInterval","clearInterval","actions","reducers","expandMore","active","textTransform","PathButton","inputRef","useDrop","accept","drop","more","collect","monitor","isOver","canDrop","isActive","last","DropDownItem","setActiveStatus","DropDown","shouldClose","element","NavigatorComponent","currentID","hiddenFolders","hiddenMode","anchorHidden","URL","searchParams","renderPath","onpopstate","navigateToPath","apiURL","parent","pathTemp","checkOverFlow","redresh","componentDidUpdate","prevProps","prevStates","ms","drawerDesktopOpen","resolve","force","overflowInitLock","hasOverflowingChildren","offsetHeight","scrollHeight","offsetWidth","scrollWidth","showHiddenPath","performAction","newTarget","presentFolderMenu","Menu","disableAutoFocusItem","Archive","roundBorder","navigatorContainer","nav","rightIcon","optionContainer","Navigator","SmallIconCompoment","isSelected","ButtonBase","focusRipple","notSelected","onIconClick","iconSelected","iconNotSelected","isFolder","checkIcon","folderName","folderNameSelected","folderNameNotSelected","SmallIcon","divider","boxSizing","fontWeight","FileIconCompoment","showPicIcon","pic","hide","picPreview","afterLoad","beforeLoad","loadingAnimation","previewIcon","iconBig","fileInfo","shareFix","FileIcon","objectFit","Folder","dragging","cardDragged","diliverIcon","object","Preview","card","layerStyles","getItemStyles","initialOffset","currentOffset","pointerOffset","WebkitTransform","CustomDragLayer","useDragLayer","itemType","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getInitialClientOffset","isDragging","renderItem","TableRowCompoment","tableIcon","TableRow","pref","onContextMenu","contextMenu","handleClick","onDoubleClick","handleDoubleClick","selectedShared","TableCell","dref","tableRow","hideAuto","TableItem","userSelect","FolderDropWarpper","isListView","fixFlex","ObjectIcon","navigatorPath","ContextMenu","SetSelectedTarget","NavitateTo","DragAndDrop","OpenPreview","selectFileAction","handleIconClick","stopPropagation","useDrag","dropResult","getDropResult","canDrag","drag","getEmptyImage","captureDraggingState","StyledListItemIcon","ContextMenuCompoment","X","Y","setPoint","clientY","clientX","openArchiveDownload","clickUpload","renderMenuItems","visibleCount","condition","dense","menuOpen","anchorReference","anchorPosition","InfoOutlined","propover","contextType","contextOpen","ExplorerCompoment","ClickAway","dataset","clickaway","DELETE_FILE","SELECT_ALL","away","showView","listView","Table","table","TableHead","TableSortLabel","changeSort","visuallyHidden","TableBody","normalView","flexFix","data-clickAway","typeHeader","Grid","xs","md","sm","lg","view","rootTable","rootShare","navigatorError","errorBox","errorMsg","navigatorErrorMsg","emptyIcon","emptyInfoSmall","Explorer","hint","upButton","clickAway","clip","ListLoading","drawerContainer","placeContent","fileIcon","fileIconSVG","folderIcon","closeIcon","placeSelf","propsContainer","propsLabel","propsTime","propsValue","SideDrawer","SetSideBar","setTarget","details","setDetails","propsItem","d","t","toLocaleString","child_folder_num","child_file_num","updated_at","created_at","datetime","query_date","locale","Hidden","Clear","Drawer","gutterBottom","FileManager","DndProvider","backend","HTML5Backend","DragLayer","player","VideoViewer","cardContainer","shareTitle","avatarFile","avatarFolder","gird","loadMore","orderSelect","SearchResult","page","setPage","setTotal","shareList","setShareList","orderBy","setOrderBy","order","Card","CardHeader","subheader","create_date","Pagination","count","ceil","MyShareCompoment","showPwd","loadList","removeShare","oldList","changePermission","newPwd","shareIndex","changePreviewOption","handlePageChange","handleOrderChange","isExpired","remain_downloads","CardActions","disableActionSpacing","VpnKey","MyShare","SelectFileDialog","setFiles","dividers","FormGroup","row","FormControlLabel","filesCopy","iconContainer","borderInlineStart","contentSide","iconMultiple","subFileName","subFileIcon","scroll","actionButton","infoTitle","infoValue","bitmap","DownloadingCard","canvasRef","setTask","selectDialogOpen","setSelectDialogOpen","selectFileOption","setSelectFileOption","bitfield","str","canvas","getContext","clearRect","strokeStyle","bit","numPieces","beginPath","moveTo","lineTo","stroke","getPercent","completed","activeFiles","getDownloadName","bittorrent","mode","gid","indexes","newExpanded","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","reduce","allowRemoteDownload","LockedFileCompoment","setPassowrd","LockedFile","marginRottom","boxHeader","cursor","shareDes","Creator","userProfile","views","ImgPreview","SharedFileCompoment","scoreHandle","download","box","boxContent","fileSize","boxFooter","actionLeft","openResave","downloadButton","SharedFile","fileCotainer","buttonCotainer","ReadMe","SharedFolderComponent","handleClickAway","readmeShowed","ClickAwayListener","onClickAway","managerContainer","SharedFolder","shareUserPopoverAnchorEl","SharePreload","setShare","setPassword","locked","withPassword","DocViewer","setURL","TextViewer","$vm","cdnFileUrl","Axios","headers","request","save","QuotaCompoment","basic","pack","r1","r2","r3","packs","usedR","baseR","packR","proBar","r1_block","note_block","r2_block","r3_block","align","activate_date","expiration","expiration_date","Quota","lineHeight","float","PackSelect","boxHead","packName","price","priceWithScore","boxBottom","JiFenPackSelect","BuyQuotaCompoment","IntervalId","confirmRedeem","redeemCode","dialog","doRedeem","redeemInfo","buyPack","packType","selectedPack","packPayMethod","groups","selectedGroup","num","scoreNum","times","payment","qr_code","img","querryLoop","buyJiFenPack","selectedJiFenPack","jiFenData","handleChangeIndex","handleTexyChange","selectPack","selectJiFenPack","selectGroup","selectPackPayMethod","scorePrice","alipay","payjs","wechat","wechatH5","wechat_h5","score_price","ji_fen_data","jiFenData_Temp","methodSelect","FormLabel","RadioGroup","Radio","textField","Tabs","Tab","AccountBalanceWallet","payMethod","priceShow","redeemContainer","codeContainer","BuyQuota","cardHeader","grey","cardPricing","cardActions","formGroup","formIcon","CreateWebDAVAccount","setValue","pathSelectDialog","setPathSelectDialog","formContainer","LabelOutlined","FolderOpenOutlined","CreateWebDAVMount","Storage","cardContent","tableContainer","WebDAV","tab","setTab","setCreate","mount","setMount","accounts","setAccounts","setFolders","account","ID","CreatedAt","Name","Root","mountInfo","indicatorColor","textColor","newValue","Alert","severity","TableContainer","clipboard","writeText","accountCopy","deleteAccount","policy_name","folderCopy","deleteMount","footer","Tasks","setTasks","nowrap","getError","Withdrawals","maxShareSorce","WithdrawalsSorce","setShareSorce","withdrawalsSorce","setWithdrawalsSorce","minSorce","setminSorce","WithdrawalsScore","FormHelperText","ProfileCompoment","listType","withdrawals","shareScoreWithdrawals","withdrawalsList","withdrawalsTotal","loadListSharedown","loadWithdrawalsList","submitShare","ShareScore","withdrawalsOver","page_size","loadNext","loadPrev","avatarContainer","centered","infoContainer","infoItem","FileCount","ShareCount","free","shareScore","mobileHide","th","tableLink","sourceName","shareUserName","PriceFen","PriceCurrent","WithdrawalsStatus","Remark","Profile","backgroundPosition","borderRaidus","pageInfo","WXBindCompoment","BindWxToUser","WXBind","tabForm","ZFBZhangHao","setZFBZhangHao","ZFBName","setZFBName","CardNo","setCardNo","CardName","setCardName","CardAddr","setCardAddr","ZhiFuBaoZhangHao","ZhiFuBaoRealName","sectionTitle","desenList","flexContainer","Authn","setSelected","confirm","setConfirm","deleteCredential","fingerprint","credentials","credentialCreationOptions","publicKey","challenge","excludeCredentials","credential","attestationObject","clientDataJSON","rawId","add","TimeZoneDialog","timeZoneValue","setTimeZoneValue","UserSettingCompoment","avatarModal","nickModal","changePassword","oldPwd","webdavPwd","newPwdRepeat","twoFactor","authCode","changeTheme","chosenTheme","showWebDavUrl","showWebDavUserName","changeWebDavPwd","groupBackModal","changePolicy","changeTimeZone","settings","group_expires","qq","homepage","two_factor","two_fa_secret","prefer_theme","changeView","loadSetting","doChangeGroup","useGravatar","changeNick","bindQQ","uploadAvatar","formData","FormData","append","fileInput","handleToggle","changhePwd","old","new","changheWebdavPwd","init2FA","handleAlignment","toggleThemeMode","ListItemAvatar","infoTextWithIcon","rightIconWithText","infoText","ConfirmationNumber","Switch","firstColor","secondColor","Brightness3","ListAlt","Schedule","userGravatar","paddingText","flexContainerResponse","qrcode","desText","ToggleButtonGroup","exclusive","ToggleButton","themeBlock","UserSetting","yellow","QQCallback","setMsg","readFileClass","avatarSuccess","Register","password_repeat","setInput","readFile","setReadFile","emailActive","regCaptcha","NickName","onfocus","Box","Activation","setSuccess","email","setEmail","ResetForm","secret","Reset","forgetCaptcha","WXLoginBack","postMessage","overflowWrap","SiteNotice","site_notice","setShow","newNotice","MusicPlayerComponent","currentIndex","currentTime","progressText","looptype","myAudioRef","newItem","handleItemClick","pause","backgroundPlay","bindEvents","ele","readyPlay","loopnext","timeUpdate","unbindEvents","play","formatTime","s","isNaN","minute","second","playOrPaues","isPlay","changeLoopType","lt","handleProgress","idx","Slider","slider_root","justify","Repeat","RepeatOne","Shuffle","MusicPlayer","PDFViewer","App","themeConfig","prefersDarkMode","useMediaQuery","useMemo","prefer","createMuiTheme","Fragment","ThemeProvider","CssBaseline","exact","Code","doNavigate","defaultStatus","rawStore","configCache","InitSiteConfig","siteICPId","black","contrastText","bgSelected","ErrorBoundary","errorInfo","h1","h2","componentStack","Admin","hash","fetch","contentType","ready","unregister","checkValidServiceWorker","createBrowserHistory","reduxEnhance","applyMiddleware","routerMiddleware","createStore","viewUpdateState","explorerState","appState","cloudreveApp","combinedState","combinedReducer","combine","namespace","reducer","invariant","combineReducers","connectRouter","UpdateSiteConfig","ReactDOM","getElementById","setSubtitle"],"mappings":"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","file":"static/js/main.4b1ee155.chunk.js","sourcesContent":["import axios from \"axios\";\nimport Auth from \"./Auth\";\n\nexport const baseURL = \"/api/v3\";\n\nexport const getBaseURL = () => {\n return baseURL;\n};\n\nconst instance = axios.create({\n baseURL: getBaseURL(),\n withCredentials: true,\n crossDomain: true,\n});\n\nfunction AppError(message, code, error) {\n this.code = code;\n this.message = message || \"未知错误\";\n this.message += error ? \" \" + error : \"\";\n this.stack = new Error().stack;\n}\nAppError.prototype = Object.create(Error.prototype);\nAppError.prototype.constructor = AppError;\n\ninstance.interceptors.response.use(\n function (response) {\n response.rawData = response.data;\n response.data = response.data.data;\n if (\n response.rawData.code !== undefined &&\n response.rawData.code !== 0 &&\n response.rawData.code !== 203\n ) {\n // 登录过期\n if (response.rawData.code === 401) {\n Auth.signout();\n window.location.href = \"/login\";\n }\n\n // 非管理员\n if (response.rawData.code === 40008) {\n window.location.href = \"/home\";\n }\n throw new AppError(\n response.rawData.msg,\n response.rawData.code,\n response.rawData.error\n );\n }\n return response;\n },\n function (error) {\n return Promise.reject(error);\n }\n);\n\nexport default instance;\n","import { AnyAction } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { CloudreveFile, SortMethod } from \"./../../types/index\";\nimport { closeContextMenu } from \"../viewUpdate/action\";\n\nexport interface ActionSetFileList extends AnyAction {\n type: \"SET_FILE_LIST\";\n list: CloudreveFile[];\n}\nexport const setFileList = (list: CloudreveFile[]): ActionSetFileList => {\n return {\n type: \"SET_FILE_LIST\",\n list,\n };\n};\n\nexport interface ActionSetDirList extends AnyAction {\n type: \"SET_DIR_LIST\";\n list: CloudreveFile[];\n}\nexport const setDirList = (list: CloudreveFile[]): ActionSetDirList => {\n return {\n type: \"SET_DIR_LIST\",\n list,\n };\n};\n\nexport interface ActionSetSortMethod extends AnyAction {\n type: \"SET_SORT_METHOD\";\n method: SortMethod;\n}\nexport const setSortMethod = (method: SortMethod): ActionSetSortMethod => {\n return {\n type: \"SET_SORT_METHOD\",\n method,\n };\n};\n\nexport const setSideBar = (open: boolean) => {\n return {\n type: \"SET_SIDE_BAR\",\n open,\n };\n};\n\ntype SortFunc = (a: CloudreveFile, b: CloudreveFile) => number;\nconst sortMethodFuncs: Record = {\n sizePos: (a: CloudreveFile, b: CloudreveFile) => {\n return a.size - b.size;\n },\n sizeRes: (a: CloudreveFile, b: CloudreveFile) => {\n return b.size - a.size;\n },\n namePos: (a: CloudreveFile, b: CloudreveFile) => {\n return a.name.localeCompare(\n b.name,\n navigator.languages[0] || navigator.language,\n { numeric: true, ignorePunctuation: true }\n );\n },\n nameRev: (a: CloudreveFile, b: CloudreveFile) => {\n return b.name.localeCompare(\n a.name,\n navigator.languages[0] || navigator.language,\n { numeric: true, ignorePunctuation: true }\n );\n },\n timePos: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(a.date) - Date.parse(b.date);\n },\n timeRev: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(b.date) - Date.parse(a.date);\n },\n};\n\nexport const updateFileList = (\n list: CloudreveFile[]\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n // TODO: define state type\n const { sortMethod } = state.viewUpdate;\n const dirList = list.filter((x) => {\n return x.type === \"dir\";\n });\n const fileList = list.filter((x) => {\n return x.type === \"file\";\n });\n const sortFunc = sortMethodFuncs[sortMethod as SortMethod];\n dispatch(setDirList(dirList.sort(sortFunc)));\n dispatch(setFileList(fileList.sort(sortFunc)));\n };\n};\n\nexport const changeSortMethod = (\n method: SortMethod\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n const { fileList, dirList } = state.explorer;\n const sortFunc = sortMethodFuncs[method];\n dispatch(setSortMethod(method));\n dispatch(setDirList(dirList.sort(sortFunc)));\n dispatch(setFileList(fileList.sort(sortFunc)));\n };\n};\n\nexport const toggleObjectInfoSidebar = (\n open: boolean\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n if (open) {\n dispatch(closeContextMenu());\n }\n dispatch(setSideBar(true));\n };\n};\n","/* eslint-disable no-case-declarations */\nimport { AnyAction } from \"redux\";\nimport { CloudreveFile } from \"../../types\";\n\ninterface SelectProps {\n isMultiple: boolean;\n withFolder: boolean;\n withFile: boolean;\n}\n\nexport interface ExplorerState {\n dndSignal: boolean;\n dndTarget: any;\n dndSource: any;\n fileList: CloudreveFile[];\n dirList: CloudreveFile[];\n selected: CloudreveFile[];\n selectProps: SelectProps;\n lastSelect: {\n file: CloudreveFile;\n index: number;\n };\n shiftSelectedIds: string[];\n imgPreview: {\n first: CloudreveFile;\n other: [];\n };\n audioPreview: {\n first: CloudreveFile;\n other: [];\n playingName: any;\n paused: boolean;\n isOpen: boolean;\n };\n keywords: string;\n fileSave: boolean;\n sideBarOpen: boolean;\n}\n\nexport const initState: ExplorerState = {\n dndSignal: false,\n dndTarget: null,\n dndSource: null,\n fileList: [],\n dirList: [],\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n },\n lastSelect: {\n file: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n },\n index: -1,\n },\n shiftSelectedIds: [],\n imgPreview: {\n first: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n },\n other: [],\n },\n audioPreview: {\n first: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n },\n other: [],\n playingName: null,\n paused: false,\n isOpen: false,\n },\n keywords: \"\",\n fileSave: false,\n sideBarOpen: false,\n};\n\nconst checkSelectedProps = (selected: CloudreveFile[]): SelectProps => {\n const isMultiple = selected.length > 1;\n let withFolder = false;\n let withFile = false;\n selected.forEach((value) => {\n if (value.type === \"dir\") {\n withFolder = true;\n } else if (value.type === \"file\") {\n withFile = true;\n }\n });\n return {\n isMultiple,\n withFolder,\n withFile,\n };\n};\n\nconst explorer = (\n state: ExplorerState = initState,\n action: AnyAction\n): ExplorerState => {\n switch (action.type) {\n case \"DRAG_AND_DROP\":\n return Object.assign({}, state, {\n dndSignal: !state.dndSignal,\n dndTarget: action.target,\n dndSource: action.source,\n });\n case \"SET_FILE_LIST\":\n return Object.assign({}, state, {\n fileList: action.list,\n });\n case \"SET_DIR_LIST\":\n return Object.assign({}, state, {\n dirList: action.list,\n });\n case \"ADD_SELECTED_TARGETS\":\n const addedSelected = [...state.selected, ...action.targets];\n return Object.assign({}, state, {\n selected: addedSelected,\n selectProps: checkSelectedProps(addedSelected),\n });\n case \"SET_SELECTED_TARGET\":\n const newSelected = action.targets;\n return Object.assign({}, state, {\n selected: newSelected,\n selectProps: checkSelectedProps(newSelected),\n });\n case \"RMOVE_SELECTED_TARGETS\":\n const { fileIds } = action;\n const filteredSelected = state.selected.filter((file) => {\n return !fileIds.includes(file.id);\n });\n return Object.assign({}, state, {\n selected: filteredSelected,\n selectProps: checkSelectedProps(filteredSelected),\n });\n case \"REFRESH_FILE_LIST\":\n return Object.assign({}, state, {\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n },\n });\n case \"SEARCH_MY_FILE\":\n return Object.assign({}, state, {\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n },\n keywords: action.keywords,\n });\n case \"SHOW_IMG_PREIVEW\":\n return Object.assign({}, state, {\n imgPreview: {\n first: action.first,\n other: state.fileList,\n },\n });\n case \"SHOW_AUDIO_PREVIEW\":\n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n first: action.first,\n other: state.fileList,\n },\n });\n case \"AUDIO_PREVIEW_SET_IS_OPEN\": \n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n isOpen: action.isOpen,\n },\n });\n case \"AUDIO_PREVIEW_SET_PLAYING\":\n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n playingName: action.playingName,\n paused: action.paused,\n },\n });\n case \"SAVE_FILE\":\n return {\n ...state,\n fileSave: !state.fileSave,\n };\n case \"SET_LAST_SELECT\":\n const { file, index } = action;\n return {\n ...state,\n lastSelect: {\n file,\n index,\n },\n };\n case \"SET_SHIFT_SELECTED_IDS\":\n const { shiftSelectedIds } = action;\n return {\n ...state,\n shiftSelectedIds,\n };\n case \"SET_NAVIGATOR\":\n return {\n ...state,\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n },\n keywords: \"\",\n };\n case \"SET_SIDE_BAR\":\n return {\n ...state,\n sideBarOpen: action.open,\n };\n default:\n return state;\n }\n};\n\nexport default explorer;\n","const statusHelper = {\n isHomePage(path) {\n return path === \"/home\";\n },\n isSharePage(path) {\n return path && path.startsWith(\"/s/\");\n },\n isAdminPage(path) {\n return path && path.startsWith(\"/admin\");\n },\n isLoginPage(path) {\n return path && path.startsWith(\"/login\");\n },\n isMobile() {\n return window.innerWidth < 600;\n },\n};\nexport default statusHelper;\n","import React, { useState, useEffect } from \"react\";\nimport Zoom from \"@material-ui/core/Zoom\";\n\nfunction AutoHidden({ children, enable }) {\n const [hidden, setHidden] = useState(false);\n\n let prev = window.scrollY;\n let lastUpdate = window.scrollY;\n const show = 50;\n\n useEffect(() => {\n const handleNavigation = (e) => {\n const window = e.currentTarget;\n\n if (prev > window.scrollY) {\n if (lastUpdate - window.scrollY > show) {\n lastUpdate = window.scrollY;\n setHidden(false);\n }\n } else if (prev < window.scrollY) {\n if (window.scrollY - lastUpdate > show) {\n lastUpdate = window.scrollY;\n setHidden(true);\n }\n }\n prev = window.scrollY;\n };\n if (enable) {\n window.addEventListener(\"scroll\", (e) => handleNavigation(e));\n }\n // eslint-disable-next-line\n }, [enable]);\n\n return {children};\n}\n\nexport default AutoHidden;\n","const Auth = {\n isAuthenticated: false,\n authenticate(cb: any) {\n Auth.SetUser(cb);\n Auth.isAuthenticated = true;\n },\n GetUser() {\n return JSON.parse(localStorage.getItem(\"user\") || \"null\");\n },\n SetUser(newUser: any) {\n localStorage.setItem(\"user\", JSON.stringify(newUser));\n },\n Check(): boolean {\n if (Auth.isAuthenticated) {\n return true;\n }\n if (localStorage.getItem(\"user\") !== null) {\n return !Auth.GetUser().anonymous;\n }\n return false;\n },\n signout() {\n Auth.isAuthenticated = false;\n const oldUser = Auth.GetUser();\n oldUser.id = 0;\n localStorage.setItem(\"user\", JSON.stringify(oldUser));\n },\n SetPreference(key: string, value: any) {\n let preference = JSON.parse(\n localStorage.getItem(\"user_preference\") || \"{}\"\n );\n preference = preference == null ? {} : preference;\n preference[key] = value;\n localStorage.setItem(\"user_preference\", JSON.stringify(preference));\n },\n GetPreference(key: string): any | null {\n const preference = JSON.parse(\n localStorage.getItem(\"user_preference\") || \"{}\"\n );\n if (preference && preference[key]) {\n return preference[key];\n }\n return null;\n },\n};\n\nexport default Auth;\n","import React from \"react\";\nimport { Code } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"70%\",\n padding: 40,\n [theme.breakpoints.down(\"md\")]: {\n width: \"100%\",\n padding: 10,\n },\n },\n}));\n\nconst MyLoader = (props) => (\n \n);\n\nfunction TextLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n\nexport default TextLoading;\n","import React, { useCallback } from \"react\";\nimport { IconButton, makeStyles } from \"@material-ui/core\";\nimport DayIcon from \"@material-ui/icons/Brightness7\";\nimport NightIcon from \"@material-ui/icons/Brightness4\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { toggleDaylightMode } from \"../../actions\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Auth from \"../../middleware/Auth\";\nimport classNames from \"classnames\";\n\nconst useStyles = makeStyles(() => ({\n icon: {\n color: \"rgb(255, 255, 255)\",\n opacity: \"0.54\",\n },\n}));\n\nconst DarkModeSwitcher = ({ position }) => {\n const ThemeType = useSelector(\n (state) => state.siteConfig.theme.palette.type\n );\n const dispatch = useDispatch();\n const ToggleThemeMode = useCallback(() => dispatch(toggleDaylightMode()), [\n dispatch,\n ]);\n const isDayLight = (ThemeType && ThemeType === \"light\") || !ThemeType;\n const isDark = ThemeType && ThemeType === \"dark\";\n const toggleMode = () => {\n Auth.SetPreference(\"theme_mode\", isDayLight ? \"dark\" : \"light\");\n ToggleThemeMode();\n };\n const classes = useStyles();\n return (\n \n \n {isDayLight && }\n {isDark && }\n \n \n );\n};\n\nexport default DarkModeSwitcher;\n","import { isMac } from \"../utils\";\nimport pathHelper from \"../utils/page\";\nimport Auth from \"../middleware/Auth\";\nimport {\n changeContextMenu,\n openLoadingDialog,\n showImgPreivew,\n toggleSnackbar,\n showAudioPreview,\n} from \"./index\";\nimport { isPreviewable } from \"../config\";\nimport { push } from \"connected-react-router\";\n\nexport const removeSelectedTargets = (fileIds) => {\n return {\n type: \"RMOVE_SELECTED_TARGETS\",\n fileIds,\n };\n};\n\nexport const addSelectedTargets = (targets) => {\n return {\n type: \"ADD_SELECTED_TARGETS\",\n targets,\n };\n};\n\nexport const setSelectedTarget = (targets) => {\n return {\n type: \"SET_SELECTED_TARGET\",\n targets,\n };\n};\n\nexport const setLastSelect = (file, index) => {\n return {\n type: \"SET_LAST_SELECT\",\n file,\n index,\n };\n};\n\nexport const setShiftSelectedIds = (shiftSelectedIds) => {\n return {\n type: \"SET_SHIFT_SELECTED_IDS\",\n shiftSelectedIds,\n };\n};\n\nexport const openPreview = () => {\n return (dispatch, getState) => {\n const {\n explorer: { selected },\n router: {\n location: { pathname },\n },\n } = getState();\n const isShare = pathHelper.isSharePage(pathname);\n if (isShare) {\n const user = Auth.GetUser();\n if (!Auth.Check() && user && !user.group.shareDownload) {\n dispatch(toggleSnackbar(\"top\", \"right\", \"请先登录\", \"warning\"));\n dispatch(changeContextMenu(\"file\", false));\n return;\n }\n }\n\n dispatch(changeContextMenu(\"file\", false));\n const previewPath =\n selected[0].path === \"/\"\n ? selected[0].path + selected[0].name\n : selected[0].path + \"/\" + selected[0].name;\n switch (isPreviewable(selected[0].name)) {\n case \"img\":\n dispatch(showImgPreivew(selected[0]));\n return;\n case \"msDoc\":\n if (isShare) {\n dispatch(\n push(\n selected[0].key +\n \"/doc?name=\" +\n encodeURIComponent(selected[0].name) +\n \"&share_path=\" +\n encodeURIComponent(previewPath)\n )\n );\n return;\n }\n dispatch(\n push(\n \"/doc?p=\" +\n encodeURIComponent(previewPath) +\n \"&id=\" +\n selected[0].id\n )\n );\n return;\n case \"audio\":\n //if (isShare) {\n // dispatch(openMusicDialog());\n //}else{\n dispatch(showAudioPreview(selected[0]));\n //}\n return;\n case \"video\":\n if (isShare) {\n dispatch(\n push(\n selected[0].key +\n \"/video?name=\" +\n encodeURIComponent(selected[0].name) +\n \"&share_path=\" +\n encodeURIComponent(previewPath)\n )\n );\n return;\n }\n dispatch(\n push(\n \"/video?p=\" +\n encodeURIComponent(previewPath) +\n \"&id=\" +\n selected[0].id\n )\n );\n return;\n case \"pdf\":\n if (isShare) {\n dispatch(\n push(\n selected[0].key +\n \"/pdf?name=\" +\n encodeURIComponent(selected[0].name) +\n \"&share_path=\" +\n encodeURIComponent(previewPath)\n )\n );\n return;\n }\n dispatch(\n push(\n \"/pdf?p=\" +\n encodeURIComponent(previewPath) +\n \"&id=\" +\n selected[0].id\n )\n );\n return;\n case \"edit\":\n if (isShare) {\n dispatch(\n push(\n selected[0].key +\n \"/text?name=\" +\n encodeURIComponent(selected[0].name) +\n \"&share_path=\" +\n encodeURIComponent(previewPath)\n )\n );\n return;\n }\n dispatch(\n push(\n \"/text?p=\" +\n encodeURIComponent(previewPath) +\n \"&id=\" +\n selected[0].id\n )\n );\n return;\n case \"code\":\n if (isShare) {\n dispatch(\n push(\n selected[0].key +\n \"/code?name=\" +\n encodeURIComponent(selected[0].name) +\n \"&share_path=\" +\n encodeURIComponent(previewPath)\n )\n );\n return;\n }\n dispatch(\n push(\n \"/code?p=\" +\n encodeURIComponent(previewPath) +\n \"&id=\" +\n selected[0].id\n )\n );\n return;\n default:\n dispatch(toggleSnackbar(\"top\", \"right\", \"该文件不支持预览\", \"warning\"));\n //dispatch(openLoadingDialog(\"获取下载地址...\"));\n return;\n }\n };\n};\n\nexport const selectFile = (file, event, fileIndex) => {\n const { ctrlKey, metaKey, shiftKey } = event;\n return (dispatch, getState) => {\n // 多种组合操作忽略\n if ([ctrlKey, metaKey, shiftKey].filter(Boolean).length > 1) {\n return;\n }\n const isMacbook = isMac();\n const { explorer } = getState();\n const {\n selected,\n lastSelect,\n dirList,\n fileList,\n shiftSelectedIds,\n } = explorer;\n if (\n shiftKey &&\n !ctrlKey &&\n !metaKey &&\n selected.length !== 0 &&\n // 点击类型一样\n file.type === lastSelect.file.type\n ) {\n // shift 多选\n // 取消原有选择\n dispatch(removeSelectedTargets(selected.map((v) => v.id)));\n // 添加新选择\n const begin = Math.min(lastSelect.index, fileIndex);\n const end = Math.max(lastSelect.index, fileIndex);\n const list = file.type === \"dir\" ? dirList : fileList;\n const newShiftSelected = list.slice(begin, end + 1);\n return dispatch(addSelectedTargets(newShiftSelected));\n }\n dispatch(setLastSelect(file, fileIndex));\n dispatch(setShiftSelectedIds([]));\n if ((ctrlKey && !isMacbook) || (metaKey && isMacbook)) {\n // Ctrl/Command 单击添加/删除\n const presentIndex = selected.findIndex((value) => {\n return value.id === file.id;\n });\n if (presentIndex !== -1) {\n return dispatch(removeSelectedTargets([file.id]));\n }\n return dispatch(addSelectedTargets([file]));\n }\n // 单选\n return dispatch(setSelectedTarget([file]));\n };\n};\n","export * from \"./explorer\";\n\nexport const setNavigator = (path, navigatorLoading) => {\n return {\n type: \"SET_NAVIGATOR\",\n path,\n navigatorLoading,\n };\n};\n\nexport const navigateTo = (path) => {\n return (dispatch, getState) => {\n const state = getState();\n const navigatorLoading = path !== state.navigator.path;\n dispatch(setNavigator(path, navigatorLoading));\n };\n};\n\nexport const navigateUp = () => {\n return (dispatch, getState) => {\n const state = getState();\n const pathSplit = state.navigator.path.split(\"/\");\n pathSplit.pop();\n const newPath = pathSplit.length === 1 ? \"/\" : pathSplit.join(\"/\");\n const navigatorLoading = newPath !== state.navigator.path;\n dispatch(setNavigator(newPath, navigatorLoading));\n };\n};\n\nexport const drawerToggleAction = (open) => {\n return {\n type: \"DRAWER_TOGGLE\",\n open: open,\n };\n};\n\nexport const dragAndDrop = (source, target) => {\n return {\n type: \"DRAG_AND_DROP\",\n source: source,\n target: target,\n };\n};\n\nexport const changeViewMethod = (method) => {\n return {\n type: \"CHANGE_VIEW_METHOD\",\n method: method,\n };\n};\n\nexport const toggleDaylightMode = () => {\n return {\n type: \"TOGGLE_DAYLIGHT_MODE\",\n };\n};\n\nexport const changeContextMenu = (type, open) => {\n return {\n type: \"CHANGE_CONTEXT_MENU\",\n menuType: type,\n open: open,\n };\n};\n\nexport const setNavigatorLoadingStatus = (status) => {\n return {\n type: \"SET_NAVIGATOR_LOADING_STATUE\",\n status: status,\n };\n};\n\nexport const setNavigatorError = (status, msg) => {\n return {\n type: \"SET_NAVIGATOR_ERROR\",\n status: status,\n msg: msg,\n };\n};\n\nexport const openCreateFolderDialog = () => {\n return {\n type: \"OPEN_CREATE_FOLDER_DIALOG\",\n };\n};\n\nexport const openCreateFileDialog = () => {\n return {\n type: \"OPEN_CREATE_FILE_DIALOG\",\n };\n};\n\nexport const setUserPopover = (anchor) => {\n return {\n type: \"SET_USER_POPOVER\",\n anchor: anchor,\n };\n};\n\nexport const setShareUserPopover = (anchor) => {\n return {\n type: \"SET_SHARE_USER_POPOVER\",\n anchor: anchor,\n };\n};\n\nexport const openRenameDialog = () => {\n return {\n type: \"OPEN_RENAME_DIALOG\",\n };\n};\n\nexport const openResaveDialog = (key) => {\n return {\n type: \"OPEN_RESAVE_DIALOG\",\n key: key,\n };\n};\n\nexport const openMoveDialog = () => {\n return {\n type: \"OPEN_MOVE_DIALOG\",\n };\n};\n\nexport const openRemoveDialog = () => {\n return {\n type: \"OPEN_REMOVE_DIALOG\",\n };\n};\n\nexport const openShareDialog = () => {\n return {\n type: \"OPEN_SHARE_DIALOG\",\n };\n};\n\nexport const applyThemes = (theme) => {\n return {\n type: \"APPLY_THEME\",\n theme: theme,\n };\n};\n\nexport const setSessionStatus = (status) => {\n return {\n type: \"SET_SESSION_STATUS\",\n status: status,\n };\n};\n\nexport const openMusicDialog = () => {\n return {\n type: \"OPEN_MUSIC_DIALOG\",\n };\n};\n\nexport const openRemoteDownloadDialog = () => {\n return {\n type: \"OPEN_REMOTE_DOWNLOAD_DIALOG\",\n };\n};\n\nexport const openTorrentDownloadDialog = () => {\n return {\n type: \"OPEN_TORRENT_DOWNLOAD_DIALOG\",\n };\n};\n\nexport const openDecompressDialog = () => {\n return {\n type: \"OPEN_DECOMPRESS_DIALOG\",\n };\n};\n\nexport const openCompressDialog = () => {\n return {\n type: \"OPEN_COMPRESS_DIALOG\",\n };\n};\n\nexport const openRelocateDialog = () => {\n return {\n type: \"OPEN_RELOCATE_DIALOG\",\n };\n};\n\nexport const openGetSourceDialog = () => {\n return {\n type: \"OPEN_GET_SOURCE_DIALOG\",\n };\n};\n\nexport const openCopyDialog = () => {\n return {\n type: \"OPEN_COPY_DIALOG\",\n };\n};\n\nexport const openLoadingDialog = (text) => {\n return {\n type: \"OPEN_LOADING_DIALOG\",\n text: text,\n };\n};\n\nexport const closeAllModals = () => {\n return {\n type: \"CLOSE_ALL_MODALS\",\n };\n};\n\nexport const toggleSnackbar = (vertical, horizontal, msg, color) => {\n return {\n type: \"TOGGLE_SNACKBAR\",\n vertical: vertical,\n horizontal: horizontal,\n msg: msg,\n color: color,\n };\n};\n\nexport const enableLoadUploader = () => {\n return {\n type: \"ENABLE_LOAD_UPLOADER\",\n };\n};\n\nexport const setModalsLoading = (status) => {\n return {\n type: \"SET_MODALS_LOADING\",\n status: status,\n };\n};\n\nexport const refreshFileList = () => {\n return {\n type: \"REFRESH_FILE_LIST\",\n };\n};\n\nexport const searchMyFile = (keywords) => {\n return {\n type: \"SEARCH_MY_FILE\",\n keywords: keywords,\n };\n};\n\nexport const showImgPreivew = (first) => {\n return {\n type: \"SHOW_IMG_PREIVEW\",\n first: first,\n };\n};\n\nexport const showAudioPreview = (first) => {\n return {\n type: \"SHOW_AUDIO_PREVIEW\",\n first: first,\n };\n};\n\nexport const audioPreviewSetIsOpen = (isOpen) => {\n return {\n type: \"AUDIO_PREVIEW_SET_IS_OPEN\",\n isOpen,\n };\n};\n\nexport const audioPreviewSetPlaying = (playingName,paused) => {\n return {\n type: \"AUDIO_PREVIEW_SET_PLAYING\",\n playingName,//the playing content name\n paused,\n };\n};\n\n\nexport const refreshStorage = () => {\n return {\n type: \"REFRESH_STORAGE\",\n };\n};\n\nexport const saveFile = () => {\n return {\n type: \"SAVE_FILE\",\n };\n};\n\nexport const setSiteConfig = (config) => {\n return {\n type: \"SET_SITE_CONFIG\",\n config: config,\n };\n};\n","import React, { useCallback, useState } from \"react\";\nimport { IconButton, makeStyles, Menu, MenuItem } from \"@material-ui/core\";\nimport ViewListIcon from \"@material-ui/icons/ViewList\";\nimport ViewSmallIcon from \"@material-ui/icons/ViewComfy\";\nimport ViewModuleIcon from \"@material-ui/icons/ViewModule\";\nimport TextTotateVerticalIcon from \"@material-ui/icons/TextRotateVertical\";\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport { Report as ReportIcon } from \"@material-ui/icons\";\nimport Report from \"../../Modals/Report\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Auth from \"../../../middleware/Auth\";\nimport {\n changeViewMethod,\n openResaveDialog,\n setShareUserPopover,\n} from \"../../../actions\";\nimport { changeSortMethod } from \"../../../redux/explorer/action\";\n\nconst useStyles = makeStyles((theme) => ({\n sideButton: {\n padding: \"8px\",\n marginRight: \"5px\",\n },\n}));\n\nconst sortOptions = [\"A-Z\", \"Z-A\", \"最早\", \"最新\", \"最小\", \"最大\"];\n\nexport default function SubActions({ isSmall, share, inherit }) {\n const dispatch = useDispatch();\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const OpenLoadingDialog = useCallback(\n (method) => dispatch(changeViewMethod(method)),\n [dispatch]\n );\n const ChangeSortMethod = useCallback(\n (method) => dispatch(changeSortMethod(method)),\n [dispatch]\n );\n const OpenResaveDialog = useCallback(\n (key) => dispatch(openResaveDialog(key)),\n [dispatch]\n );\n const SetShareUserPopover = useCallback(\n (e) => dispatch(setShareUserPopover(e)),\n [dispatch]\n );\n const [anchorSort, setAnchorSort] = useState(null);\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [openReport, setOpenReport] = useState(false);\n const showSortOptions = (e) => {\n setAnchorSort(e.currentTarget);\n };\n const handleMenuItemClick = (e, index) => {\n setSelectedIndex(index);\n const optionsTable = {\n 0: \"namePos\",\n 1: \"nameRev\",\n 2: \"timePos\",\n 3: \"timeRev\",\n 4: \"sizePos\",\n 5: \"sizeRes\",\n };\n ChangeSortMethod(optionsTable[index]);\n setAnchorSort(null);\n };\n\n const toggleViewMethod = () => {\n const newMethod =\n viewMethod === \"icon\"\n ? \"list\"\n : viewMethod === \"list\"\n ? \"smallIcon\"\n : \"icon\";\n Auth.SetPreference(\"view_method\", newMethod);\n OpenLoadingDialog(newMethod);\n };\n\n const classes = useStyles();\n return (\n <>\n {viewMethod === \"icon\" && (\n \n \n \n )}\n {viewMethod === \"list\" && (\n \n \n \n )}\n\n {viewMethod === \"smallIcon\" && (\n \n \n \n )}\n\n \n \n \n setAnchorSort(null)}\n >\n {sortOptions.map((option, index) => (\n handleMenuItemClick(event, index)}\n >\n {option}\n \n ))}\n \n {share && (\n <>\n OpenResaveDialog(share.key)}\n >\n \n \n setOpenReport(true)}\n >\n \n \n setOpenReport(false)}\n />\n \n )}\n {share && (\n SetShareUserPopover(e.currentTarget)}\n style={{ padding: 5 }}\n >\n \n \n )}\n \n );\n}\n","import React, { useCallback, useState } from \"react\";\nimport { FormControl, makeStyles, TextField } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@material-ui/core\";\nimport { toggleSnackbar } from \"../../actions/index\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport { reportReasons } from \"../../config\";\n\nconst useStyles = makeStyles((theme) => ({\n widthAnimation: {},\n shareUrl: {\n minWidth: \"400px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n },\n flexCenter: {\n alignItems: \"center\",\n },\n noFlex: {\n display: \"block\",\n },\n scoreCalc: {\n marginTop: 10,\n },\n}));\n\nexport default function Report(props) {\n const dispatch = useDispatch();\n const classes = useStyles();\n const [reason, setReason] = useState(\"0\");\n const [des, setDes] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const onClose = () => {\n props.onClose();\n setTimeout(() => {\n setDes(\"\");\n setReason(\"0\");\n }, 500);\n };\n\n const submitReport = () => {\n setLoading(true);\n API.post(\"/share/report/\" + props.share.key, {\n des: des,\n reason: parseInt(reason),\n })\n .then(() => {\n ToggleSnackbar(\"top\", \"right\", \"举报成功\", \"success\");\n setLoading(false);\n onClose();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n setLoading(false);\n });\n };\n\n return (\n \n 举报\n \n \n setReason(e.target.value)}\n >\n {reportReasons.map((v, k) => (\n }\n label={v}\n />\n ))}\n \n \n setDes(e.target.value)}\n variant=\"filled\"\n rows={4}\n />\n \n\n \n \n \n 提交\n \n \n \n );\n}\n","import React from \"react\";\nimport { Dialog } from \"@material-ui/core\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Button from \"@material-ui/core/Button\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\n\nexport default function PurchaseShareDialog(props) {\n return (\n \n \n 确定要支付 {props.score}积分 购买此分享?\n \n \n \n 购买后,您可以自由预览、下载此分享的所有内容,一定期限内不会重复扣费。\n \n \n \n \n props.callback()}\n color=\"primary\"\n autoFocus\n >\n 确定\n \n \n \n );\n}\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\nimport { blue } from \"@material-ui/core/colors\";\nimport { useSelector } from \"react-redux\";\n\nconst useStyles = makeStyles({\n avatar: {\n backgroundColor: blue[100],\n color: blue[600],\n },\n loadingContainer: {\n display: \"flex\",\n },\n loading: {\n marginTop: 10,\n marginLeft: 20,\n },\n});\n\nexport default function LoadingDialog() {\n const classes = useStyles();\n const open = useSelector((state) => state.viewUpdate.modals.loading);\n const text = useSelector((state) => state.viewUpdate.modals.loadingText);\n\n return (\n \n \n \n \n
{text}
\n
\n
\n
\n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport {\n toggleSnackbar,\n setModalsLoading,\n refreshFileList,\n} from \"../../actions/index\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function CopyDialog(props) {\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n const RefreshFileList = useCallback(() => {\n dispatch(refreshFileList());\n }, [dispatch]);\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n\n if (props.selected[0].type === \"dir\") {\n dirs.push(props.selected[0].id);\n } else {\n items.push(props.selected[0].id);\n }\n\n API.post(\"/object/copy\", {\n src_dir: props.selected[0].path,\n src: {\n dirs: dirs,\n items: items,\n },\n dst: selectedPath === \"//\" ? \"/\" : selectedPath,\n })\n .then(() => {\n props.onClose();\n RefreshFileList();\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n 复制到\n \n\n {selectedPath !== \"\" && (\n \n \n 复制到 {selectedPathName}\n \n \n )}\n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback,useEffect,useState } from \"react\";\nimport {\n Checkbox,\n FormControl,\n makeStyles,\n TextField,\n} from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n CircularProgress,\n} from \"@material-ui/core\";\nimport { toggleSnackbar } from \"../../actions/index\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport List from \"@material-ui/core/List\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport TimerIcon from \"@material-ui/icons/Timer\";\nimport CasinoIcon from \"@material-ui/icons/Casino\";\nimport AccountBalanceWalletIcon from \"@material-ui/icons/AccountBalanceWallet\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\nimport Divider from \"@material-ui/core/Divider\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport Typography from \"@material-ui/core/Typography\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport { Visibility, VisibilityOff } from \"@material-ui/icons\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport EyeIcon from \"@material-ui/icons/RemoveRedEye\";\nimport ToggleIcon from \"material-ui-toggle-icon\";\nimport { sizeToString } from \"../../utils\";\nimport ClipboardJS from 'clipboard';\nimport copy from 'copy-to-clipboard';\n\nconst useStyles = makeStyles((theme) => ({\n widthAnimation: {},\n shareUrl: {\n minWidth: \"400px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n },\n flexCenter: {\n alignItems: \"center\",\n },\n noFlex: {\n display: \"block\",\n },\n scoreCalc: {\n marginTop: 10,\n },\n}));\n\nconst ExpansionPanel = withStyles({\n root: {\n border: \"0px solid rgba(0, 0, 0, .125)\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {\n margin: \"auto\",\n },\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n padding: 0,\n \"&$expanded\": {},\n },\n content: {\n margin: 0,\n display: \"initial\",\n \"&$expanded\": {\n margin: \"0 0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n padding: 24,\n backgroundColor: theme.palette.background.default,\n },\n}))(MuiExpansionPanelDetails);\n\nexport default function CreatShare(props) {\n const [text, setText] = useState('1111111')\n new ClipboardJS('.share_copy', {\n text: function () {\n return text\n }\n })\n const copyData = useCallback( () => {\n setText('123esdsds')\n }, [])\n\n // const initScript = () => {\n // const script = document.createElement('script')\n // script.type = 'text/javascript'\n // script.async = true\n // script.src = 'https://cdn.jsdelivr.net/npm/clipboard@2.0.6/dist/clipboard.min.js'//这个代表的是script 的src\n // document.head.appendChild(script)\n // }\n const dispatch = useDispatch();\n const classes = useStyles();\n const math = useRouteMatch();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const scoreEnabled = useSelector((state) => state.siteConfig.score_enabled);\n const scoreRate = useSelector((state) => state.siteConfig.share_score_rate);\n const shareScoreprice = useSelector((state) => state.siteConfig.share_score_price);\n\n const [expanded, setExpanded] = React.useState(false);\n const [shareURL, setShareURL] = React.useState(\"\");\n const [values, setValues] = React.useState({\n password: \"\",\n downloads: 1,\n expires: 24 * 3600,\n showPassword: false,\n score: 0,\n showScore_show_: 0,\n get_score_: 0,\n get_k_rmb_:0,\n\n });\n const [shareOption, setShareOption] = React.useState({\n password: false,\n expire: false,\n score: false,\n preview: true,\n isQZ:false,\n });\n \n // const isQZ = (prop)=> {\n // if((props.selected.length > 0 && props.selected[0].size >= 104857600)){\n // return true;\n // }else{\n // return false;\n // }\n // };\n const GetShareScore = (prop)=> {\n if(props.selected.length > 0 && props.selected[0].size >= 104857600){\n const size_to_M = parseInt(props.selected[0].size / (1024*1024));\n //100M 是1积分\n const showScore_show = parseInt(size_to_M / 100);\n //计算超出部分的积分\n let out_score = 0 //超出的积分\n let get_score = 0 //赚取的积分\n let get_k_rmb = 0 //赚取的千次RMB\n if(parseFloat(values.score) > showScore_show){\n out_score = parseFloat(values.score) - showScore_show\n get_score = parseFloat((out_score * scoreRate) /100).toFixed(2)\n //计算千次下载积分和RMB\n get_score = 1000 * get_score\n get_k_rmb = get_score * shareScoreprice\n get_k_rmb = (Number(get_k_rmb) / 100).toFixed(2)\n }\n const html = '每人次下载最低需支付' +showScore_show+ '积分,超出部分可获得' +scoreRate+ '%分成
预计千次下载可获得' +get_score+ '积分,约' +get_k_rmb+ '元'\n const html_ = {__html:html};\n return
;\n }else{\n //计算\n let get_score = 0 //积分\n get_score = parseFloat((values.score * scoreRate) /100).toFixed(2)\n let get_k_rmb = 0 //赚取的千次RMB\n //计算千次下载积分和RMB\n get_score = 1000 * get_score\n get_k_rmb = get_score * shareScoreprice\n get_k_rmb = (Number(get_k_rmb) / 100).toFixed(2)\n const html = '每人次下载最低需支付0积分,超出部分可获得' +scoreRate+ '%分成
预计千次下载可获得' +get_score+ '积分,约' +get_k_rmb+ '元'\n const html_ = {__html:html};\n return
;\n }\n };\n const handleChange = (prop) => (event) => {\n // 输入密码\n if (prop === \"password\") {\n if (event.target.value === \"\") {\n setShareOption({ ...shareOption, password: false });\n } else {\n setShareOption({ ...shareOption, password: true });\n }\n }\n\n // 输入积分\n if (prop === \"score\") {\n if (event.target.value == \"0\") {\n setShareOption({ ...shareOption, score: false });\n } else {\n setShareOption({ ...shareOption, score: true });\n }\n setValues({ ...values, score: event.target.value });\n\n // if(props.selected[0].size >= 104857600){\n // //计算时看大于100M 的不允许小于最小积分\n // const size_to_M = sizeToString(props.selected[0].size);\n // const size_int = parseInt(size_to_M,10);\n // //100M 是1积分\n // const showScore = parseFloat(size_int / 100);\n // if(event.target.value < showScore){\n // setValues({ ...values, score: showScore });\n // }else{\n // setValues({ ...values, score: event.target.value });\n // }\n // }else{\n // setValues({ ...values, score: event.target.value });\n // }\n }else{\n setValues({ ...values, [prop]: event.target.value });\n }\n };\n\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n\n const randomPassword = () => {\n setShareOption({ ...shareOption, password: true });\n setValues({\n ...values,\n password: Math.random().toString(36).substr(2).slice(2, 8),\n showPassword: true,\n });\n };\n\n const handleExpand = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const handleCheck = (prop) => () => {\n if(prop === \"score\" && shareOption[\"isQZ\"]){\n return;\n }\n if (!shareOption[prop]) {\n handleExpand(prop)(null, true);\n }\n if (prop === \"password\" && shareOption[prop]) {\n setValues({\n ...values,\n password: \"\",\n });\n }\n if (prop === \"score\" && shareOption[prop]) {\n setValues({\n ...values,\n score: 0,\n });\n }\n setShareOption({ ...shareOption, [prop]: !shareOption[prop] });\n };\n\n const onClose = () => {\n props.onClose();\n setTimeout(() => {\n setShareURL(\"\");\n }, 500);\n };\n useEffect(() => {\n \n // initScript()\n // document.querySelector('.share_copy').click()\n }, [])\n useEffect(() => {\n if(props.selected.length > 0){\n \n // this.clipboard = window.Qiniu.ClipboardEx(\"#share_copy\");\n //恢复初始化组件 isQZ\n if(props.selected[0].size >= 104857600){\n setShareOption({ ...shareOption, isQZ: true });\n const size_to_M = parseInt(props.selected[0].size / (1024*1024));\n //100M 是1积分\n const showScore = parseInt(size_to_M / 100);\n setValues({ ...values, score: showScore });\n }else{\n setShareOption({ ...shareOption, isQZ: false });\n setValues({ ...values, score: 0 });\n }\n }\n \n },[props]);\n function copyToClip(contentArray, message) {\n let contents = \"\";\n for (let i = 0; i < contentArray.length; i++) {\n contents += contentArray[i] + \"\\n\";\n }\n const textarea = document.createElement('textarea');\n textarea.value = contents;\n document.body.appendChild(textarea);\n textarea.select();\n if (document.execCommand('copy')) {\n document.execCommand('copy');\n }\n document.body.removeChild(textarea);\n if (message == null) {\n alert(\"复制成功\");\n } else{\n alert(message);\n }\n }\n const copyLinkAndPwd = (e) => {\n e.preventDefault();\n let copyValue = \"分享地址:\" + shareURL;\n if (values.password !=\"\"){\n copyValue = copyValue + \"\\r\\n密码:\" + values.password\n }\n copy(copyValue);\n ToggleSnackbar(\"top\", \"right\", \"复制成功\", \"success\");\n }\n const submitShare = (e) => {\n e.preventDefault();\n //积分判断\n if(props.selected[0].size >= 104857600){\n //计算时看大于100M 的不允许小于最小积分\n const size_to_M = parseInt(props.selected[0].size / (1024*1024));\n //100M 是1积分\n const showScore = parseInt(size_to_M / 100);//最小积分\n if(values.score < showScore){\n ToggleSnackbar(\"top\", \"right\", \"该文件下载积分最小为\" + (showScore), \"warning\");\n return;\n }\n }\n props.setModalsLoading(true);\n const submitFormBody = {\n id: props.selected[0].id,\n is_dir: props.selected[0].type === \"dir\",\n password: values.password,\n downloads: shareOption.expire ? values.downloads : -1,\n expire: values.expires,\n score: parseFloat(values.score),\n // score: 0,\n preview: shareOption.preview,\n };\n\n API.post(\"/share\", submitFormBody)\n .then((response) => {\n setShareURL(response.data);\n // setValues({\n // password: \"\",\n // downloads: 1,\n // expires: 24 * 3600,\n // showPassword: false,\n // score: 0,\n // });\n // setShareOption({\n // password: false,\n // expire: false,\n // score: false,\n // });\n props.setModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n props.setModalsLoading(false);\n });\n };\n\n const handleFocus = (event) => event.target.select();\n \n return (\n \n 创建分享链接\n\n {shareURL === \"\" && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 分享密码\n \n \n \n \n \n \n \n \n }\n offIcon={\n \n }\n />\n \n \n }\n labelWidth={70}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1 次下载\n 2 次下载\n 3 次下载\n 4 次下载\n 5 次下载\n \n 20 次下载\n \n \n 50 次下载\n \n \n 100 次下载\n \n \n \n 或者\n \n \n 5 分钟\n 1 小时\n \n 1 天\n \n \n 7 天\n \n \n 30 天\n \n \n \n 后过期\n \n \n {scoreEnabled && (\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n 每人次下载需支付的积分\n \n \n \n {values.score !== 0 && scoreRate !== \"100\" && (\n \n {GetShareScore()}\n {/* {\"预计每人次下载可到账 \" +\n parseFloat((values.score * scoreRate) /\n 100).toFixed(2) +\n \" 积分\"} */}\n \n )}\n \n \n )}\n \n \n \n )}\n {shareURL !== \"\" && (\n \n \n {values.password !== \"\" && (\n \n \n \n )}\n \n )}\n\n \n \n {shareURL !== \"\" && (\n
\n \n 复制链接\n \n
\n )}\n \n\n {shareURL === \"\" && (\n
\n \n 创建分享链接\n {props.modalsLoading && (\n \n )}\n \n
\n )}\n
\n \n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport { toggleSnackbar, setModalsLoading } from \"../../actions/index\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport { filePath } from \"../../utils\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function DecompressDialog(props) {\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n API.post(\"/file/decompress\", {\n src: filePath(props.selected[0]),\n dst: selectedPath === \"//\" ? \"/\" : selectedPath,\n })\n .then(() => {\n props.onClose();\n ToggleSnackbar(\"top\", \"right\", \"解压缩任务已创建\", \"success\");\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n 解压送至\n \n\n {selectedPath !== \"\" && (\n \n \n 解压送至 {selectedPathName}\n \n \n )}\n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport { toggleSnackbar, setModalsLoading } from \"../../actions/index\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport TextField from \"@material-ui/core/TextField\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n backgroundColor: theme.palette.background.default,\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function CompressDialog(props) {\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [fileName, setFileName] = useState(\"\");\n // eslint-disable-next-line\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n\n API.post(\"/file/compress\", {\n src: {\n dirs: dirs,\n items: items,\n },\n name: fileName,\n dst: selectedPath === \"//\" ? \"/\" : selectedPath,\n })\n .then(() => {\n props.onClose();\n ToggleSnackbar(\"top\", \"right\", \"压缩任务已创建\", \"success\");\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n 存放到\n \n\n {selectedPath !== \"\" && (\n \n \n setFileName(e.target.value)}\n value={fileName}\n fullWidth\n autoFocus\n id=\"standard-basic\"\n label=\"压缩文件名\"\n />\n \n \n )}\n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport { toggleSnackbar, setModalsLoading } from \"../../actions/index\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n input: {\n width: 250,\n },\n}));\n\nexport default function RelocateDialog(props) {\n const [selectedPolicy, setSelectedPolicy] = useState(\"\");\n const [policies, setPolicies] = useState([]);\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n\n const submitRelocate = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n\n API.post(\"/file/relocate\", {\n src: {\n dirs: dirs,\n items: items,\n },\n dst_policy_id: selectedPolicy,\n })\n .then(() => {\n props.onClose();\n ToggleSnackbar(\"top\", \"right\", \"转移任务已创建\", \"success\");\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n useEffect(() => {\n if (props.open) {\n API.get(\"/user/setting/policies\")\n .then((response) => {\n setPolicies(response.data.options);\n setSelectedPolicy(response.data.current.id);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n }\n\n // eslint-disable-next-line\n }, [props.open]);\n\n const classes = useStyles();\n\n return (\n \n 转移到存储策略\n\n \n setSelectedPolicy(e.target.value)}\n >\n {policies.map((v, k) => (\n \n {v.name}\n \n ))}\n \n \n\n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport {\n closeAllModals,\n toggleSnackbar,\n setModalsLoading,\n refreshFileList,\n refreshStorage,\n openLoadingDialog,\n} from \"../../actions/index\";\nimport PathSelector from \"./PathSelector\";\nimport API, { baseURL } from \"../../middleware/Api\";\nimport {\n withStyles,\n Button,\n TextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport Loading from \"../Modals/Loading\";\nimport CopyDialog from \"../Modals/Copy\";\nimport CreatShare from \"../Modals/CreateShare\";\nimport { withRouter } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport PurchaseShareDialog from \"../Modals/PurchaseShare\";\nimport Auth from \"../../middleware/Auth\";\nimport DecompressDialog from \"../Modals/Decompress\";\nimport CompressDialog from \"../Modals/Compress\";\nimport RelocateDialog from \"../Modals/Relocate\";\n\nconst styles = (theme) => ({\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n selected: state.explorer.selected,\n modalsStatus: state.viewUpdate.modals,\n modalsLoading: state.viewUpdate.modalsLoading,\n dirList: state.explorer.dirList,\n fileList: state.explorer.fileList,\n dndSignale: state.explorer.dndSignal,\n dndTarget: state.explorer.dndTarget,\n dndSource: state.explorer.dndSource,\n loading: state.viewUpdate.modals.loading,\n loadingText: state.viewUpdate.modals.loadingText,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n closeAllModals: () => {\n dispatch(closeAllModals());\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n setModalsLoading: (status) => {\n dispatch(setModalsLoading(status));\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n refreshStorage: () => {\n dispatch(refreshStorage());\n },\n openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n };\n};\n\nclass ModalsCompoment extends Component {\n state = {\n newFolderName: \"\",\n newFileName: \"\",\n newName: \"\",\n selectedPath: \"\",\n selectedPathName: \"\",\n secretShare: false,\n sharePwd: \"\",\n shareUrl: \"\",\n downloadURL: \"\",\n remoteDownloadPathSelect: false,\n source: \"\",\n purchaseCallback: null,\n };\n\n handleInputChange = (e) => {\n this.setState({\n [e.target.id]: e.target.value,\n });\n };\n\n newNameSuffix = \"\";\n downloaded = false;\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (this.props.dndSignale !== nextProps.dndSignale) {\n this.dragMove(nextProps.dndSource, nextProps.dndTarget);\n return;\n }\n if (this.props.loading !== nextProps.loading) {\n // 打包下载\n if (nextProps.loading === true) {\n if (nextProps.loadingText === \"打包中...\") {\n if (\n pathHelper.isSharePage(this.props.location.pathname) &&\n this.props.share &&\n this.props.share.score > 0\n ) {\n this.scoreHandler(this.archiveDownload);\n return;\n }\n this.archiveDownload();\n } else if (nextProps.loadingText === \"获取下载地址...\") {\n if (\n pathHelper.isSharePage(this.props.location.pathname) &&\n this.props.share &&\n this.props.share.score > 0\n ) {\n this.scoreHandler(this.Download);\n return;\n }\n this.Download();\n }\n }\n return;\n }\n if (this.props.modalsStatus.rename !== nextProps.modalsStatus.rename) {\n const name = nextProps.selected[0].name;\n this.setState({\n newName: name,\n });\n return;\n }\n if (\n this.props.modalsStatus.getSource !==\n nextProps.modalsStatus.getSource &&\n nextProps.modalsStatus.getSource === true\n ) {\n API.get(\"/file/source/\" + this.props.selected[0].id)\n .then((response) => {\n this.setState({\n source: response.data.url,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n };\n\n scoreHandler = (callback) => {\n // 分享页面需要积分下载\n if (!Auth.Check()) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"登录后才能继续操作\",\n \"warning\"\n );\n this.onClose();\n return;\n }\n if (!Auth.GetUser().group.shareFree && !this.downloaded) {\n this.setState({\n purchaseCallback: () => {\n this.setState({\n purchaseCallback: null,\n });\n callback();\n },\n });\n } else {\n callback();\n }\n };\n\n Download = () => {\n let reqURL = \"\";\n if (this.props.selected[0].key) {\n const downloadPath =\n this.props.selected[0].path === \"/\"\n ? this.props.selected[0].path + this.props.selected[0].name\n : this.props.selected[0].path +\n \"/\" +\n this.props.selected[0].name;\n reqURL =\n \"/share/download/\" +\n this.props.selected[0].key +\n \"?path=\" +\n encodeURIComponent(downloadPath);\n } else {\n reqURL = \"/file/download/\" + this.props.selected[0].id;\n }\n function downloadFile(url_org,fileName){\n const request = new XMLHttpRequest();\n request.responseType = \"blob\";\n const fileUrl = url_org; // 文件路径\n request.open(\"GET\", fileUrl);\n request.onload = function() {\n const url = window.URL.createObjectURL(this.response);\n const a = document.createElement(\"a\");\n document.body.appendChild(a);\n a.href = url;\n a.download = fileName;\n a.click();\n }\n request.send();\n }\n \n API.put(reqURL)\n .then((response) => {\n //window.location.href = response.data;\n // const a = document.createElement('a');\n // a.href=response.data; \n // a.click() 8730\n // if ((response.data.fileSuffix.toLowerCase() == '.txt' \n // || response.data.fileSuffix.toLowerCase() == '.png'\n // || response.data.fileSuffix.toLowerCase() == '.jpg'\n // || response.data.fileSuffix.toLowerCase() == '.jpeg'\n // || response.data.fileSuffix.toLowerCase() == '.gif'\n // || response.data.fileSuffix.toLowerCase() == '.bmp'\n // || response.data.fileSuffix.toLowerCase() == '.pic'\n // || response.data.fileSuffix.toLowerCase() == '.svg') && response.data.fileSize <= (1048576 * 1)){\n // downloadFile(response.data.url,response.data.fileName)\n // }else{\n // const link = document.createElement('a');\n // link.setAttribute(\"href\", response.data.url);\n // link.setAttribute(\"download\", response.data.fileName);\n // link.style.visibility = 'hidden';\n // document.body.appendChild(link);\n // link.click();\n // document.body.removeChild(link);\n // }\n \n const link = document.createElement('a');\n link.setAttribute(\"href\", response.data.url);\n link.setAttribute(\"download\", response.data.fileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n // const link = document.createElement('a');\n // link.setAttribute(\"href\", response.data);\n // link.setAttribute(\"download\", response.data);\n // link.style.visibility = 'hidden';\n // document.body.appendChild(link);\n // link.click();\n // document.body.removeChild(link);\n\n //window.location.assign(response.data);\n this.onClose();\n this.downloaded = true;\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.onClose();\n });\n };\n\n archiveDownload = () => {\n const dirs = [],\n items = [];\n this.props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n return null;\n });\n\n let reqURL = \"/file/archive\";\n const postBody = {\n items: items,\n dirs: dirs,\n };\n if (pathHelper.isSharePage(this.props.location.pathname)) {\n reqURL = \"/share/archive/\" + window.shareInfo.key;\n postBody[\"path\"] = this.props.selected[0].path;\n }\n\n API.post(reqURL, postBody)\n .then((response) => {\n if (response.rawData.code === 0) {\n this.onClose();\n window.location.assign(response.data);\n } else {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n response.rawData.msg,\n \"warning\"\n );\n }\n this.onClose();\n this.props.refreshStorage();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.onClose();\n });\n };\n\n submitRemove = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n this.props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n API.delete(\"/object\", {\n data: {\n items: items,\n dirs: dirs,\n },\n })\n .then((response) => {\n if (response.rawData.code === 0) {\n this.onClose();\n setTimeout(this.props.refreshFileList, 500);\n } else {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n response.rawData.msg,\n \"warning\"\n );\n }\n this.props.setModalsLoading(false);\n this.props.refreshStorage();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n submitResave = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n API.post(\"/share/save/\" + window.shareKey, {\n path:\n this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.onClose();\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"文件已保存\",\n \"success\"\n );\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n this.props.setModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n this.props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n API.patch(\"/object\", {\n action: \"move\",\n src_dir: this.props.selected[0].path,\n src: {\n dirs: dirs,\n items: items,\n },\n dst: this.DragSelectedPath\n ? this.DragSelectedPath\n : this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n })\n .then(() => {\n this.props.closeAllModals();\n });\n };\n\n dragMove = (source, target) => {\n if (this.props.selected.length === 0) {\n this.props.selected[0] = source;\n }\n let doMove = true;\n\n // eslint-disable-next-line\n this.props.selected.map((value) => {\n // 根据ID过滤\n if (value.id === target.id && value.type === target.type) {\n doMove = false;\n // eslint-disable-next-line\n return;\n }\n // 根据路径过滤\n if (\n value.path ===\n target.path + (target.path === \"/\" ? \"\" : \"/\") + target.name\n ) {\n doMove = false;\n }\n });\n if (doMove) {\n this.DragSelectedPath =\n target.path === \"/\"\n ? target.path + target.name\n : target.path + \"/\" + target.name;\n this.props.openLoadingDialog(\"处理中...\");\n this.submitMove();\n }\n };\n\n submitRename = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n const newName = this.state.newName;\n\n const src = {\n dirs: [],\n items: [],\n };\n\n if (this.props.selected[0].type === \"dir\") {\n src.dirs[0] = this.props.selected[0].id;\n } else {\n src.items[0] = this.props.selected[0].id;\n }\n\n // 检查重名\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === newName;\n }) !== -1 ||\n this.props.fileList.findIndex((value) => {\n return value.name === newName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"新名称与已有文件重复\",\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.post(\"/object/rename\", {\n action: \"rename\",\n src: src,\n new_name: newName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n }\n };\n\n submitCreateNewFolder = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === this.state.newFolderName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"文件夹名称重复\",\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.put(\"/directory\", {\n path:\n (this.props.path === \"/\" ? \"\" : this.props.path) +\n \"/\" +\n this.state.newFolderName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.setModalsLoading(false);\n\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n //this.props.toggleSnackbar();\n };\n\n submitCreateNewFile = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === this.state.newFileName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"文件名称重复\",\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.post(\"/file/create\", {\n path:\n (this.props.path === \"/\" ? \"\" : this.props.path) +\n \"/\" +\n this.state.newFileName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.setModalsLoading(false);\n\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n //this.props.toggleSnackbar();\n };\n\n submitTorrentDownload = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n API.post(\"/aria2/torrent/\" + this.props.selected[0].id, {\n dst:\n this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"任务已创建\",\n \"success\"\n );\n this.onClose();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n submitDownload = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n API.post(\"/aria2/url\", {\n url: this.state.downloadURL,\n dst:\n this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"任务已创建\",\n \"success\"\n );\n this.onClose();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n this.setState({\n selectedPath: path,\n selectedPathName: folder.name,\n });\n };\n\n remoteDownloadNext = () => {\n this.props.closeAllModals();\n this.setState({\n remoteDownloadPathSelect: true,\n });\n };\n\n onClose = () => {\n this.setState({\n newFolderName: \"\",\n newFileName: \"\",\n newName: \"\",\n selectedPath: \"\",\n selectedPathName: \"\",\n secretShare: false,\n sharePwd: \"\",\n downloadURL: \"\",\n shareUrl: \"\",\n remoteDownloadPathSelect: false,\n source: \"\",\n });\n this.newNameSuffix = \"\";\n this.props.closeAllModals();\n };\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.checked });\n };\n\n render() {\n const { classes } = this.props;\n\n return (\n
\n \n {\n this.setState({ purchaseCallback: null });\n this.onClose();\n }}\n />\n \n \n 获取文件外链\n \n\n \n
\n \n \n
\n \n \n \n \n \n 新建文件夹\n\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n 创建\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n 新建文件\n\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n 创建\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n 重命名\n \n \n 输入{\" \"}\n \n {this.props.selected.length === 1\n ? this.props.selected[0].name\n : \"\"}\n {\" \"}\n 的新名称:\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n 确定\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n\n \n 移动至\n \n\n {this.state.selectedPath !== \"\" && (\n \n \n 移动至{\" \"}\n {this.state.selectedPathName}\n \n \n )}\n \n \n
\n \n 确定\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n 保存至\n \n\n {this.state.selectedPath !== \"\" && (\n \n \n 保存至{\" \"}\n {this.state.selectedPathName}\n \n \n )}\n \n \n
\n \n 确定\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n 删除对象\n\n \n \n 确定要删除\n {this.props.selected.length === 1 && (\n {this.props.selected[0].name} \n )}\n {this.props.selected.length > 1 && (\n \n 这{this.props.selected.length}个对象\n \n )}\n 吗?\n \n \n \n \n
\n \n 确定\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n\n \n 音频播放\n\n \n \n {this.props.selected.length !== 0 && (\n \n )}\n \n \n \n \n \n \n \n \n 新建离线下载任务\n \n\n \n \n \n \n \n \n \n \n 下一步\n \n \n \n \n \n 选择存储位置\n \n \n\n {this.state.selectedPath !== \"\" && (\n \n \n 下载至{\" \"}\n {this.state.selectedPathName}\n \n \n )}\n \n \n
\n \n 创建任务\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n \n 选择存储位置\n \n \n\n {this.state.selectedPath !== \"\" && (\n \n \n 下载至{\" \"}\n {this.state.selectedPathName}\n \n \n )}\n \n \n
\n \n 创建任务\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n \n \n
\n );\n }\n}\n\nModalsCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst Modals = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ModalsCompoment)));\n\nexport default Modals;\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport AutoHidden from \"./AutoHidden\";\nimport statusHelper from \"../../utils/page\";\nimport Fab from \"@material-ui/core/Fab\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport clsx from \"clsx\";\n\nconst useStyles = makeStyles((theme) => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n badge: {\n position: \"absolute\",\n bottom: 26,\n top: \"auto\",\n zIndex: 9999,\n right: 7,\n },\n fabProgress: {\n color: green[500],\n position: \"absolute\",\n top: -6,\n left: -6,\n zIndex: 1,\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonSuccess: {\n backgroundColor: green[500],\n \"&:hover\": {\n backgroundColor: green[700],\n },\n },\n}));\n\nexport default function SaveButton(props) {\n const classes = useStyles();\n const buttonClassname = clsx({\n [classes.buttonSuccess]: props.status === \"success\",\n });\n\n return (\n \n
\n
\n \n \n {props.status === \"success\" ? (\n \n ) : (\n \n )}\n \n \n {props.status === \"loading\" && (\n \n )}\n
\n
\n
\n );\n}\n","export const sizeToString = (bytes) => {\n if (bytes === 0 || bytes === \"0\") return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return (bytes / Math.pow(k, i)).toFixed(1) + \" \" + sizes[i];\n};\n\nexport const fixUrlHash = (path) => {\n return path;\n};\n\nexport const setCookie = (name, value, days) => {\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n document.cookie = name + \"=\" + (value || \"\") + \"; path=/\";\n};\n\nexport const setGetParameter = (paramName, paramValue) => {\n let url = window.location.href;\n\n if (url.indexOf(paramName + \"=\") >= 0) {\n const prefix = url.substring(0, url.indexOf(paramName));\n let suffix = url.substring(url.indexOf(paramName));\n suffix = suffix.substring(suffix.indexOf(\"=\") + 1);\n suffix =\n suffix.indexOf(\"&\") >= 0\n ? suffix.substring(suffix.indexOf(\"&\"))\n : \"\";\n url = prefix + paramName + \"=\" + paramValue + suffix;\n } else {\n if (url.indexOf(\"?\") < 0) url += \"?\" + paramName + \"=\" + paramValue;\n else url += \"&\" + paramName + \"=\" + paramValue;\n }\n if (url === window.location.href) {\n return;\n }\n window.history.pushState(null, null, url);\n};\n\nexport const allowSharePreview = () => {\n if (!window.isSharePage) {\n return true;\n }\n if (window.isSharePage) {\n if (window.shareInfo.allowPreview) {\n return true;\n }\n if (window.userInfo.uid === -1) {\n return false;\n }\n return true;\n }\n};\n\nexport const checkGetParameters = (field) => {\n const url = window.location.href;\n if (url.indexOf(\"?\" + field + \"=\") !== -1) return true;\n else if (url.indexOf(\"&\" + field + \"=\") !== -1) return true;\n return false;\n};\n\nexport const changeThemeColor = (color) => {\n const metaThemeColor = window.document.querySelector(\n \"meta[name=theme-color]\"\n );\n metaThemeColor.setAttribute(\"content\", color);\n};\n\nexport function bufferDecode(value) {\n return Uint8Array.from(atob(value), (c) => c.charCodeAt(0));\n}\n\n// ArrayBuffer to URLBase64\nexport function bufferEncode(value) {\n return btoa(String.fromCharCode.apply(null, new Uint8Array(value)))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=/g, \"\");\n}\n\nexport function pathBack(path) {\n const folders =\n path !== null\n ? path.substr(1).split(\"/\")\n : this.props.path.substr(1).split(\"/\");\n return \"/\" + folders.slice(0, folders.length - 1).join(\"/\");\n}\n\nexport function filePath(file) {\n return file.path === \"/\"\n ? file.path + file.name\n : file.path + \"/\" + file.name;\n}\n\nexport function hex2bin(hex) {\n return parseInt(hex, 16).toString(2).padStart(8, \"0\");\n}\n\nexport function pathJoin(parts, sep) {\n const separator = sep || \"/\";\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(\"^\" + separator), \"\");\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(separator + \"$\"), \"\");\n }\n return part;\n });\n return parts.join(separator);\n}\n\nexport function basename(path) {\n const pathList = path.split(\"/\");\n pathList.pop();\n return pathList.join(\"/\") === \"\" ? \"/\" : pathList.join(\"/\");\n}\n\nexport function filename(path) {\n const pathList = path.split(\"/\");\n return pathList.pop();\n}\n\nexport function randomStr(length) {\n let result = \"\";\n const characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(\n Math.floor(Math.random() * charactersLength)\n );\n }\n return result;\n}\n\nexport function getNumber(base, conditions) {\n conditions.forEach((v) => {\n if (v) {\n base++;\n }\n });\n return base;\n}\n\nexport const isMac = () => {\n return navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0;\n};\n\nexport function vhCheck() {\n const vh = window.innerHeight;\n document.documentElement.style.setProperty(\"--vh\", `${vh}px`);\n}\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\nimport { Paper, useTheme } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport pathHelper from \"../../utils/page\";\nimport SaveButton from \"../Dial/Save\";\nimport { codePreviewSuffix } from \"../../config\";\nimport TextLoading from \"../Placeholder/TextLoading\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Divider from \"@material-ui/core/Divider\";\nconst MonacoEditor = React.lazy(() =>\n import(/* webpackChunkName: \"codeEditor\" */ \"react-monaco-editor\")\n);\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 50,\n },\n editor: {\n borderRadius: \"4px\",\n },\n \"@global\": {\n \".overflow-guard\": {\n borderRadius: \"4px!important\",\n },\n },\n formControl: {\n margin: \"8px 16px 8px 16px\",\n },\n toobar: {\n textAlign: \"right\",\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function CodeViewer() {\n const [content, setContent] = useState(\"\");\n const [status, setStatus] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [suffix, setSuffix] = useState(\"javascript\");\n\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n const theme = useTheme();\n\n const dispatch = useDispatch();\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n if (!pathHelper.isSharePage(location.pathname)) {\n const path = query.get(\"p\").split(\"/\");\n const extension = query.get(\"p\").split(\".\");\n setSuffix(codePreviewSuffix[extension.pop()]);\n SetSubTitle(path[path.length - 1]);\n } else {\n const extension = query.get(\"name\").split(\".\");\n setSuffix(codePreviewSuffix[extension.pop()]);\n SetSubTitle(query.get(\"name\"));\n }\n // eslint-disable-next-line\n }, [math.params[0], location]);\n\n useEffect(() => {\n let requestURL = \"/file/content/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/content/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n\n setLoading(true);\n API.get(requestURL, { responseType: \"arraybuffer\" })\n .then((response) => {\n const buffer = new Buffer(response.rawData, \"binary\");\n const textdata = buffer.toString(); // for string\n setContent(textdata);\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"无法读取文件内容,\" + error.message,\n \"error\"\n );\n })\n .then(() => {\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [math.params[0]]);\n\n const save = () => {\n setStatus(\"loading\");\n API.put(\"/file/update/\" + query.get(\"id\"), content)\n .then(() => {\n setStatus(\"success\");\n setTimeout(() => setStatus(\"\"), 2000);\n })\n .catch((error) => {\n setStatus(\"\");\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const classes = useStyles();\n const isSharePage = pathHelper.isSharePage(location.pathname);\n return (\n
\n \n
\n \n setSuffix(e.target.value)}\n >\n {Array.from(\n new Set(\n Object.keys(codePreviewSuffix).map((k) => {\n return codePreviewSuffix[k];\n })\n )\n ).map((extension) => (\n // eslint-disable-next-line react/jsx-key\n \n {extension}\n \n ))}\n \n \n
\n \n {loading && }\n {!loading && (\n }>\n setContent(value)}\n />\n \n )}\n
\n {!isSharePage && }\n
\n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport {} from \"../../actions\";\nimport classNames from \"classnames\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport InfoIcon from \"@material-ui/icons/Info\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport WarningIcon from \"@material-ui/icons/Warning\";\n\nimport { green, amber } from \"@material-ui/core/colors\";\n\nimport {\n withStyles,\n SnackbarContent,\n Snackbar,\n IconButton,\n} from \"@material-ui/core\";\n\nconst mapStateToProps = (state) => {\n return {\n snackbar: state.viewUpdate.snackbar,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles1 = (theme) => ({\n success: {\n backgroundColor: theme.palette.success.main,\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n info: {\n backgroundColor: theme.palette.info.main,\n },\n warning: {\n backgroundColor: theme.palette.warning.main,\n },\n icon: {\n fontSize: 20,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1),\n },\n message: {\n display: \"flex\",\n alignItems: \"center\",\n },\n});\n\nfunction MySnackbarContent(props) {\n const { classes, className, message, onClose, variant, ...other } = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n );\n}\nMySnackbarContent.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf([\"alert\", \"success\", \"warning\", \"error\", \"info\"])\n .isRequired,\n};\n\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\nconst styles = (theme) => ({\n margin: {\n margin: theme.spacing(1),\n },\n});\nclass SnackbarCompoment extends Component {\n state = {\n open: false,\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (nextProps.snackbar.toggle !== this.props.snackbar.toggle) {\n this.setState({ open: true });\n }\n };\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nconst AlertBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(SnackbarCompoment));\n\nexport default AlertBar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport {\n LogoutVariant,\n HomeAccount,\n DesktopMacDashboard,\n AccountArrowRight,\n AccountPlus,\n} from \"mdi-material-ui\";\nimport ChatIcon from '@material-ui/icons/Chat';\nimport {\n setSessionStatus,\n setUserPopover,\n toggleSnackbar,\n} from \"../../actions\";\nimport { withRouter } from \"react-router-dom\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n withStyles,\n Avatar,\n Popover,\n Typography,\n Chip,\n ListItemIcon,\n MenuItem,\n Divider,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport pathHelper from \"../../utils/page\";\n\nconst mapStateToProps = (state) => {\n return {\n anchorEl: state.viewUpdate.userPopoverAnchorEl,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n setSessionStatus: (status) => {\n dispatch(setSessionStatus(status));\n },\n };\n};\nconst styles = () => ({\n avatar: {\n width: \"30px\",\n height: \"30px\",\n },\n header: {\n display: \"flex\",\n padding: \"20px 20px 20px 20px\",\n },\n largeAvatar: {\n height: \"90px\",\n width: \"90px\",\n },\n info: {\n marginLeft: \"10px\",\n width: \"139px\",\n },\n badge: {\n marginTop: \"10px\",\n },\n visitorMenu: {\n width: 200,\n },\n});\n\nclass UserAvatarPopoverCompoment extends Component {\n handleClose = () => {\n this.props.setUserPopover(null);\n };\n\n openURL = (url) => {\n window.location.href = url;\n };\n\n sigOut = () => {\n API.delete(\"/user/session/\")\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"您已退出登录\",\n \"success\"\n );\n Auth.signout();\n window.location.reload();\n this.props.setSessionStatus(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"warning\"\n );\n })\n .then(() => {\n this.handleClose();\n });\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n const isAdminPage = pathHelper.isAdminPage(\n this.props.location.pathname\n );\n \n return (\n \n {!Auth.Check() && (\n
\n \n this.props.history.push(\"/login\")}\n >\n \n \n \n 登录\n \n this.props.history.push(\"/signup\")}\n >\n \n \n \n 注册\n \n
\n )}\n {Auth.Check() && (\n
\n
\n
\n \n
\n
\n {user.nickname}\n \n {user.user_name}\n \n 积分:{(user.score + user.share_score).toFixed(2)}\n \n
\n
\n
\n \n {!isAdminPage && (\n {\n this.handleClose();\n this.props.history.push(\n \"/profile/\" + user.id\n );\n }}\n >\n \n \n \n 个人主页\n \n )}\n {!isAdminPage && (\n {\n this.handleClose();\n this.props.history.push(\n \"/WXBind\"\n );\n }}\n >\n \n \n \n 绑定微信\n \n )}\n {user.group.id === 1 && (\n {\n this.handleClose();\n this.props.history.push(\"/admin/home\");\n }}\n >\n \n \n \n 管理面板\n \n )}\n\n \n \n \n \n 退出登录\n \n
\n
\n )}\n \n );\n }\n}\n\nUserAvatarPopoverCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserAvatarPopover = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(UserAvatarPopoverCompoment)));\n\nexport default UserAvatarPopover;\n","import React, { useCallback } from \"react\";\nimport {\n Avatar,\n IconButton,\n ListItem,\n ListItemAvatar,\n ListItemText,\n makeStyles,\n} from \"@material-ui/core\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { Nas } from \"mdi-material-ui\";\nimport Popover from \"@material-ui/core/Popover\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport { Check } from \"@material-ui/icons\";\nimport Backup from \"@material-ui/icons/Backup\";\nimport { blue, green } from \"@material-ui/core/colors\";\nimport List from \"@material-ui/core/List\";\n\nconst useStyles = makeStyles(() => ({\n uploadFromFile: {\n backgroundColor: blue[100],\n color: blue[600],\n },\n policySelected: {\n backgroundColor: green[100],\n color: green[800],\n },\n}));\n\nconst PolicySwitcher = () => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [policies, setPolicies] = React.useState({\n current: { id: \"\", name: \"\" },\n options: [],\n });\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const handleClick = (event) => {\n if (policies.current.id === \"\") {\n API.get(\"/user/setting/policies\", {})\n .then((response) => {\n setPolicies(response.data);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n }\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const switchTo = (id) => {\n if (id === policies.current.id) {\n handleClose();\n return;\n }\n API.patch(\"/user/setting/policy\", {\n id: id,\n })\n .then(() => {\n window.location.reload();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n const open = Boolean(anchorEl);\n const id = open ? \"simple-popover\" : undefined;\n\n const classes = useStyles();\n return (\n <>\n \n \n \n \n \n \n \n {policies.options.map((value, index) => (\n switchTo(value.id)}\n >\n \n {value.id === policies.current.id && (\n \n \n \n )}\n {value.id !== policies.current.id && (\n \n \n \n )}\n \n \n \n ))}\n \n \n \n );\n};\n\nexport default PolicySwitcher;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport SettingIcon from \"@material-ui/icons/Settings\";\nimport UserAvatarPopover from \"./UserAvatarPopover\";\nimport { AccountCircle } from \"mdi-material-ui\";\nimport { setUserPopover } from \"../../actions\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n withStyles,\n Grow,\n Avatar,\n IconButton,\n Tooltip,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\nimport PolicySwitcher from \"./PolicySwitcher\";\nimport { Home } from \"@material-ui/icons\";\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n };\n};\n\nconst styles = (theme) => ({\n mobileHidden: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n whiteSpace: \"nowrap\",\n },\n avatar: {\n width: \"30px\",\n height: \"30px\",\n },\n header: {\n display: \"flex\",\n padding: \"20px 20px 20px 20px\",\n },\n largeAvatar: {\n height: \"90px\",\n width: \"90px\",\n },\n info: {\n marginLeft: \"10px\",\n width: \"139px\",\n },\n badge: {\n marginTop: \"10px\",\n },\n visitorMenu: {\n width: 200,\n },\n});\n\nclass UserAvatarCompoment extends Component {\n state = {\n anchorEl: null,\n };\n\n showUserInfo = (e) => {\n this.props.setUserPopover(e.currentTarget);\n };\n\n handleClose = () => {\n this.setState({\n anchorEl: null,\n });\n };\n\n openURL = (url) => {\n window.location.href = url;\n };\n\n returnHome = () => {\n window.location.href = \"/home\";\n };\n\n render() {\n const { classes } = this.props;\n const loginCheck = Auth.Check(this.props.isLogin);\n const user = Auth.GetUser(this.props.isLogin);\n const isAdminPage = pathHelper.isAdminPage(\n this.props.location.pathname\n );\n\n return (\n
\n \n
\n {!isAdminPage && (\n <>\n \n {loginCheck && (\n <>\n {/* */}\n \n \n this.props.history.push(\n \"/setting?\"\n )\n }\n color=\"inherit\"\n >\n \n \n \n \n )}\n \n )}\n {isAdminPage && (\n \n \n \n \n \n )}\n \n {!loginCheck && }\n {loginCheck && (\n \n )}\n {\" \"}\n
\n \n \n
\n );\n }\n}\n\nUserAvatarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserAvatar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(UserAvatarCompoment)));\n\nexport default UserAvatar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\nimport { connect } from \"react-redux\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport MusicNote from \"@material-ui/icons/MusicNote\";\nimport BackIcon from \"@material-ui/icons/ArrowBack\";\nimport SdStorage from \"@material-ui/icons/SdStorage\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport OpenFolderIcon from \"@material-ui/icons/FolderOpen\";\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\nimport MoveIcon from \"@material-ui/icons/Input\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport MenuIcon from \"@material-ui/icons/Menu\";\nimport { isPreviewable } from \"../../config\";\nimport {\n drawerToggleAction,\n setSelectedTarget,\n navigateTo,\n openCreateFolderDialog,\n changeContextMenu,\n searchMyFile,\n saveFile,\n openMusicDialog,\n showImgPreivew,\n toggleSnackbar,\n openMoveDialog,\n openRemoveDialog,\n openShareDialog,\n openRenameDialog,\n openLoadingDialog,\n setSessionStatus,\n openPreview,\n audioPreviewSetIsOpen,\n} from \"../../actions\";\nimport {\n allowSharePreview,\n checkGetParameters,\n changeThemeColor,\n} from \"../../utils\";\nimport Uploader from \"../Upload/Uploader.js\";\nimport { sizeToString, vhCheck } from \"../../utils\";\nimport pathHelper from \"../../utils/page\";\nimport SezrchBar from \"./SearchBar\";\nimport StorageBar from \"./StorageBar\";\nimport UserAvatar from \"./UserAvatar\";\nimport UserInfo from \"./UserInfo\";\nimport { AccountArrowRight, AccountPlus, LogoutVariant } from \"mdi-material-ui\";\nimport { withRouter } from \"react-router-dom\";\nimport {\n AppBar,\n Toolbar,\n Typography,\n withStyles,\n withTheme,\n Drawer,\n SwipeableDrawer,\n IconButton,\n Hidden,\n ListItem,\n ListItemIcon,\n ListItemText,\n List,\n Grow,\n Tooltip,\n} from \"@material-ui/core\";\nimport Auth from \"../../middleware/Auth\";\nimport API from \"../../middleware/Api\";\nimport FileTag from \"./FileTags\";\nimport { Assignment, Devices, MoreHoriz, Settings } from \"@material-ui/icons\";\nimport Divider from \"@material-ui/core/Divider\";\nimport SubActions from \"../FileManager/Navigator/SubActions\";\nvhCheck();\nconst drawerWidth = 240;\nconst drawerWidthMobile = 270;\n\nconst mapStateToProps = (state) => {\n return {\n desktopOpen: state.viewUpdate.open,\n selected: state.explorer.selected,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n path: state.navigator.path,\n keywords: state.explorer.keywords,\n title: state.siteConfig.title,\n subTitle: state.viewUpdate.subTitle,\n loadUploader: state.viewUpdate.loadUploader,\n isLogin: state.viewUpdate.isLogin,\n audioPreviewPlayingName:state.explorer.audioPreview.playingName,\n audioPreviewIsOpen:state.explorer.audioPreview.isOpen,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n handleDesktopToggle: (open) => {\n dispatch(drawerToggleAction(open));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n changeContextMenu: (type, open) => {\n dispatch(changeContextMenu(type, open));\n },\n searchMyFile: (keywords) => {\n dispatch(searchMyFile(keywords));\n },\n saveFile: () => {\n dispatch(saveFile());\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openRenameDialog: () => {\n dispatch(openRenameDialog());\n },\n openMoveDialog: () => {\n dispatch(openMoveDialog());\n },\n openRemoveDialog: () => {\n dispatch(openRemoveDialog());\n },\n openShareDialog: () => {\n dispatch(openShareDialog());\n },\n openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n setSessionStatus: () => {\n dispatch(setSessionStatus());\n },\n openPreview: () => {\n dispatch(openPreview());\n },\n audioPreviewOpen: () => {\n dispatch(audioPreviewSetIsOpen(true));\n },\n };\n};\n\nconst styles = (theme) => ({\n appBar: {\n marginLeft: drawerWidth,\n [theme.breakpoints.down(\"xs\")]: {\n marginLeft: drawerWidthMobile,\n },\n zIndex: theme.zIndex.drawer + 1,\n transition: \" background-color 250ms\",\n },\n\n drawer: {\n width: 0,\n flexShrink: 0,\n },\n drawerDesktop: {\n width: drawerWidth,\n flexShrink: 0,\n },\n icon: {\n marginRight: theme.spacing(2),\n },\n menuButton: {\n marginRight: 20,\n [theme.breakpoints.up(\"sm\")]: {\n display: \"none\",\n },\n },\n menuButtonDesktop: {\n marginRight: 20,\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n menuIcon: {\n marginRight: 20,\n },\n toolbar: theme.mixins.toolbar,\n drawerPaper: {\n width: drawerWidthMobile,\n },\n drawerPaperDesktop: {\n width: drawerWidth,\n },\n upDrawer: {\n overflowX: \"hidden\",\n },\n drawerOpen: {\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerClose: {\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: 0,\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n },\n grow: {\n flexGrow: 1,\n },\n badge: {\n top: 1,\n right: -15,\n },\n nested: {\n paddingLeft: theme.spacing(4),\n },\n sectionForFile: {\n display: \"flex\",\n },\n extendedIcon: {\n marginRight: theme.spacing(1),\n },\n addButton: {\n marginLeft: \"40px\",\n marginTop: \"25px\",\n marginBottom: \"15px\",\n },\n fabButton: {\n borderRadius: \"100px\",\n },\n badgeFix: {\n right: \"10px\",\n },\n iconFix: {\n marginLeft: \"16px\",\n },\n dividerFix: {\n marginTop: \"8px\",\n },\n folderShareIcon: {\n verticalAlign: \"sub\",\n marginRight: \"5px\",\n },\n shareInfoContainer: {\n display: \"flex\",\n marginTop: \"15px\",\n marginBottom: \"20px\",\n marginLeft: \"28px\",\n textDecoration: \"none\",\n },\n shareAvatar: {\n width: \"40px\",\n height: \"40px\",\n },\n stickFooter: {\n bottom: \"0px\",\n position: \"absolute\",\n backgroundColor: theme.palette.background.paper,\n width: \"100%\",\n },\n ownerInfo: {\n marginLeft: \"10px\",\n width: \"150px\",\n },\n minStickDrawer: {\n overflowY: \"auto\",\n [theme.breakpoints.up(\"sm\")]: {\n height: \"calc(var(--vh, 100vh) - 205px)\",\n },\n\n [theme.breakpoints.down(\"sm\")]: {\n minHeight: \"calc(var(--vh, 100vh) - 360px)\",\n },\n },\n});\nclass NavbarCompoment extends Component {\n constructor(props) {\n super(props);\n this.state = {\n mobileOpen: false,\n };\n this.UploaderRef = React.createRef();\n }\n\n UNSAFE_componentWillMount() {\n this.unlisten = this.props.history.listen(() => {\n this.setState(() => ({ mobileOpen: false }));\n });\n }\n componentWillUnmount() {\n this.unlisten();\n }\n\n componentDidMount = () => {\n changeThemeColor(\n this.props.selected.length <= 1 &&\n !(!this.props.isMultiple && this.props.withFile)\n ? this.props.theme.palette.primary.main\n : this.props.theme.palette.background.default\n );\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (\n (this.props.selected.length <= 1 &&\n !(!this.props.isMultiple && this.props.withFile)) !==\n (nextProps.selected.length <= 1 &&\n !(!nextProps.isMultiple && nextProps.withFile))\n ) {\n changeThemeColor(\n !(\n this.props.selected.length <= 1 &&\n !(!this.props.isMultiple && this.props.withFile)\n )\n ? this.props.theme.palette.type === \"dark\"\n ? this.props.theme.palette.background.default\n : this.props.theme.palette.primary.main\n : this.props.theme.palette.background.default\n );\n }\n };\n\n handleDrawerToggle = () => {\n this.setState((state) => ({ mobileOpen: !state.mobileOpen }));\n };\n\n loadUploader = () => {\n if (pathHelper.isHomePage(this.props.location.pathname)) {\n return (\n <>\n {this.props.loadUploader && this.props.isLogin && (\n \n )}\n \n );\n }\n };\n\n openDownload = () => {\n if (!allowSharePreview()) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"未登录用户无法预览\",\n \"warning\"\n );\n return;\n }\n this.props.openLoadingDialog(\"获取下载地址...\");\n };\n\n archiveDownload = () => {\n this.props.openLoadingDialog(\"打包中...\");\n };\n\n signOut = () => {\n API.delete(\"/user/session/\")\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"您已退出登录\",\n \"success\"\n );\n Auth.signout();\n window.location.reload();\n this.props.setSessionStatus(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"warning\"\n );\n })\n .finally(() => {\n this.handleClose();\n });\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser(this.props.isLogin);\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const isSharePage = pathHelper.isSharePage(\n this.props.location.pathname\n );\n\n const drawer = (\n
\n {pathHelper.isMobile() && }\n\n {Auth.Check(this.props.isLogin) && (\n <>\n
\n \n \n \n this.props.history.push(\"/shares?\")\n }\n >\n \n \n \n \n \n {/* \n this.props.history.push(\"/aria2?\")\n }\n >\n \n \n \n \n */}\n \n this.props.history.push(\"/quota?\")\n }\n >\n \n \n \n \n \n \n //window.open(\"https://my.mifengfile.com/buy\");\n this.props.history.push(\"/buy\")\n }\n >\n \n \n \n \n \n {/* {user.group.webdav && (\n \n this.props.history.push(\"/webdav?\")\n }\n >\n \n \n \n \n \n )} */}\n\n {/* \n this.props.history.push(\"/tasks?\")\n }\n >\n \n \n \n \n */}\n \n
\n\n {pathHelper.isMobile() && (\n <>\n \n \n \n this.props.history.push(\"/setting?\")\n }\n >\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n )}\n
\n \n
\n \n )}\n\n {!Auth.Check(this.props.isLogin) && (\n
\n this.props.history.push(\"/login\")}\n >\n \n \n \n \n \n this.props.history.push(\"/signup\")}\n >\n \n \n \n \n \n
\n )}\n
\n );\n const iOS =\n process.browser && /iPad|iPhone|iPod/.test(navigator.userAgent);\n return (\n
\n \n \n {this.props.selected.length <= 1 &&\n !(\n !this.props.isMultiple && this.props.withFile\n ) && (\n \n \n \n )}\n {this.props.selected.length <= 1 &&\n !(\n !this.props.isMultiple && this.props.withFile\n ) && (\n \n this.props.handleDesktopToggle(\n !this.props.desktopOpen\n )\n }\n className={classes.menuButtonDesktop}\n >\n \n \n )}\n {(this.props.selected.length > 1 ||\n (!this.props.isMultiple && this.props.withFile)) &&\n (isHomePage ||\n pathHelper.isSharePage(\n this.props.location.pathname\n )) && (\n 1 ||\n (!this.props.isMultiple &&\n this.props.withFile)\n }\n >\n \n this.props.setSelectedTarget([])\n }\n >\n \n \n \n )}\n \n {\" \"}\n {this.props.selected.length <= 1 &&\n !(\n !this.props.isMultiple && this.props.withFile\n ) && (\n
\n \n {\n this.props.history.push(\"/\");\n }}\n >\n {this.props.subTitle\n ? this.props.subTitle\n : this.props.title}\n \n
\n )}\n\n {!this.props.isMultiple &&\n this.props.withFile &&\n !pathHelper.isMobile() && (\n \n {this.props.selected[0].name}{\" \"}\n {(isHomePage ||\n pathHelper.isSharePage(\n this.props.location.pathname\n )) &&\n \"(\" +\n sizeToString(\n this.props.selected[0].size\n ) +\n \")\"}\n \n )}\n\n {this.props.selected.length > 1 &&\n !pathHelper.isMobile() && (\n \n {this.props.selected.length}个对象\n \n )}\n {this.props.selected.length <= 1 &&\n !(\n !this.props.isMultiple && this.props.withFile\n ) && }\n
\n {(this.props.selected.length > 1 ||\n (!this.props.isMultiple && this.props.withFile)) &&\n !isHomePage &&\n !pathHelper.isSharePage(\n this.props.location.pathname\n ) &&\n Auth.Check(this.props.isLogin) &&\n !checkGetParameters(\"share\") && (\n
\n \n \n this.props.saveFile()\n }\n >\n \n \n \n
\n )}\n {(this.props.selected.length > 1 ||\n (!this.props.isMultiple && this.props.withFile)) &&\n (isHomePage || isSharePage) && (\n
\n {!this.props.isMultiple &&\n this.props.withFile &&\n isPreviewable(\n this.props.selected[0].name\n ) && (\n \n \n \n this.props.openPreview()\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple &&\n this.props.withFile && (\n \n \n \n this.openDownload()\n }\n >\n \n \n \n \n )}\n {(this.props.isMultiple ||\n this.props.withFolder) &&\n user.group.allowArchiveDownload && (\n \n \n \n this.archiveDownload()\n }\n >\n \n \n \n \n )}\n\n {!this.props.isMultiple &&\n this.props.withFolder && (\n \n \n \n this.props.navigateTo(\n this.props\n .path ===\n \"/\"\n ? this.props\n .path +\n this\n .props\n .selected[0]\n .name\n : this.props\n .path +\n \"/\" +\n this\n .props\n .selected[0]\n .name\n )\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple &&\n !pathHelper.isMobile() &&\n !isSharePage && (\n \n \n \n this.props.openShareDialog()\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple && !isSharePage && (\n \n \n \n this.props.openRenameDialog()\n }\n >\n \n \n \n \n )}\n {!isSharePage && (\n
\n {!pathHelper.isMobile() && (\n \n \n \n this.props.openMoveDialog()\n }\n >\n \n \n \n \n )}\n\n \n \n \n this.props.openRemoveDialog()\n }\n >\n \n \n \n \n\n {pathHelper.isMobile() && (\n \n \n \n this.props.changeContextMenu(\n \"file\",\n true\n )\n }\n >\n \n \n \n \n )}\n
\n )}\n
\n )}\n {this.props.selected.length <= 1 &&\n !(\n !this.props.isMultiple && this.props.withFile\n ) && this.props.audioPreviewPlayingName!=null && (\n \n \n \n )}\n\n {this.props.selected.length <= 1 &&\n !(\n !this.props.isMultiple && this.props.withFile\n ) && }\n {this.props.selected.length <= 1 &&\n !(!this.props.isMultiple && this.props.withFile) &&\n isHomePage &&\n pathHelper.isMobile() && }\n \n \n {this.loadUploader()}\n\n \n \n this.setState(() => ({ mobileOpen: true }))\n }\n disableDiscovery={iOS}\n ModalProps={{\n keepMounted: true, // Better open performance on mobile.\n }}\n >\n {drawer}\n \n \n \n \n
\n {drawer}\n \n \n
\n );\n }\n}\nNavbarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n};\n\nconst Navbar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withTheme(withStyles(styles)(withRouter(NavbarCompoment))));\n\nexport default Navbar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport { fade } from \"@material-ui/core/styles/colorManipulator\";\nimport FileIcon from \"@material-ui/icons/InsertDriveFile\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport { connect } from \"react-redux\";\nimport { searchMyFile } from \"../../actions\";\n\nimport {\n withStyles,\n InputBase,\n Popper,\n Fade,\n Paper,\n MenuItem,\n ListItemIcon,\n ListItemText,\n Typography,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport { HotKeys, configure } from \"react-hotkeys\";\n\nconfigure({\n ignoreTags: [],\n});\n\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n searchMyFile: (keywords) => {\n dispatch(searchMyFile(keywords));\n },\n };\n};\n\nconst styles = (theme) => ({\n search: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n position: \"relative\",\n borderRadius: theme.shape.borderRadius,\n backgroundColor: fade(theme.palette.common.white, 0.15),\n \"&:hover\": {\n backgroundColor: fade(theme.palette.common.white, 0.25),\n },\n marginRight: theme.spacing(2),\n marginLeft: 0,\n width: \"100%\",\n [theme.breakpoints.up(\"sm\")]: {\n marginLeft: theme.spacing(7.2),\n width: \"auto\",\n },\n },\n searchIcon: {\n width: theme.spacing(9),\n height: \"100%\",\n position: \"absolute\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n inputRoot: {\n color: \"inherit\",\n width: \"100%\",\n },\n inputInput: {\n paddingTop: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n paddingLeft: theme.spacing(7),\n transition: theme.transitions.create(\"width\"),\n width: \"100%\",\n [theme.breakpoints.up(\"md\")]: {\n width: 200,\n \"&:focus\": {\n width: 300,\n },\n },\n },\n suggestBox: {\n zIndex: \"9999\",\n width: 364,\n },\n});\n\nconst keyMap = {\n SEARCH: \"enter\",\n};\n\nclass SearchBarCompoment extends Component {\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n input: \"\",\n };\n }\n\n handlers = {\n SEARCH: (e) => {\n if (pathHelper.isHomePage(this.props.location.pathname)) {\n this.searchMyFile();\n } else {\n this.searchShare();\n }\n e.target.blur();\n },\n };\n\n handleChange = (event) => {\n const { currentTarget } = event;\n this.input = event.target.value;\n this.setState({\n anchorEl: currentTarget,\n input: event.target.value,\n });\n };\n\n cancelSuggest = () => {\n this.setState({\n input: \"\",\n });\n };\n\n searchMyFile = () => {\n this.props.searchMyFile(\"keywords/\" + this.input);\n };\n\n searchShare = () => {\n this.props.history.push(\n \"/search?keywords=\" + encodeURIComponent(this.input)\n );\n };\n\n render() {\n const { classes } = this.props;\n const { anchorEl } = this.state;\n const id = this.state.input !== \"\" ? \"simple-popper\" : null;\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n\n return (\n
\n
\n \n
\n \n \n \n \n {({ TransitionProps }) => (\n \n \n {isHomePage && (\n \n \n \n \n \n 在我的文件中搜索{\" \"}\n \n {this.state.input}\n \n \n }\n />\n \n )}\n\n \n \n \n \n \n 在全站分享中搜索{\" \"}\n \n {this.state.input}\n \n \n }\n />\n \n \n \n )}\n \n
\n );\n }\n}\n\nSearchBarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst SearchBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(SearchBarCompoment)));\n\nexport default SearchBar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport StorageIcon from \"@material-ui/icons/Storage\";\nimport MemoryIcon from \"@material-ui/icons/Memory\";\nimport { connect } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport { sizeToString } from \"../../utils\";\nimport { toggleSnackbar } from \"../../actions\";\n\nimport {\n withStyles,\n LinearProgress,\n Typography,\n Divider,\n Tooltip,\n} from \"@material-ui/core\";\nimport ButtonBase from \"@material-ui/core/ButtonBase\";\nimport Link from \"@material-ui/core/Link\";\nimport { withRouter } from \"react-router\";\n\nconst mapStateToProps = (state) => {\n return {\n refresh: state.viewUpdate.storageRefresh,\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nconst styles = (theme) => ({\n iconFix: {\n marginLeft: \"32px\",\n marginRight: \"17px\",\n color: theme.palette.text.secondary,\n marginTop: \"2px\",\n },\n iconFix2: {\n marginLeft: \"32px\",\n marginRight: \"17px\",\n color: theme.palette.text.secondary,\n marginTop: \"0px\",\n },\n textFix: {\n padding: \" 0 0 0 16px\",\n },\n storageContainer: {\n display: \"flex\",\n marginTop: \"15px\",\n textAlign: \"left\",\n marginBottom: \"11px\",\n },\n storageContainer2: {\n display: \"flex\",\n marginTop: \"10px\",\n textAlign: \"left\",\n marginBottom: \"10px\",\n alignItems:\"center\",\n },\n detail: {\n width: \"100%\",\n marginRight: \"35px\",\n },\n info: {\n width: \"131px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"162px\",\n },\n marginTop: \"5px\",\n },\n bar: {\n marginTop: \"5px\",\n },\n stickFooter: {\n backgroundColor: theme.palette.background.paper,\n },\n});\n\nclass StorageBarCompoment extends Component {\n state = {\n percent: 0,\n used: null,\n total: null,\n store:0,\n share_score:0,\n showExpand: false,\n showExpandJiFen: false,\n };\n\n firstLoad = true;\n\n componentDidMount = () => {\n if (this.firstLoad && this.props.isLogin) {\n this.firstLoad = !this.firstLoad;\n this.updateStatus();\n }\n };\n\n componentWillUnmount() {\n this.firstLoad = false;\n }\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (\n (this.props.isLogin && this.props.refresh !== nextProps.refresh) ||\n (this.props.isLogin !== nextProps.isLogin && nextProps.isLogin)\n ) {\n this.updateStatus();\n }\n };\n\n updateStatus = () => {\n let percent = 0;\n API.get(\"/user/storage\")\n .then((response) => {\n if (response.data.used / response.data.total >= 1) {\n percent = 100;\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"您的已用容量已超过容量配额,请尽快删除多余文件或购买容量\",\n \"warning\"\n );\n } else {\n percent = (response.data.used / response.data.total) * 100;\n }\n this.setState({\n percent: percent,\n used: sizeToString(response.data.used),\n total: sizeToString(response.data.total),\n score:response.data.score,\n share_score:response.data.share_score,\n });\n })\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n .catch(() => {});\n };\n\n render() {\n const { classes } = this.props;\n return (\n
\n this.setState({ showExpandJiFen: true })}\n onMouseLeave={() => this.setState({ showExpandJiFen: false })}\n className={classes.stickFooter}\n >\n \n this.props.history.push(\"/quota\")}>\n
\n \n
\n 积分{\" \"}{(this.state.score + this.state.share_score).toFixed(2)}{\" \"}\n {this.state.showExpandJiFen && (\n \n 充值\n \n )}\n
\n
\n
\n
\n this.setState({ showExpand: true })}\n onMouseLeave={() => this.setState({ showExpand: false })}\n className={classes.stickFooter}\n >\n \n this.props.history.push(\"/quota\")}>\n
\n \n
\n 存储空间{\" \"}\n {this.state.showExpand && (\n \n 扩容\n \n )}\n \n
\n \n \n {this.state.used === null\n ? \" -- \"\n : this.state.used}\n {\" / \"}\n {this.state.total === null\n ? \" -- \"\n : this.state.total}\n \n \n
\n
\n
\n
\n
\n
\n \n );\n }\n}\n\nStorageBarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst StorageBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(StorageBarCompoment)));\n\nexport default StorageBar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { setUserPopover } from \"../../actions\";\nimport { withStyles, Typography } from \"@material-ui/core\";\nimport Auth from \"../../middleware/Auth\";\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\nimport Avatar from \"@material-ui/core/Avatar\";\n\nconst mapStateToProps = (state) => {\n return {\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n };\n};\n\nconst styles = (theme) => ({\n userNav: {\n height: \"170px\",\n backgroundColor: theme.palette.primary.main,\n padding: \"20px 20px 2em\",\n backgroundImage:\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 900'%3E%3Cpolygon fill='\" +\n theme.palette.primary.light.replace(\"#\", \"%23\") +\n \"' points='957 450 539 900 1396 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\n \"' points='957 450 872.9 900 1396 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='-60 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='337 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\n \"' points='1203 546 1552 900 876 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='1203 546 1552 900 1162 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\n \"' points='641 695 886 900 367 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.main.replace(\"#\", \"%23\") +\n \"' points='587 900 641 695 886 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\n \"' points='1710 900 1401 632 1096 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='1710 900 1401 632 1365 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='1210 900 971 687 725 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='943 900 1210 900 971 687'/%3E%3C/svg%3E\\\")\",\n backgroundSize: \"cover\",\n },\n avatar: {\n display: \"block\",\n width: \"70px\",\n height: \"70px\",\n border: \" 2px solid #fff\",\n borderRadius: \"50%\",\n overflow: \"hidden\",\n boxShadow:\n \"0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12)\",\n },\n avatarImg: {\n width: \"66px\",\n height: \"66px\",\n },\n nickName: {\n color: \"#fff\",\n marginLeft: \"10px\",\n marginTop: \"15px\",\n fontSize: \"17px\",\n },\n flexAvatar: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"end\",\n },\n groupName: {\n marginLeft: \"10px\",\n color: \"#ffffff\",\n opacity: \"0.54\",\n },\n storageCircle: {\n width: \"200px\",\n },\n});\n\nclass UserInfoCompoment extends Component {\n showUserInfo = (e) => {\n this.props.setUserPopover(e.currentTarget);\n };\n\n render() {\n const { classes } = this.props;\n const isLogin = Auth.Check(this.props.isLogin);\n const user = Auth.GetUser(this.props.isLogin);\n\n return (\n
\n
\n {/* eslint-disable-next-line */}\n \n {isLogin && (\n \n )}\n {!isLogin && (\n \n )}\n \n \n
\n
\n \n {isLogin ? user.nickname : \"未登录\"}\n \n \n {isLogin ? user.group.name : \"游客\"}\n \n
\n
\n );\n }\n}\n\nUserInfoCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserInfo = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(UserInfoCompoment));\n\nexport default UserInfo;\n","import React, { useCallback, useState, Suspense } from \"react\";\nimport {\n Divider,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n makeStyles,\n withStyles,\n} from \"@material-ui/core\";\nimport { Clear, KeyboardArrowRight } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport FolderShared from \"@material-ui/icons/FolderShared\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport VideoIcon from \"@material-ui/icons/VideoLibraryOutlined\";\nimport ImageIcon from \"@material-ui/icons/CollectionsOutlined\";\nimport MusicIcon from \"@material-ui/icons/LibraryMusicOutlined\";\nimport DocIcon from \"@material-ui/icons/FileCopyOutlined\";\nimport { useHistory, useLocation } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport { navigateTo, searchMyFile, toggleSnackbar } from \"../../actions\";\nimport { useDispatch } from \"react-redux\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n Circle,\n CircleOutline,\n Heart,\n HeartOutline,\n Hexagon,\n HexagonOutline,\n Hexagram,\n HexagramOutline,\n Rhombus,\n RhombusOutline,\n Square,\n SquareOutline,\n Triangle,\n TriangleOutline,\n FolderHeartOutline,\n TagPlus,\n} from \"mdi-material-ui\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport API from \"../../middleware/Api\";\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": { margin: 0 },\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n\n \"&$expanded\": {\n minHeight: 0,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"block\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n expand: {\n display: \"none\",\n transition: \".15s all ease-in-out\",\n },\n expanded: {\n display: \"block\",\n transform: \"rotate(90deg)\",\n },\n iconFix: {\n marginLeft: \"16px\",\n },\n hiddenButton: {\n display: \"none\",\n },\n subMenu: {\n marginLeft: theme.spacing(2),\n },\n overFlow: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n}));\n\nconst icons = {\n Circle: Circle,\n CircleOutline: CircleOutline,\n Heart: Heart,\n HeartOutline: HeartOutline,\n Hexagon: Hexagon,\n HexagonOutline: HexagonOutline,\n Hexagram: Hexagram,\n HexagramOutline: HexagramOutline,\n Rhombus: Rhombus,\n RhombusOutline: RhombusOutline,\n Square: Square,\n SquareOutline: SquareOutline,\n Triangle: Triangle,\n TriangleOutline: TriangleOutline,\n FolderHeartOutline: FolderHeartOutline,\n};\n\nconst AddTag = React.lazy(() => import(\"../Modals/AddTag\"));\n\nexport default function FileTag() {\n const classes = useStyles();\n\n const location = useLocation();\n const history = useHistory();\n\n const isHomePage = pathHelper.isHomePage(location.pathname);\n\n const [tagOpen, setTagOpen] = useState(true);\n const [addTagModal, setAddTagModal] = useState(false);\n const [tagHover, setTagHover] = useState(null);\n const [tags, setTags] = useState(\n Auth.GetUser().tags ? Auth.GetUser().tags : []\n );\n\n const dispatch = useDispatch();\n const SearchMyFile = useCallback((k) => dispatch(searchMyFile(k)), [\n dispatch,\n ]);\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const getIcon = (icon, color) => {\n if (icons[icon]) {\n const IconComponent = icons[icon];\n return (\n \n );\n }\n return ;\n };\n\n const submitSuccess = (tag) => {\n const newTags = [...tags, tag];\n setTags(newTags);\n const user = Auth.GetUser();\n user.tags = newTags;\n Auth.SetUser(user);\n };\n\n const submitDelete = (id) => {\n API.delete(\"/tag/\" + id)\n .then(() => {\n const newTags = tags.filter((v) => {\n return v.id !== id;\n });\n setTags(newTags);\n const user = Auth.GetUser();\n user.tags = newTags;\n Auth.SetUser(user);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n return (\n <>\n \n setAddTagModal(false)}\n />\n \n isHomePage && setTagOpen(!tagOpen)}\n >\n \n \n !isHomePage && history.push(\"/home?path=%2F\")\n }\n >\n \n \n \n \n \n \n \n\n \n setTagHover(null)}>\n \n \n \n \n \n \n \n \n \n \n \n \n {[\n ].map((v) => (\n SearchMyFile(v.id + \"/internal\")}\n >\n \n {v.icon}\n \n \n \n ))}\n {tags.map((v) => (\n setTagHover(v.id)}\n onClick={() => {\n if (v.type === 0) {\n SearchMyFile(\"tag/\" + v.id);\n } else {\n NavigateTo(v.expression);\n }\n }}\n >\n \n {getIcon(\n v.type === 0\n ? v.icon\n : \"FolderHeartOutline\",\n v.type === 0 ? v.color : null\n )}\n \n \n\n {tagHover === v.id && (\n submitDelete(v.id)}\n >\n \n \n \n \n )}\n \n ))}\n \n \n \n \n );\n}\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport Auth from \"../middleware/Auth\";\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nconst defaultTimeZone = \"Asia/Shanghai\";\nconst preferTimeZone = Auth.GetPreference(\"timeZone\");\nexport let timeZone = preferTimeZone ? preferTimeZone : defaultTimeZone;\n\nexport function refreshTimeZone() {\n timeZone = Auth.GetPreference(\"timeZone\");\n timeZone = timeZone ? timeZone : defaultTimeZone;\n}\n\nexport function formatLocalTime(time, format) {\n return dayjs(time).tz(timeZone).format(format);\n}\n\nexport function validateTimeZone(name) {\n try {\n dayjs().tz(name).format();\n } catch (e) {\n return false;\n }\n return true;\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { baseURL } from \"../../middleware/Api\";\nimport { showImgPreivew } from \"../../actions/index\";\nimport { imgPreviewSuffix } from \"../../config\";\nimport { withStyles } from \"@material-ui/core\";\nimport pathHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router\";\nimport { PhotoSlider } from \"react-photo-view\";\nimport \"react-photo-view/dist/index.css\";\nimport * as explorer from \"../../redux/explorer/reducer\";\nimport API from \"../../middleware/Api\";\n\nconst styles = () => ({});\n\nconst mapStateToProps = (state) => {\n return {\n first: state.explorer.imgPreview.first,\n other: state.explorer.imgPreview.other,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n };\n};\n\nclass ImagPreviewComponent extends Component {\n state = {\n items: [],\n photoIndex: 0,\n isOpen: false,\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n const items = [];\n let firstOne = 0;\n if (nextProps.first.id !== \"\") {\n if (\n pathHelper.isSharePage(this.props.location.pathname) &&\n !nextProps.first.path\n ) {\n const newImg = {\n intro: nextProps.first.name,\n src: baseURL + \"/share/preview/\" + nextProps.first.key,\n };\n firstOne = 0;\n items.push(newImg);\n this.setState({\n photoIndex: firstOne,\n items: items,\n isOpen: true,\n });\n return;\n }\n // eslint-disable-next-line\n nextProps.other.map((value) => {\n const fileType = value.name.split(\".\").pop().toLowerCase();\n if (imgPreviewSuffix.indexOf(fileType) !== -1) {\n // let src = \"\";\n // if (pathHelper.isSharePage(this.props.location.pathname)) {\n // src = baseURL + \"/share/preview/\" + value.key;\n // src =\n // src +\n // \"?path=\" +\n // encodeURIComponent(\n // value.path === \"/\"\n // ? value.path + value.name\n // : value.path + \"/\" + value.name\n // );\n // } else {\n // src = baseURL + \"/file/preview/\" + value.id;\n // }\n \n // 加载图片\n const requestURL = \"/file/preview/\" + value.id;\n API.get(requestURL)\n .then((response) => {\n // setURL(response.data);\n const newImg = {\n intro: value.name,\n src: response.data,\n };\n if (\n value.path === nextProps.first.path &&\n value.name === nextProps.first.name\n ) {\n firstOne = items.length;\n }\n items.push(newImg);\n this.setState({\n photoIndex: firstOne,\n items: items,\n isOpen: true,\n });\n })\n .catch((error) => {\n // ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n }\n });\n \n }\n };\n\n handleClose = () => {\n this.props.showImgPreivew(explorer.initState.imgPreview.first);\n this.setState({\n isOpen: false,\n });\n };\n\n render() {\n const { photoIndex, isOpen, items } = this.state;\n\n return (\n
\n {isOpen && (\n this.handleClose()}\n index={photoIndex}\n onIndexChange={(n) =>\n this.setState({\n photoIndex: n,\n })\n }\n />\n )}\n
\n );\n }\n}\n\nImagPreviewComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst ImgPreivew = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ImagPreviewComponent)));\n\nexport default ImgPreivew;\n","export const imgPreviewSuffix = [\n \"bmp\",\n \"png\",\n \"gif\",\n \"jpg\",\n \"jpeg\",\n \"svg\",\n \"webp\",\n];\nexport const msDocPreviewSuffix = [\n \"ppt\",\n \"pptx\",\n \"pps\",\n \"doc\",\n \"docx\",\n \"xlsx\",\n \"xls\",\n];\nexport const audioPreviewSuffix = [\"mp3\", \"ogg\",\"flac\"];\nexport const videoPreviewSuffix = [\"mp4\", \"mkv\", \"webm\"];\nexport const pdfPreviewSuffix = [\"pdf\"];\nexport const editSuffix = [\"md\", \"txt\"];\nexport const codePreviewSuffix = {\n json: \"json\",\n php: \"php\",\n py: \"python\",\n bat: \"bat\",\n cpp: \"cpp\",\n c: \"cpp\",\n h: \"cpp\",\n cs: \"csharp\",\n css: \"css\",\n dockerfile: \"dockerfile\",\n go: \"go\",\n html: \"html\",\n ini: \"ini\",\n java: \"java\",\n js: \"javascript\",\n jsx: \"javascript\",\n less: \"less\",\n lua: \"lua\",\n sh: \"shell\",\n sql: \"sql\",\n xml: \"xml\",\n yaml: \"yaml\",\n};\nexport const mediaType = {\n audio: [\"mp3\", \"flac\", \"ape\", \"wav\", \"acc\", \"ogg\"],\n video: [\"mp4\", \"flv\", \"avi\", \"wmv\", \"mkv\", \"rm\", \"rmvb\", \"mov\", \"ogv\"],\n image: [\"bmp\", \"iff\", \"png\", \"gif\", \"jpg\", \"jpeg\", \"psd\", \"svg\", \"webp\"],\n pdf: [\"pdf\"],\n word: [\"doc\", \"docx\"],\n ppt: [\"ppt\", \"pptx\"],\n excel: [\"xls\", \"xlsx\", \"csv\"],\n text: [\"txt\", \"md\", \"html\"],\n torrent: [\"torrent\"],\n zip: [\"zip\", \"gz\", \"tar\", \"rar\", \"7z\"],\n excute: [\"exe\"],\n android: [\"apk\"],\n php: [\"php\"],\n go: [\"go\"],\n python: [\"py\"],\n cpp: [\"cpp\"],\n c: [\"c\"],\n js: [\"js\", \"jsx\"],\n};\nexport const policyTypeMap = {\n local: \"本机\",\n remote: \"从机\",\n qiniu: \"七牛\",\n upyun: \"又拍云\",\n oss: \"阿里云 OSS\",\n cos: \"腾讯云\",\n onedrive: \"OneDrive\",\n s3: \"Amazon S3\",\n};\nexport const isPreviewable = (name) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n if (imgPreviewSuffix.indexOf(suffix) !== -1) {\n return \"img\";\n } else if (msDocPreviewSuffix.indexOf(suffix) !== -1) {\n return \"msDoc\";\n } else if (audioPreviewSuffix.indexOf(suffix) !== -1) {\n return \"audio\";\n } else if (videoPreviewSuffix.indexOf(suffix) !== -1) {\n return \"video\";\n } else if (editSuffix.indexOf(suffix) !== -1) {\n return \"edit\";\n } else if (pdfPreviewSuffix.indexOf(suffix) !== -1) {\n return \"pdf\";\n } else if (Object.keys(codePreviewSuffix).indexOf(suffix) !== -1) {\n return \"code\";\n }\n return false;\n};\nexport const isTorrent = (name) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n if (mediaType.torrent.indexOf(suffix) !== -1) {\n return true;\n }\n return false;\n};\n\nexport const isCompressFile = (name) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n return suffix === \"zip\";\n};\n\nconst taskStatus = [\"排队中\", \"处理中\", \"失败\", \"取消\", \"已完成\"];\nconst taskType = [\"压缩\", \"解压缩\", \"文件中转\", \"导入外部目录\", \"存储策略转移\"];\nconst taskProgress = [\n \"等待中\",\n \"压缩中\",\n \"解压缩中\",\n \"下载中\",\n \"转存中\",\n \"索引中\",\n \"插入中\",\n];\n\nexport const getTaskStatus = (status) => {\n return taskStatus[status];\n};\n\nexport const getTaskType = (status) => {\n return taskType[status];\n};\n\nexport const getTaskProgress = (type, status) => {\n if (type === 2) {\n return \"已完成 \" + (status + 1) + \" 个文件\";\n }\n return taskProgress[status];\n};\n\nexport const reportReasons = [\n \"色情信息\",\n \"包含病毒\",\n \"侵权\",\n \"不恰当的言论\",\n \"其他\",\n];\n","export const isDefined = (val) => val != null;\nexport const isFunction = (val) => typeof val === \"function\";\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {};\n\nexport const newScript = (src) => (cb) => {\n const scriptElem = document.createElement(\"script\");\n if (typeof src === \"object\") {\n // copy every property to the element\n for (const key in src) {\n if (Object.prototype.hasOwnProperty.call(src, key)) {\n scriptElem[key] = src[key];\n }\n }\n src = src.src;\n } else {\n scriptElem.src = src;\n }\n scriptElem.addEventListener(\"load\", () => cb(null, src));\n scriptElem.addEventListener(\"error\", () => cb(true, src));\n document.body.appendChild(scriptElem);\n return scriptElem;\n};\n\nconst keyIterator = (cols) => {\n const keys = Object.keys(cols);\n let i = -1;\n return {\n next() {\n i++; // inc\n if (i >= keys.length) return null;\n else return keys[i];\n },\n };\n};\n\n// tasks should be a collection of thunk\nexport const parallel = (...tasks) => (each) => (cb) => {\n let hasError = false;\n let successed = 0;\n const ret = [];\n tasks = tasks.filter(isFunction);\n\n if (tasks.length <= 0) cb(null);\n else {\n tasks.forEach((task, i) => {\n const thunk = task;\n thunk((err, ...args) => {\n if (err) hasError = true;\n else {\n // collect result\n if (args.length <= 1) args = args[0];\n\n ret[i] = args;\n successed++;\n }\n\n if (isFunction(each)) each.call(null, err, args, i);\n\n if (hasError) cb(true);\n else if (tasks.length === successed) {\n cb(null, ret);\n }\n });\n });\n }\n};\n\n// tasks should be a collection of thunk\nexport const series = (...tasks) => (each) => (cb) => {\n tasks = tasks.filter((val) => val != null);\n const nextKey = keyIterator(tasks);\n const nextThunk = () => {\n const key = nextKey.next();\n let thunk = tasks[key];\n // eslint-disable-next-line prefer-spread\n if (Array.isArray(thunk))\n // eslint-disable-next-line prefer-spread\n thunk = parallel.apply(null, thunk).call(null, each);\n return [+key, thunk]; // convert `key` to number\n };\n let key, thunk;\n let next = nextThunk();\n key = next[0];\n thunk = next[1];\n if (thunk == null) return cb(null);\n\n const ret = [];\n const iterator = () => {\n thunk((err, ...args) => {\n if (args.length <= 1) args = args[0];\n if (isFunction(each)) each.call(null, err, args, key);\n\n if (err) cb(err);\n else {\n // collect result\n ret.push(args);\n\n next = nextThunk();\n key = next[0];\n thunk = next[1];\n if (thunk == null) return cb(null, ret);\n // finished\n else iterator();\n }\n });\n };\n iterator();\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport { newScript, series, noop } from \"./utils\";\n\nconst loadedScript = [];\nconst pendingScripts = {};\nlet failedScript = [];\n\nconst addCache = (entry) => {\n if (loadedScript.indexOf(entry) < 0) {\n loadedScript.push(entry);\n }\n};\n\nconst removeFailedScript = () => {\n if (failedScript.length > 0) {\n failedScript.forEach((script) => {\n const node = document.querySelector(`script[src='${script}']`);\n if (node != null) {\n node.parentNode.removeChild(node);\n }\n });\n\n failedScript = [];\n }\n};\n\nexport function startLoadingScripts(scripts, onComplete = noop) {\n // sequence load\n const loadNewScript = (script) => {\n const src = typeof script === \"object\" ? script.src : script;\n if (loadedScript.indexOf(src) < 0) {\n return (taskComplete) => {\n const callbacks = pendingScripts[src] || [];\n callbacks.push(taskComplete);\n pendingScripts[src] = callbacks;\n if (callbacks.length === 1) {\n return newScript(script)((err) => {\n pendingScripts[src].forEach((cb) => cb(err, src));\n delete pendingScripts[src];\n });\n }\n };\n }\n };\n const tasks = scripts.map((src) => {\n if (Array.isArray(src)) {\n return src.map(loadNewScript);\n } else return loadNewScript(src);\n });\n\n series(...tasks)((err, src) => {\n if (err) {\n failedScript.push(src);\n } else {\n if (Array.isArray(src)) {\n src.forEach(addCache);\n } else addCache(src);\n }\n })((err) => {\n removeFailedScript();\n onComplete(err);\n });\n}\n\nconst uploaderLoader = () => (WrappedComponent) => {\n class ScriptLoader extends Component {\n static propTypes = {\n onScriptLoaded: PropTypes.func,\n };\n\n static defaultProps = {\n onScriptLoaded: noop,\n };\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n isScriptLoaded: false,\n isScriptLoadSucceed: false,\n };\n\n this._isMounted = false;\n }\n\n componentDidMount() {\n this._isMounted = true;\n const scripts = [\n [\"/static/js/uploader/moxie.js\"],\n [\"/static/js/uploader/plupload.dev.js\"],\n [\"/static/js/uploader/i18n/zh_CN.js\"],\n [\"/static/js/uploader/ui.js\"],\n [\"/static/js/uploader/uploader_\" + window.policyType + \".js\"],\n ];\n startLoadingScripts(scripts, (err) => {\n if (this._isMounted) {\n this.setState(\n {\n isScriptLoaded: true,\n isScriptLoadSucceed: !err,\n },\n () => {\n if (!err) {\n this.props.onScriptLoaded();\n }\n }\n );\n }\n });\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n getWrappedInstance() {\n // eslint-disable-next-line react/no-string-refs\n return this.refs.wrappedInstance;\n }\n\n render() {\n const props = {\n ...this.props,\n ...this.state,\n ref: \"wrappedInstance\",\n };\n\n return ;\n }\n }\n\n return hoistStatics(ScriptLoader, WrappedComponent);\n};\n\nexport default uploaderLoader;\n","import React, { Component } from \"react\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport AddIcon from \"@material-ui/icons/AddCircleOutline\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport { isWidthDown } from \"@material-ui/core/withWidth\";\nimport { darken, lighten } from \"@material-ui/core/styles/colorManipulator\";\nimport {\n withStyles,\n Dialog,\n ListItemText,\n ListItem,\n List,\n Divider,\n AppBar,\n Toolbar,\n IconButton,\n Typography,\n Slide,\n ListItemSecondaryAction,\n withWidth,\n DialogContent,\n Tooltip,\n} from \"@material-ui/core\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport { withTheme } from \"@material-ui/core/styles\";\n\nconst styles = (theme) => ({\n appBar: {\n position: \"relative\",\n },\n flex: {\n flex: 1,\n },\n progressBar: {\n marginTop: 5,\n },\n minHight: {\n [theme.breakpoints.up(\"sm\")]: {\n minWidth: 500,\n },\n padding: 0,\n },\n dialogContent: {\n padding: 0,\n },\n successStatus: {\n color: \"#4caf50\",\n },\n errorStatus: {\n color: \"#ff5722\",\n wordBreak: \"break-all\",\n },\n listAction: {\n marginLeft: 20,\n marginRight: 20,\n },\n delete: {\n zIndex: 9,\n },\n progressContainer: {\n position: \"relative\",\n },\n progressContent: {\n position: \"relative\",\n zIndex: 9,\n },\n progress: {\n transition: \"width .4s linear\",\n zIndex: 1,\n height: \"100%\",\n position: \"absolute\",\n left: 0,\n top: 0,\n },\n fileName: {\n wordBreak: \"break-all\",\n },\n});\nclass FileList extends Component {\n state = {\n open: false,\n files: [],\n };\n\n //入队\n enQueue(files) {\n this.setState({\n files: [...this.state.files, ...files],\n });\n }\n\n deQueue(file) {\n const filesNow = [...this.state.files];\n const fileID = filesNow.findIndex((f) => {\n return f.id === file.id;\n });\n if (fileID !== -1) {\n filesNow.splice(fileID, 1);\n this.setState({\n files: filesNow,\n open: filesNow.length !== 0,\n });\n }\n }\n\n updateStatus(file) {\n const filesNow = [...this.state.files];\n const fileID = filesNow.findIndex((f) => {\n return f.id === file.id;\n });\n if (!file.errMsg || file.ignoreMsg) {\n if (filesNow[fileID] && !filesNow[fileID].errMsg) {\n filesNow[fileID] = file;\n this.setState({\n files: filesNow,\n });\n }\n } else {\n file.ignoreMsg = true;\n }\n }\n\n setComplete(file) {\n const filesNow = [...this.state.files];\n const fileID = filesNow.findIndex((f) => {\n return f.id === file.id;\n });\n if (fileID !== -1) {\n if (filesNow[fileID].status !== 4) {\n filesNow[fileID].status = 5;\n this.setState({\n files: filesNow,\n });\n }\n }\n }\n\n setError(file, errMsg) {\n const filesNow = [...this.state.files];\n const fileID = filesNow.findIndex((f) => {\n return f.id === file.id;\n });\n if (fileID !== -1) {\n filesNow[fileID].status = 4;\n filesNow[fileID].errMsg = errMsg;\n } else {\n file.status = 4;\n file.errMsg = errMsg;\n filesNow.push(file);\n }\n this.setState({\n files: filesNow,\n });\n }\n\n Transition(props) {\n return ;\n }\n openFileList = () => {\n if (!this.state.open) {\n this.setState({ open: true });\n }\n };\n\n cancelUpload = (file) => {\n this.props.cancelUpload(file);\n this.deQueue(file);\n };\n\n reQueue = (file) => {\n file.status = 1;\n file.errMsg = \"\";\n this.updateStatus(file);\n\n this.props.reQueue(file);\n this.deQueue(file);\n\n // file.status = 1;\n // file.errMsg = \"\";\n // this.updateStatus(file);\n // this.props.reQueue(file);\n };\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n addNewFile = () => {\n document.getElementsByClassName(\"uploadFileForm\")[0].click();\n };\n\n getProgressBackground = () => {\n return this.props.theme.palette.type === \"light\"\n ? lighten(this.props.theme.palette.primary.main, 0.8)\n : darken(this.props.theme.palette.background.paper, 0.2);\n };\n\n render() {\n const { classes } = this.props;\n const { width } = this.props;\n\n this.props.inRef({\n openFileList: this.openFileList.bind(this),\n enQueue: this.enQueue.bind(this),\n updateStatus: this.updateStatus.bind(this),\n setComplete: this.setComplete.bind(this),\n setError: this.setError.bind(this),\n });\n\n return (\n \n \n \n \n \n \n \n 上传队列\n \n \n \n \n \n \n \n \n {this.state.files.map((item, i) => (\n
\n {item.status === 2 && (\n \n )}\n \n \n {item.status === 1 && (\n \n {item.name}\n \n }\n secondary={
排队中...
}\n />\n )}\n {item.status === 2 && (\n \n {item.name}\n \n }\n secondary={\n
\n {item.progress <= 99 && (\n <> 已上传{\" \"}\n {window.plupload\n .formatSize(\n item.loaded\n )\n .toUpperCase()}{\" \"}\n , 共{\" \"}\n {window.plupload\n .formatSize(\n item.size\n )\n .toUpperCase()}{\" \"}\n - {item.progress}%{\" \"}\n \n )}\n {item.progress > 99 && (\n
处理中...
\n )}\n
\n }\n />\n )}\n {item.status === 3 && (\n \n {item.name}\n \n }\n secondary={item.msg}\n />\n )}\n {item.status === 4 && (\n \n {item.name}\n \n }\n secondary={\n \n {item.errMsg}\n
\n
\n }\n />\n )}\n {item.status === 5 && (\n \n {item.name}\n \n }\n secondary={\n \n 已完成\n
\n \n }\n />\n )}\n \n {item.status !== 4 && (\n \n this.cancelUpload(item)\n }\n >\n \n \n )}\n {item.status === 4 && (\n \n \n this.reQueue(item)\n }\n >\n \n \n \n )}\n \n \n \n \n ))}\n
\n
\n \n );\n }\n}\nFileList.propTypes = {};\n\nexport default withStyles(styles)(withWidth()(withTheme(FileList)));\n","import React, { useCallback, useState, useEffect } from \"react\";\nimport { makeStyles, Badge } from \"@material-ui/core\";\nimport SpeedDial from \"@material-ui/lab/SpeedDial\";\nimport SpeedDialIcon from \"@material-ui/lab/SpeedDialIcon\";\nimport SpeedDialAction from \"@material-ui/lab/SpeedDialAction\";\nimport CreateNewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport PublishIcon from \"@material-ui/icons/Publish\";\nimport {\n openCreateFileDialog,\n openCreateFolderDialog,\n toggleSnackbar,\n} from \"../../actions\";\nimport { useDispatch } from \"react-redux\";\nimport AutoHidden from \"./AutoHidden\";\nimport statusHelper from \"../../utils/page\";\nimport Backdrop from \"@material-ui/core/Backdrop\";\nimport { FolderUpload, FilePlus } from \"mdi-material-ui\";\n\nconst useStyles = makeStyles(() => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n badge: {\n position: \"absolute\",\n bottom: 26,\n top: \"auto\",\n zIndex: 9999,\n right: 7,\n },\n \"@global\": {\n \".MuiSpeedDialAction-staticTooltipLabel\": {\n width: 100,\n },\n },\n}));\n\nexport default function UploadButton(props) {\n const [open, setOpen] = useState(false);\n const [queued, setQueued] = useState(5);\n const classes = useStyles();\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const OpenNewFolderDialog = useCallback(\n () => dispatch(openCreateFolderDialog()),\n [dispatch]\n );\n const OpenNewFileDialog = useCallback(\n () => dispatch(openCreateFileDialog()),\n [dispatch]\n );\n\n useEffect(() => {\n setQueued(props.Queued);\n }, [props.Queued]);\n\n const openUpload = (id) => {\n const uploadButton = document.getElementsByClassName(id)[0];\n if (document.body.contains(uploadButton)) {\n uploadButton.click();\n } else {\n ToggleSnackbar(\"top\", \"right\", \"上传组件还未加载完成\", \"warning\");\n }\n };\n const uploadClicked = () => {\n if (open) {\n if (queued !== 0) {\n props.openFileList();\n } else {\n openUpload(\"uploadFileForm\");\n }\n }\n };\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n \n \n \n \n );\n}\n","import React, { Component } from \"react\";\nimport uploaderLoader from \"../../loader\";\nimport { connect } from \"react-redux\";\nimport { refreshFileList, refreshStorage, toggleSnackbar } from \"../../actions\";\nimport FileList from \"./FileList.js\";\nimport Auth from \"../../middleware/Auth\";\nimport UploadButton from \"../Dial/Create.js\";\nimport { basename, pathJoin } from \"../../utils\";\n\nlet loaded = false;\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n keywords: state.explorer.keywords,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n refreshStorage: () => {\n dispatch(refreshStorage());\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass UploaderComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n queued: 0,\n };\n }\n\n setRef(val) {\n window.fileList = val;\n }\n\n cancelUpload(file) {\n this.uploader.removeFile(file);\n }\n\n reQueue = (file) => {\n // this.uploader.addFile(file.getSource());\n this.cancelUpload(file);\n this.uploader.addFile(file,file.name);\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"文件已经重新加入上传队列\",\n \"info\"\n );\n this.uploader.start();\n };\n\n getChunkSize(policyType) {\n if (policyType === \"qiniu\") {\n return 4 * 1024 * 1024;\n }\n if (policyType === \"onedrive\") {\n return 100 * 1024 * 1024;\n }\n return 0;\n }\n\n fileAdd = (up, files) => {\n const path = window.currntPath ? window.currntPath : this.props.path;\n if (\n this.props.keywords === \"\" &&\n window.location.pathname.toLowerCase().startsWith(\"/home\")\n ) {\n window.fileList[\"openFileList\"]();\n const enqueFiles = files\n // 不上传Mac下的布局文件 .DS_Store\n .filter((file) => {\n const isDsStore = file.name.toLowerCase() === \".ds_store\";\n if (isDsStore) {\n up.removeFile(file);\n }\n return !isDsStore;\n })\n .map((file) => {\n const source = file.getSource();\n if (source && source.relativePath && source.relativePath !== \"\") {\n file.path = basename(\n pathJoin([path, source.relativePath])\n );\n window.pathCache[file.id] = basename(\n pathJoin([path, source.relativePath])\n );\n } else {\n window.pathCache[file.id] = path;\n file.path = path;\n }\n return file;\n });\n window.fileList[\"enQueue\"](enqueFiles);\n } else {\n window.plupload.each(files, (files) => {\n up.removeFile(files);\n });\n }\n };\n\n UNSAFE_componentWillReceiveProps({ isScriptLoaded, isScriptLoadSucceed }) {\n if (isScriptLoaded && !this.props.isScriptLoaded) {\n // load finished\n if (isScriptLoadSucceed) {\n if (loaded) {\n return;\n }\n loaded = true;\n const user = Auth.GetUser();\n this.uploader = window.Qiniu.uploader({\n runtimes: \"html5\",\n browse_button: [\"pickfiles\", \"pickfolder\"],\n container: \"container\",\n drop_element: \"container\",\n max_file_size:\n user.policy.maxSize === \"0.00mb\"\n ? 0\n : user.policy.maxSize,\n dragdrop: true,\n chunk_size: this.getChunkSize(user.policy.saveType),\n // filters: {\n // mime_types:\n // user.policy.allowedType === null ||\n // user.policy.allowedType.length === 0\n // ? []\n // : [\n // {\n // title: \"files\",\n // extensions: user.policy.allowedType.join(\n // \",\"\n // ),\n // },\n // ],\n // },\n // iOS不能多选?\n multi_selection: true,\n uptoken_url: \"/api/v3/file/upload/credential\",\n uptoken: user.policy.saveType === \"local\" ? \"token\" : null,\n domain: \"s\",\n max_retries: 0,\n get_new_uptoken: true,\n auto_start: true,\n log_level: 5,\n init: {\n FilesAdded: this.fileAdd,\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n BeforeUpload: function () {},\n QueueChanged: (up) => {\n this.setState({ queued: up.total.queued });\n },\n UploadProgress: (up, file) => {\n window.fileList[\"updateStatus\"](file);\n },\n UploadComplete: (up, file) => {\n if (file.length === 0) {\n return;\n }\n console.log(\n \"UploadComplete\",\n file[0].status,\n file[0]\n );\n for (let i = 0; i < file.length; i++) {\n if (file[i].status === 5) {\n window.fileList[\"setComplete\"](file[i]);\n }\n }\n // 无异步操作的策略,直接刷新\n if (\n user.policy.saveType !== \"onedrive\" &&\n user.policy.saveType !== \"cos\"\n ) {\n this.props.refreshFileList();\n this.props.refreshStorage();\n }\n },\n Fresh: () => {\n console.log(\"刷新FreshFresh\");\n this.props.refreshFileList();\n this.props.refreshStorage();\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n FileUploaded: function () {},\n Error: (up, err, errTip) => {\n window.fileList[\"openFileList\"]();\n window.fileList[\"setError\"](err.file, errTip);\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n FilesRemoved: () => {},\n },\n });\n // this.fileList[\"openFileList\"]();\n } else this.onError();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError() {}\n\n openFileList = () => {\n window.fileList[\"openFileList\"]();\n };\n\n render() {\n return (\n
\n \n {this.props.keywords === \"\" && (\n \n )}\n
\n );\n }\n}\n\nconst Uploader = connect(mapStateToProps, mapDispatchToProps, null, {\n forwardRef: true,\n})(uploaderLoader()(UploaderComponent));\n\nexport default Uploader;\n","import React, { useCallback, useState } from \"react\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Input from \"@material-ui/core/Input\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../../actions\";\n\nconst unitTransform = (v) => {\n if (v < 1024) {\n return [Math.round(v), 1];\n }\n if (v < 1024 * 1024) {\n return [Math.round(v / 1024), 1024];\n }\n if (v < 1024 * 1024 * 1024) {\n return [Math.round(v / (1024 * 1024)), 1024 * 1024];\n }\n if (v < 1024 * 1024 * 1024 * 1024) {\n return [Math.round(v / (1024 * 1024 * 1024)), 1024 * 1024 * 1024];\n }\n return [\n Math.round(v / (1024 * 1024 * 1024 * 1024)),\n 1024 * 1024 * 1024 * 1024,\n ];\n};\n\nexport default function SizeInput({\n onChange,\n min,\n value,\n required,\n label,\n max,\n suffix,\n}) {\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const [unit, setUnit] = useState(1);\n let first = true;\n\n const transform = useCallback(() => {\n const res = unitTransform(value);\n if (first && value !== 0) {\n setUnit(res[1]);\n first = false;\n }\n return res;\n }, [value]);\n\n return (\n \n {label}\n {\n if (e.target.value * unit < max) {\n onChange({\n target: {\n value: (e.target.value * unit).toString(),\n },\n });\n } else {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"超出最大尺寸限制\",\n \"warning\"\n );\n }\n }}\n required={required}\n endAdornment={\n \n {\n if (transform()[0] * e.target.value < max) {\n onChange({\n target: {\n value: (\n transform()[0] * e.target.value\n ).toString(),\n },\n });\n setUnit(e.target.value);\n } else {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"超出最大尺寸限制\",\n \"warning\"\n );\n }\n }}\n >\n B{suffix && suffix}\n \n KB{suffix && suffix}\n \n \n MB{suffix && suffix}\n \n \n GB{suffix && suffix}\n \n \n TB{suffix && suffix}\n \n \n \n }\n />\n \n );\n}\n","import React from \"react\";\nimport { mediaType } from \"../../config\";\nimport ImageIcon from \"@material-ui/icons/PhotoSizeSelectActual\";\nimport VideoIcon from \"@material-ui/icons/Videocam\";\nimport AudioIcon from \"@material-ui/icons/Audiotrack\";\nimport PdfIcon from \"@material-ui/icons/PictureAsPdf\";\nimport {\n Android,\n FileExcelBox,\n FilePowerpointBox,\n FileWordBox,\n LanguageC,\n LanguageCpp,\n LanguageGo,\n LanguageJavascript,\n LanguagePhp,\n LanguagePython,\n MagnetOn,\n ScriptText,\n WindowRestore,\n ZipBox,\n} from \"mdi-material-ui\";\nimport FileShowIcon from \"@material-ui/icons/InsertDriveFile\";\nimport { lighten } from \"@material-ui/core/styles\";\nimport useTheme from \"@material-ui/core/styles/useTheme\";\nimport { Avatar } from \"@material-ui/core\";\n\nconst icons = {\n audio: {\n color: \"#651fff\",\n icon: AudioIcon,\n },\n video: {\n color: \"#d50000\",\n icon: VideoIcon,\n },\n image: {\n color: \"#d32f2f\",\n icon: ImageIcon,\n },\n pdf: {\n color: \"#f44336\",\n icon: PdfIcon,\n },\n word: {\n color: \"#538ce5\",\n icon: FileWordBox,\n },\n ppt: {\n color: \"rgb(239, 99, 63)\",\n icon: FilePowerpointBox,\n },\n excel: {\n color: \"#4caf50\",\n icon: FileExcelBox,\n },\n text: {\n color: \"#607d8b\",\n icon: ScriptText,\n },\n torrent: {\n color: \"#5c6bc0\",\n icon: MagnetOn,\n },\n zip: {\n color: \"#f9a825\",\n icon: ZipBox,\n },\n excute: {\n color: \"#1a237e\",\n icon: WindowRestore,\n },\n android: {\n color: \"#8bc34a\",\n icon: Android,\n },\n file: {\n color: \"#607d8b\",\n icon: FileShowIcon,\n },\n php: {\n color: \"#777bb3\",\n icon: LanguagePhp,\n },\n go: {\n color: \"#16b3da\",\n icon: LanguageGo,\n },\n python: {\n color: \"#3776ab\",\n icon: LanguagePython,\n },\n c: {\n color: \"#a8b9cc\",\n icon: LanguageC,\n },\n cpp: {\n color: \"#004482\",\n icon: LanguageCpp,\n },\n js: {\n color: \"#f4d003\",\n icon: LanguageJavascript,\n },\n};\n\nconst getColor = (theme, color) =>\n theme.palette.type === \"light\" ? color : lighten(color, 0.2);\n\nlet color;\n\nconst TypeIcon = (props) => {\n const theme = useTheme();\n\n const fileSuffix = props.fileName.split(\".\").pop().toLowerCase();\n let fileType = \"file\";\n Object.keys(mediaType).forEach((k) => {\n if (mediaType[k].indexOf(fileSuffix) !== -1) {\n fileType = k;\n }\n });\n const IconComponent = icons[fileType].icon;\n color = getColor(theme, icons[fileType].color);\n if (props.getColorValue) {\n props.getColorValue(color);\n }\n\n return (\n <>\n {props.isUpload && (\n \n \n \n )}\n {!props.isUpload && (\n \n )}\n \n );\n};\n\nexport default TypeIcon;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport RightIcon from \"@material-ui/icons/KeyboardArrowRight\";\nimport UpIcon from \"@material-ui/icons/ArrowUpward\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport { toggleSnackbar } from \"../../actions/index\";\n\nimport {\n MenuList,\n MenuItem,\n IconButton,\n ListItemIcon,\n ListItemText,\n withStyles,\n ListItemSecondaryAction,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\n\nconst mapStateToProps = (state) => {\n return {\n keywords: state.explorer.keywords,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nconst styles = (theme) => ({\n iconWhite: {\n color: theme.palette.common.white,\n },\n selected: {\n backgroundColor: theme.palette.primary.main + \"!important\",\n \"& $primary, & $icon\": {\n color: theme.palette.common.white,\n },\n },\n primary: {},\n icon: {},\n buttonIcon: {},\n selector: {\n minWidth: \"300px\",\n },\n container: {\n maxHeight: \"330px\",\n overflowY: \" auto\",\n },\n});\n\nclass PathSelectorCompoment extends Component {\n state = {\n presentPath: \"/\",\n dirList: [],\n selectedTarget: null,\n };\n\n componentDidMount = () => {\n const toBeLoad = this.props.presentPath;\n this.enterFolder(this.props.keywords === \"\" ? toBeLoad : \"/\");\n };\n\n back = () => {\n const paths = this.state.presentPath.split(\"/\");\n paths.pop();\n const toBeLoad = paths.join(\"/\");\n this.enterFolder(toBeLoad === \"\" ? \"/\" : toBeLoad);\n };\n\n enterFolder = (toBeLoad) => {\n API.get(\n (this.props.api ? this.props.api : \"/directory\") +\n encodeURIComponent(toBeLoad)\n )\n .then((response) => {\n const dirList = response.data.objects.filter((x) => {\n return (\n x.type === \"dir\" &&\n this.props.selected.findIndex((value) => {\n return (\n value.name === x.name && value.path === x.path\n );\n }) === -1\n );\n });\n if (toBeLoad === \"/\") {\n dirList.unshift({ name: \"/\", path: \"\" });\n }\n this.setState({\n presentPath: toBeLoad,\n dirList: dirList,\n selectedTarget: null,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"warning\"\n );\n });\n };\n\n handleSelect = (index) => {\n this.setState({ selectedTarget: index });\n this.props.onSelect(this.state.dirList[index]);\n };\n\n render() {\n const { classes } = this.props;\n\n return (\n
\n \n {this.state.presentPath !== \"/\" && (\n \n \n \n \n \n \n )}\n {this.state.dirList.map((value, index) => (\n this.handleSelect(index)}\n >\n \n \n \n \n {value.name !== \"/\" && (\n \n \n this.enterFolder(\n value.path === \"/\"\n ? value.path + value.name\n : value.path +\n \"/\" +\n value.name\n )\n }\n >\n \n \n \n )}\n \n ))}\n \n
\n );\n }\n}\n\nPathSelectorCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n presentPath: PropTypes.string.isRequired,\n selected: PropTypes.array.isRequired,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(PathSelectorCompoment));\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null &&\n contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport Auth from \"./Auth\";\nimport { Route, Redirect } from \"react-router-dom\";\n\nfunction AuthRoute({ children, ...rest }) {\n return (\n \n Auth.Check(rest.isLogin) ? (\n children\n ) : (\n \n )\n }\n />\n );\n}\n\nexport default AuthRoute;\n","import React from \"react\";\nimport { Facebook } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"80%\",\n [theme.breakpoints.up(\"md\")]: {\n width: \" 50%\",\n },\n\n marginTop: 30,\n },\n}));\n\nconst MyLoader = (props) => {\n return (\n \n );\n};\n\nfunction PageLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n \n \n \n );\n}\n\nexport default PageLoading;\n","import React from \"react\";\nimport SentimentVeryDissatisfiedIcon from \"@material-ui/icons/SentimentVeryDissatisfied\";\nimport { lighten, makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n fontSize: \"160px\",\n },\n emptyContainer: {\n bottom: \"0\",\n height: \"300px\",\n margin: \"50px auto\",\n width: \"300px\",\n color: lighten(theme.palette.text.disabled, 0.4),\n textAlign: \"center\",\n paddingTop: \"20px\",\n },\n emptyInfoBig: {\n fontSize: \"25px\",\n color: lighten(theme.palette.text.disabled, 0.4),\n },\n}));\n\nexport default function Notice(props) {\n const classes = useStyles();\n return (\n
\n \n
{props.msg}
\n
\n );\n}\n","import {\n setSiteConfig,\n toggleSnackbar,\n enableLoadUploader,\n changeViewMethod,\n} from \"../actions/index\";\nimport { fixUrlHash } from \"../utils/index\";\nimport API from \"./Api\";\nimport Auth from \"./Auth\";\nimport pathHelper from \"../utils/page\";\n\nconst initUserConfig = (siteConfig) => {\n if (siteConfig.user !== undefined && !siteConfig.user.anonymous) {\n const themes = JSON.parse(siteConfig.themes);\n const user = siteConfig.user;\n delete siteConfig.user;\n\n //更换用户自定配色\n if (\n user[\"preferred_theme\"] !== \"\" &&\n themes[user[\"preferred_theme\"]] !== undefined\n ) {\n siteConfig.theme = themes[user[\"preferred_theme\"]];\n }\n\n // 更新登录态\n Auth.authenticate(user);\n }\n if (siteConfig.user !== undefined && siteConfig.user.anonymous) {\n Auth.SetUser(siteConfig.user);\n }\n return siteConfig;\n};\n\nexport const InitSiteConfig = (rawStore) => {\n // 从缓存获取默认配置\n const configCache = JSON.parse(localStorage.getItem(\"siteConfigCache\"));\n if (configCache != null) {\n rawStore.siteConfig = configCache;\n }\n // 检查是否有path参数\n const url = new URL(window.location.href);\n const c = url.searchParams.get(\"path\");\n rawStore.navigator.path = c === null ? \"/\" : c;\n // 初始化用户个性配置\n rawStore.siteConfig = initUserConfig(rawStore.siteConfig);\n\n // 更改站点标题\n document.title = rawStore.siteConfig.title;\n return rawStore;\n};\n\nexport function enableUploaderLoad() {\n // 开启上传组件加载\n const user = Auth.GetUser();\n window.policyType = user !== null ? user.policy.saveType : \"local\";\n window.uploadConfig = user !== null ? user.policy : {};\n window.pathCache = [];\n}\n\nexport async function UpdateSiteConfig(store) {\n API.get(\"/site/config\")\n .then(function (response) {\n const themes = JSON.parse(response.data.themes);\n response.data.theme = themes[response.data.defaultTheme];\n response.data = initUserConfig(response.data);\n store.dispatch(setSiteConfig(response.data));\n localStorage.setItem(\n \"siteConfigCache\",\n JSON.stringify(response.data)\n );\n\n // 偏爱的列表样式\n const preferListMethod = Auth.GetPreference(\"view_method\");\n if (preferListMethod) {\n store.dispatch(changeViewMethod(preferListMethod));\n } else {\n if (pathHelper.isSharePage(window.location.pathname)) {\n store.dispatch(\n changeViewMethod(response.data.share_view_method)\n );\n } else {\n store.dispatch(\n changeViewMethod(response.data.home_view_method)\n );\n }\n }\n })\n .catch(function (error) {\n store.dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n \"无法加载站点配置:\" + error.message,\n \"error\"\n )\n );\n })\n .then(function () {\n enableUploaderLoad(store);\n store.dispatch(enableLoadUploader());\n });\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\nimport { makeStyles, Link } from \"@material-ui/core\";\nimport pageHelper from \"../../utils/page\";\n\nconst useStyles = makeStyles(() => ({\n icp: {\n padding: \"8px 24px\",\n position: \"absolute\",\n bottom: 0,\n },\n}));\n\nexport const ICPFooter = () => {\n const siteICPId = useSelector((state) => state.siteConfig.siteICPId);\n const classes = useStyles();\n const location = useLocation();\n const [show, setShow] = useState(true);\n\n useEffect(() => {\n // 只在分享和登录界面显示\n const isSharePage = pageHelper.isSharePage(location.pathname);\n const isLoginPage = pageHelper.isLoginPage(location.pathname);\n setShow(siteICPId && (isSharePage || isLoginPage));\n }, [siteICPId, location]);\n\n if (!show) {\n return <>;\n }\n return (\n
\n {`备案号: `}\n \n {siteICPId}\n \n
\n );\n};\n","/* eslint-disable */\r\nimport React, { Component } from 'react'\r\nimport {\r\n applyThemes,\r\n setSessionStatus,\r\n toggleSnackbar,\r\n} from \"../../actions/index\";\r\n\r\nexport class WXLogin extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n await this.initScript()\r\n this.onOpenLogin()\r\n let self = this;\r\n window.receiveMessageFromIndex = function (event) {\r\n if (event != undefined) {\r\n // 发送请求 event.data为微信信息对象 为对象类型再请求接口\r\n if (typeof event.data === 'object') {\r\n const WXCode = event.data.code\r\n self.props.wxLogin(WXCode);\r\n }\r\n }\r\n }\r\n //监听来自iframe的message事件\r\n window.addEventListener('message', receiveMessageFromIndex, false)\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('message',receiveMessageFromIndex)\r\n }\r\n\r\n initScript = () => {\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.async = false;\r\n script.src = 'https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js';\r\n document.head.appendChild(script);\r\n }\r\n\r\n onOpenLogin = () => {\r\n const timer = setTimeout(() => {\r\n this.initWX()\r\n clearTimeout(timer)\r\n }, 800)\r\n }\r\n // redirect_uri: encodeURIComponent('https://pan.blocktest.top/success.html'), // 扫码成功后重定向地址\r\n initWX() {\r\n new window.WxLogin({\r\n self_redirect: true,\r\n id: 'login_container', \r\n appid: 'wx214df6cca860634f',\r\n scope: 'snsapi_login', // 写死,网页应用暂时只支持这个值\r\n redirect_uri: encodeURIComponent(window.location.origin + '/success.html'), // 扫码成功后重定向地址\r\n state: \"\" + (new Date()).getTime(), //随机字符串\r\n style: 'black',\r\n })\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n render() {\r\n return (\r\n\t
\r\n\t
请打开手机微信扫描二维码确认登录
\r\n
\r\n\t
\r\n )\r\n }\r\n}\r\n\r\nexport default WXLogin;","import React from \"react\";\nimport ContentLoader from \"react-content-loader\";\n\nconst MyLoader = () => (\n \n \n \n);\n\nfunction captchaPlacholder() {\n return ;\n}\n\nexport default captchaPlacholder;\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../actions\";\nimport API from \"../middleware/Api\";\nimport { FormControl, Input, InputLabel } from \"@material-ui/core\";\nimport Placeholder from \"../component/Placeholder/Captcha\";\nimport { defaultValidate, useStyle } from \"./useCaptcha\";\n\nconst NormalCaptcha = forwardRef(function NormalCaptcha(\n { captchaRef, setLoading },\n ref\n) {\n const classes = useStyle();\n\n const [captcha, setCaptcha] = useState(\"\");\n const [captchaData, setCaptchaData] = useState(null);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const refreshCaptcha = () => {\n API.get(\"/site/captcha\")\n .then((response) => {\n setCaptchaData(response.data);\n setLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"无法加载验证码:\" + error.message,\n \"error\"\n );\n });\n };\n\n useEffect(() => {\n ref.current = refreshCaptcha;\n refreshCaptcha();\n }, []);\n\n useEffect(() => {\n captchaRef.current.captchaCode = captcha;\n }, [captcha]);\n\n return (\n
\n \n 验证码\n setCaptcha(e.target.value)}\n type=\"text\"\n id=\"captcha\"\n value={captcha}\n autoComplete\n />\n {\" \"}\n
\n {captchaData === null && (\n
\n \n
\n )}\n {captchaData !== null && (\n \n )}\n
\n
\n );\n});\n\nexport default function useNormalCaptcha(captchaRefreshRef, setLoading) {\n const isValidate = useRef({\n isValidate: true,\n });\n\n const captchaParamsRef = useRef({\n captchaCode: \"\",\n });\n\n const CaptchaRender = useCallback(\n function Normal() {\n return (\n \n );\n },\n [captchaParamsRef, captchaRefreshRef, setLoading]\n );\n\n return {\n isValidate,\n validate: defaultValidate,\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default class ReCAPTCHA extends React.Component {\n constructor() {\n super();\n this.handleExpired = this.handleExpired.bind(this);\n this.handleErrored = this.handleErrored.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleRecaptchaRef = this.handleRecaptchaRef.bind(this);\n }\n\n getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n return null;\n }\n\n getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n return null;\n }\n\n execute() {\n const { grecaptcha } = this.props;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n }\n\n reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n }\n\n handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n }\n\n handleErrored() {\n if (this.props.onErrored) this.props.onErrored();\n }\n\n handleChange(token) {\n if (this.props.onChange) this.props.onChange(token);\n }\n\n explicitRender() {\n if (\n this.props.grecaptcha &&\n this.props.grecaptcha.render &&\n this._widgetId === undefined\n ) {\n const wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge,\n });\n this.captcha.appendChild(wrapper);\n }\n if (\n this._executeRequested &&\n this.props.grecaptcha &&\n this._widgetId !== undefined\n ) {\n this._executeRequested = false;\n this.execute();\n }\n }\n\n componentDidMount() {\n this.explicitRender();\n }\n\n componentDidUpdate() {\n this.explicitRender();\n }\n\n componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n }\n\n delayOfCaptchaIframeRemoving() {\n const temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\";\n\n // move of the recaptcha to a temporary node\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n }\n\n // delete the temporary node after reset will be done\n setTimeout(() => {\n document.body.removeChild(temporaryNode);\n }, 5000);\n }\n\n handleRecaptchaRef(elem) {\n this.captcha = elem;\n }\n\n render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n /* eslint-disable no-unused-vars */\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n sitekey,\n onChange,\n theme,\n type,\n tabindex,\n onExpired,\n onErrored,\n size,\n stoken,\n grecaptcha,\n badge,\n hl,\n ...childProps\n } = this.props;\n /* eslint-enable no-unused-vars */\n return
;\n }\n}\n\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"]),\n};\nReCAPTCHA.defaultProps = {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange: () => {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\",\n};\n","import ReCAPTCHA from \"./ReCaptchaWrapper\";\nimport makeAsyncScriptLoader from \"react-async-script\";\n\nconst callbackName = \"onloadcallback\";\nconst globalName = \"grecaptcha\";\n\nfunction getURL() {\n const hostname = \"recaptcha.net\";\n return `https://${hostname}/recaptcha/api.js?onload=${callbackName}&render=explicit`;\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName,\n globalName,\n})(ReCAPTCHA);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { FormControl } from \"@material-ui/core\";\nimport ReCaptcha from \"../component/Login/ReCaptcha\";\nimport { defaultValidate, useStyle } from \"./useCaptcha\";\n\nconst Recaptcha = ({ captchaRef, setLoading }) => {\n const classes = useStyle();\n\n const [captcha, setCaptcha] = useState(\"\");\n\n const reCaptchaKey = useSelector(\n (state) => state.siteConfig.captcha_ReCaptchaKey\n );\n\n useEffect(() => {\n captchaRef.current.captchaCode = captcha;\n }, [captcha]);\n\n useEffect(() => setLoading(false), []);\n\n return (\n
\n \n
\n setCaptcha(value)}\n id=\"captcha\"\n name=\"captcha\"\n />\n
\n
{\" \"}\n
\n );\n};\n\nexport default function useRecaptcha(setLoading) {\n const isValidate = useRef({\n isValidate: true,\n });\n\n const captchaParamsRef = useRef({\n captchaCode: \"\",\n });\n\n const CaptchaRender = useCallback(\n function RecaptchaRender() {\n return (\n \n );\n },\n [captchaParamsRef, setLoading]\n );\n\n return {\n isValidate,\n validate: defaultValidate,\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import React, { forwardRef, useCallback, useRef } from \"react\";\nimport Script from \"react-load-script\";\nimport { useSelector } from \"react-redux\";\n\nconst TCaptcha = forwardRef(function TCaptcha(\n { captchaRef, setLoading, isValidateRef, submitRef },\n ref\n) {\n const appid = useSelector(\n (state) => state.siteConfig.tcaptcha_captcha_app_id\n );\n const onLoad = () => {\n try {\n ref.current = new window.TencentCaptcha(appid, function (res) {\n if (res.ret === 0) {\n captchaRef.current.ticket = res.ticket;\n captchaRef.current.randstr = res.randstr;\n\n isValidateRef.current.isValidate = true;\n submitRef.current.submit();\n console.log(submitRef);\n } else {\n submitRef.current.setLoading(false);\n }\n });\n } catch (e) {\n console.error(e);\n }\n setLoading(false);\n };\n return (\n \n );\n});\n\nexport default function useTCaptcha(setLoading) {\n const isValidate = useRef({\n isValidate: false,\n });\n const captchaParamsRef = useRef({\n ticket: \"\",\n randstr: \"\",\n });\n const submitRef = useRef({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n submit: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setLoading: () => {},\n });\n\n const captchaRef = useRef();\n\n const CaptchaRender = useCallback(\n function TCaptchaRender() {\n return (\n \n );\n },\n [captchaParamsRef, setLoading, isValidate, submitRef, captchaRef]\n );\n\n return {\n isValidate: isValidate,\n validate: (submit, setLoading) => {\n submitRef.current.submit = submit;\n submitRef.current.setLoading = setLoading;\n captchaRef.current.show();\n },\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import { useSelector } from \"react-redux\";\nimport { useRef, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport useNormalCaptcha from \"./normal\";\nimport useRecaptcha from \"./recaptcha\";\nimport useTCaptcha from \"./tcaptcha\";\n\nexport const useStyle = makeStyles((theme) => ({\n captchaContainer: {\n display: \"flex\",\n marginTop: \"10px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"block\",\n },\n },\n}));\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\nexport const defaultValidate = (submit, setLoading) => {};\n\nexport const useCaptcha = () => {\n const captchaType = useSelector((state) => state.siteConfig.captcha_type);\n\n const [captchaLoading, setCaptchaLoading] = useState(true);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n const captchaRefreshRef = useRef(() => {});\n\n const normal = useNormalCaptcha(captchaRefreshRef, setCaptchaLoading);\n const recaptcha = useRecaptcha(setCaptchaLoading);\n const tcaptcha = useTCaptcha(setCaptchaLoading);\n\n switch (captchaType) {\n case \"normal\":\n return { ...normal, captchaRefreshRef, captchaLoading };\n case \"recaptcha\":\n return { ...recaptcha, captchaRefreshRef, captchaLoading };\n case \"tcaptcha\":\n return { ...tcaptcha, captchaRefreshRef, captchaLoading };\n default:\n return { ...normal, captchaRefreshRef, captchaLoading };\n }\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\nimport {\n Avatar,\n Button,\n Divider,\n FormControl,\n Input,\n InputLabel,\n Link,\n makeStyles,\n Paper,\n rgbToHex,\n Typography,\n IconButton,\n} from \"@material-ui/core\";\nimport {\n applyThemes,\n setSessionStatus,\n toggleSnackbar,\n} from \"../../actions/index\";\nimport { useHistory } from \"react-router-dom\";\nimport API from \"../../middleware/Api\";\nimport Auth from \"../../middleware/Auth\";\nimport { bufferDecode, bufferEncode } from \"../../utils/index\";\nimport { enableUploaderLoad } from \"../../middleware/Init\";\nimport { Fingerprint, InfoOutlined, VpnKey } from \"@material-ui/icons\";\nimport VpnIcon from \"@material-ui/icons/VpnKeyOutlined\";\nimport { useLocation } from \"react-router\";\nimport { ICPFooter } from \"../Common/ICPFooter\";\nimport { WXLogin } from \"../Common/WxLogin\";\nimport { useCaptcha } from \"../../hooks/useCaptcha\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(\"sm\")]: {\n width: 400,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 110,\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\n 3\n )}px`,\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n avatarSmall:{\n width:\"24\",\n height:\"24\",\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n marginTop: theme.spacing(1),\n },\n submit: {\n marginTop: theme.spacing(3),\n },\n link: {\n //marginTop: \"20px\",\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"space-between\",\n },\n captchaContainer: {\n display: \"flex\",\n marginTop: \"10px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"block\",\n },\n },\n captchaPlaceholder: {\n width: 200,\n },\n buttonContainer: {\n display: \"flex\",\n },\n authnLink: {\n textAlign: \"center\",\n marginTop: 16,\n },\n linkSendSMS:{\n position:\"absolute\",\n bottom:'10px',\n right:'0px',\n color: \"rgba(0,0,0,0.64)\",\n // fontSize:\"1.05rem\"\n },\n linkSendSMSDark:{\n position:\"absolute\",\n bottom:'10px',\n right:'0px',\n color: \"rgba(255,255,255,1)\",\n // fontSize:\"1.05rem\",\n },\n linkMargn:{\n marginRight:\"10px\",\n marginTop:\"22px\",\n },\n linkMargn2:{\n marginTop:\"22px\",\n }\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nfunction LoginForm() {\n const [phone, setPhone] = useState(\"\");\n const [verification, setVerification] = useState(\"发送验证码\");\n const [verificationStatus, setVerificationStatus] = useState(true);\n const [verCode, setVerCode] = useState(\"\");\n const [pwd, setPwd] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [UserPwdLogin,setUserPwdLogin] = useState(true);\n const [USMSLogin,setUSMSLogin] = useState(false);\n const [useAuthn, setUseAuthn] = useState(false);\n const [twoFA, setTwoFA] = useState(false);\n const [weChatLogin, setWeChatLogin] = useState(false);\n const [faCode, setFACode] = useState(\"\");\n\n const loginCaptcha = useSelector((state) => state.siteConfig.loginCaptcha);\n const title = useSelector((state) => state.siteConfig.title);\n const QQLogin = useSelector((state) => state.siteConfig.QQLogin);\n const authn = useSelector((state) => state.siteConfig.authn);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const ApplyThemes = useCallback((theme) => dispatch(applyThemes(theme)), [\n dispatch,\n ]);\n const SetSessionStatus = useCallback(\n (status) => dispatch(setSessionStatus(status)),\n [dispatch]\n );\n const ThemeType = useSelector(\n (state) => state.siteConfig.theme.palette.type\n );\n const history = useHistory();\n const location = useLocation();\n const {\n captchaLoading,\n isValidate,\n validate,\n CaptchaRender,\n captchaRefreshRef,\n captchaParamsRef,\n } = useCaptcha();\n const query = useQuery();\n const classes = useStyles();\n let timer\n useEffect(() => {\n setPhone(query.get(\"username\"));\n }, [location]);\n\n const sendSMSCodeEvent = (e) => {\n e.preventDefault();\n //获取验证码\n if (verificationStatus){\n if (phone == null || phone == \"\") {\n ToggleSnackbar(\"top\", \"right\", \"请输入手机号码\", \"warning\");\n return;\n }\n setVerificationStatus(false);\n setLoading(true);\n API.post(\"/user/SendSMS\", {\n PhoneNum: phone,\n SMSType: \"1\",\n }).then((response) => {\n setLoading(false);\n if (response.rawData.code === 0) {//短信发送成功\n let timerCount = 120;\n setVerification(timerCount+'S重试')\n timer = setInterval(() => { \n setVerification(timerCount+'S重试')\n timerCount--;\n if(timerCount === -1){\n clearInterval(timer); //清除定时器\n setVerification('发送验证码')\n setVerificationStatus(true);\n }\n }, 1000);\n } else{\n setVerificationStatus(true);\n //根据状态码来显示错误信息\n ToggleSnackbar(\"top\", \"right\", response.msg, \"warning\");\n }\n }).catch((error) => {\n setVerificationStatus(true);\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n });\n }\n }\n \n const afterLogin = (data) => {\n Auth.authenticate(data);\n // 设置用户主题色\n if (data[\"preferred_theme\"] !== \"\") {\n ApplyThemes(data[\"preferred_theme\"]);\n }\n enableUploaderLoad();\n // 设置登录状态\n SetSessionStatus(true);\n\n history.push(\"/home\");\n ToggleSnackbar(\"top\", \"right\", \"登录成功\", \"success\");\n\n localStorage.removeItem(\"siteConfigCache\");\n };\n const wxLogin = (data) =>{\n //进行微信登录\n API.post(\"/user/WxLogin\", {\n code: data,\n }).then((response) => {\n if (response.rawData.code === 0) {//登陆成功\n afterLogin(response.data);\n }else{\n //根据状态码来显示错误信息\n ToggleSnackbar(\"top\", \"right\", response.msg, \"warning\");\n setWeChatLogin(false)\n }\n }).catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n captchaRefreshRef.current();\n setWeChatLogin(false)\n });\n }\n const login = (e) => {\n e.preventDefault();\n setLoading(true);\n if (!isValidate.current.isValidate && loginCaptcha) {\n validate(() => login(e), setLoading);\n return;\n }\n //如果是用户名和密码登陆直接登陆,验证码登陆,等待验证码输入\n API.post(\"/user/session\", {\n userName: phone,\n Password: pwd,\n LoginType:UserPwdLogin ? \"1\" : \"2\",//1是密码登陆 2 是验证码登陆\n SMSCode:verCode,//如果不是验证码登陆不用输入\n ...captchaParamsRef.current,\n })\n .then((response) => {\n setLoading(false);\n if (response.rawData.code === 203) {\n setTwoFA(true);\n } else if (response.rawData.code === 0) {\n afterLogin(response.data);\n }else{\n //根据状态码来显示错误信息\n ToggleSnackbar(\"top\", \"right\", response.msg, \"warning\");\n }\n })\n .catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n captchaRefreshRef.current();\n });\n };\n\n const setUserPwdLoginEvent = (e) => {\n e.preventDefault();\n setUSMSLogin(false)\n setUserPwdLogin(true);\n };\n // const componentWillMount =() =>{\n // const script = document.createElement('script');\n // script.type = 'text/javascript';\n // script.async = false;\n // script.src = 'https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js';\n // document.head.appendChild(script);\n // }\n const setWeChatLoginEvent = (e) => {\n setWeChatLogin(true)\n };\n const setPhoneLoginEvent = (e) => {\n setWeChatLogin(false)\n };\n\n const setUSMSLoginEvent = (e) => {\n e.preventDefault();\n setUSMSLogin(true)\n setUserPwdLogin(false);\n };\n\n return (\n
\n {!weChatLogin && (\n <>\n \n \n \n \n \n 登录 {title}\n \n {/* 二维码登陆 */}\n
\n
\n \n \n 手机号码\n \n \n setPhone(e.target.value)\n }\n autoComplete=\"off\"\n value={phone}\n autoFocus\n />\n \n {UserPwdLogin && (\n \n \n 密码\n \n setPwd(e.target.value)}\n type=\"password\"\n id=\"password_login\"\n value={pwd}\n autoComplete=\"off\"\n />\n \n )}\n {USMSLogin && (\n \n \n 验证码\n \n \n setVerCode(e.target.value)\n }\n autoComplete=\"off\"\n value={verCode}\n autoFocus\n >\n \n \n {verification}\n \n \n )}\n {loginCaptcha && }\n {(\n \n 登录\n \n )}\n \n {/* */}\n
\n
\n {UserPwdLogin && (\n 验证码登陆\n )}\n {USMSLogin && (\n 密码登陆\n )}\n
\n
\n \n
\n
\n \n
\n
\n 忘记密码\n 注册账号\n
\n
\n
\n \n {/* */}\n
\n {!weChatLogin && (\n
\n )}\n \n )}\n {weChatLogin && (\n <>\n \n \n \n
\n \n )}\n
\n );\n}\n\nexport default LoginForm;\n","import * as actions from \"./action\";\nimport * as reducers from \"./reducer\";\n\nexport default {\n actions,\n reducers,\n};\n","import React, { useEffect } from \"react\";\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\nimport { Button } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDrop } from \"react-dnd\";\nimport classNames from \"classnames\";\nimport MoreIcon from \"@material-ui/icons/MoreHoriz\";\n\nconst useStyles = makeStyles((theme) => ({\n expandMore: {\n color: \"#8d8d8d\",\n },\n active: {\n boxShadow: \"0 0 0 2px \" + theme.palette.primary.light,\n },\n button: {\n textTransform: \"none\",\n },\n}));\n\nexport default function PathButton(props) {\n const inputRef = React.useRef(null);\n\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => {\n if (props.more) {\n inputRef.current.click();\n } else {\n return {\n folder: {\n id: -1,\n path: props.path,\n name: props.folder === \"/\" ? \"\" : props.folder,\n },\n };\n }\n },\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n useEffect(() => {\n if (props.more && isActive) {\n inputRef.current.click();\n }\n // eslint-disable-next-line\n }, [isActive]);\n\n const classes = useStyles();\n return (\n \n \n {props.more && }\n {!props.more && (\n <>\n {props.folder}\n {props.last && (\n \n )}\n \n )}\n \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport { MenuItem, ListItemIcon, ListItemText } from \"@material-ui/core\";\nimport { useDrop } from \"react-dnd\";\nimport classNames from \"classnames\";\n\nconst useStyles = makeStyles((theme) => ({\n active: {\n border: \"2px solid \" + theme.palette.primary.light,\n },\n}));\n\nexport default function DropDownItem(props) {\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => {\n console.log({\n folder: {\n id: -1,\n path: props.path,\n name: props.folder === \"/\" ? \"\" : props.folder,\n },\n });\n },\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n useEffect(() => {\n props.setActiveStatus(props.id, isActive);\n // eslint-disable-next-line\n }, [isActive]);\n\n const classes = useStyles();\n return (\n props.navigateTo(e, props.id)}\n >\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport DropDownItem from \"./DropDownItem\";\n\nexport default function DropDown(props) {\n let timer;\n let first = props.folders.length;\n const status = [];\n for (let index = 0; index < props.folders.length; index++) {\n status[index] = false;\n }\n\n const setActiveStatus = (id, value) => {\n status[id] = value;\n if (value) {\n clearTimeout(timer);\n } else {\n let shouldClose = true;\n status.forEach((element) => {\n if (element) {\n shouldClose = false;\n }\n });\n if (shouldClose) {\n if (first <= 0) {\n timer = setTimeout(() => {\n props.onClose();\n }, 100);\n } else {\n first--;\n }\n }\n }\n console.log(status);\n };\n\n return (\n <>\n {props.folders.map((folder, id) => (\n // eslint-disable-next-line react/jsx-key\n \n ))}\n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport RightIcon from \"@material-ui/icons/KeyboardArrowRight\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport {\n navigateTo,\n navigateUp,\n setNavigatorError,\n setNavigatorLoadingStatus,\n refreshFileList,\n setSelectedTarget,\n openCreateFolderDialog,\n openShareDialog,\n drawerToggleAction,\n openCompressDialog,\n} from \"../../../actions/index\";\nimport explorer from \"../../../redux/explorer\";\nimport API from \"../../../middleware/Api\";\nimport { setCookie, setGetParameter, fixUrlHash } from \"../../../utils/index\";\nimport {\n withStyles,\n Divider,\n Menu,\n MenuItem,\n ListItemIcon,\n} from \"@material-ui/core\";\nimport PathButton from \"./PathButton\";\nimport DropDown from \"./DropDown\";\nimport pathHelper from \"../../../utils/page\";\nimport classNames from \"classnames\";\nimport Auth from \"../../../middleware/Auth\";\nimport { Archive } from \"@material-ui/icons\";\nimport { FilePlus } from \"mdi-material-ui\";\nimport { openCreateFileDialog } from \"../../../actions\";\nimport SubActions from \"./SubActions\";\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n refresh: state.navigator.refresh,\n drawerDesktopOpen: state.viewUpdate.open,\n viewMethod: state.viewUpdate.explorerViewMethod,\n keywords: state.explorer.keywords,\n sortMethod: state.viewUpdate.sortMethod,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n navigateToPath: (path) => {\n dispatch(navigateTo(path));\n },\n navigateUp: () => {\n dispatch(navigateUp());\n },\n setNavigatorError: (status, msg) => {\n dispatch(setNavigatorError(status, msg));\n },\n updateFileList: (list) => {\n dispatch(explorer.actions.updateFileList(list));\n },\n setNavigatorLoadingStatus: (status) => {\n dispatch(setNavigatorLoadingStatus(status));\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n setSelectedTarget: (target) => {\n dispatch(setSelectedTarget(target));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n openCreateFileDialog: () => {\n dispatch(openCreateFileDialog());\n },\n openShareDialog: () => {\n dispatch(openShareDialog());\n },\n handleDesktopToggle: (open) => {\n dispatch(drawerToggleAction(open));\n },\n openCompressDialog: () => {\n dispatch(openCompressDialog());\n },\n };\n};\n\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst styles = (theme) => ({\n container: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n height: \"49px\",\n overflow: \"hidden\",\n backgroundColor: theme.palette.background.paper,\n },\n navigatorContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n nav: {\n height: \"48px\",\n padding: \"5px 15px\",\n display: \"flex\",\n },\n optionContainer: {\n paddingTop: \"6px\",\n marginRight: \"10px\",\n },\n rightIcon: {\n marginTop: \"6px\",\n verticalAlign: \"top\",\n color: \"#868686\",\n },\n expandMore: {\n color: \"#8d8d8d\",\n },\n roundBorder: {\n borderRadius: \"4px 4px 0 0\",\n },\n});\n\nclass NavigatorComponent extends Component {\n keywords = \"\";\n currentID = 0;\n\n state = {\n hidden: false,\n hiddenFolders: [],\n folders: [],\n anchorEl: null,\n hiddenMode: false,\n anchorHidden: null,\n };\n\n constructor(props) {\n super(props);\n this.element = React.createRef();\n }\n\n componentDidMount = () => {\n const url = new URL(fixUrlHash(window.location.href));\n const c = url.searchParams.get(\"path\");\n this.renderPath(c === null ? \"/\" : c);\n\n if (!this.props.isShare) {\n // 如果是在个人文件管理页,首次加载时打开侧边栏\n this.props.handleDesktopToggle(true);\n }\n\n // 后退操作时重新导航\n window.onpopstate = () => {\n const url = new URL(fixUrlHash(window.location.href));\n const c = url.searchParams.get(\"path\");\n if (c !== null) {\n this.props.navigateToPath(c);\n }\n };\n };\n\n renderPath = (path = null) => {\n this.props.setNavigatorError(false, null);\n this.setState({\n folders:\n path !== null\n ? path.substr(1).split(\"/\")\n : this.props.path.substr(1).split(\"/\"),\n });\n let newPath = path !== null ? path : this.props.path;\n const apiURL = this.props.share\n ? \"/share/list/\" + this.props.share.key\n : this.keywords === \"\"\n ? \"/directory\"\n : \"/file/search/\";\n newPath = this.keywords === \"\" ? newPath : this.keywords;\n\n API.get(apiURL + encodeURIComponent(newPath))\n .then((response) => {\n this.currentID = response.data.parent;\n this.props.updateFileList(response.data.objects);\n this.props.setNavigatorLoadingStatus(false);\n const pathTemp = (path !== null\n ? path.substr(1).split(\"/\")\n : this.props.path.substr(1).split(\"/\")\n ).join(\",\");\n setCookie(\"path_tmp\", encodeURIComponent(pathTemp), 1);\n if (this.keywords === \"\") {\n setGetParameter(\"path\", encodeURIComponent(newPath));\n }\n })\n .catch((error) => {\n this.props.setNavigatorError(true, error);\n });\n\n this.checkOverFlow(true);\n };\n\n redresh = (path) => {\n this.props.setNavigatorLoadingStatus(true);\n this.props.setNavigatorError(false, \"error\");\n this.renderPath(path);\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (this.props.keywords !== nextProps.keywords) {\n this.keywords = nextProps.keywords;\n }\n if (this.props.path !== nextProps.path) {\n this.renderPath(nextProps.path);\n }\n if (this.props.refresh !== nextProps.refresh) {\n this.redresh(nextProps.path);\n }\n };\n\n componentWillUnmount() {\n this.props.updateFileList([]);\n }\n\n componentDidUpdate = (prevProps, prevStates) => {\n if (this.state.folders !== prevStates.folders) {\n this.checkOverFlow(true);\n }\n if (this.props.drawerDesktopOpen !== prevProps.drawerDesktopOpen) {\n delay(500).then(() => this.checkOverFlow());\n }\n };\n\n checkOverFlow = (force) => {\n if (this.overflowInitLock && !force) {\n return;\n }\n if (this.element.current !== null) {\n const hasOverflowingChildren =\n this.element.current.offsetHeight <\n this.element.current.scrollHeight ||\n this.element.current.offsetWidth <\n this.element.current.scrollWidth;\n if (hasOverflowingChildren) {\n this.overflowInitLock = true;\n this.setState({ hiddenMode: true });\n }\n if (!hasOverflowingChildren && this.state.hiddenMode) {\n this.setState({ hiddenMode: false });\n }\n }\n };\n\n navigateTo = (event, id) => {\n if (id === this.state.folders.length - 1) {\n //最后一个路径\n this.setState({ anchorEl: event.currentTarget });\n } else if (\n id === -1 &&\n this.state.folders.length === 1 &&\n this.state.folders[0] === \"\"\n ) {\n this.props.refreshFileList();\n this.handleClose();\n } else if (id === -1) {\n this.props.navigateToPath(\"/\");\n this.handleClose();\n } else {\n this.props.navigateToPath(\n \"/\" + this.state.folders.slice(0, id + 1).join(\"/\")\n );\n this.handleClose();\n }\n };\n\n handleClose = () => {\n this.setState({ anchorEl: null, anchorHidden: null, anchorSort: null });\n };\n\n showHiddenPath = (e) => {\n this.setState({ anchorHidden: e.currentTarget });\n };\n\n performAction = (e) => {\n this.handleClose();\n if (e === \"refresh\") {\n this.redresh();\n return;\n }\n const presentPath = this.props.path.split(\"/\");\n const newTarget = [\n {\n id: this.currentID,\n type: \"dir\",\n name: presentPath.pop(),\n path: presentPath.length === 1 ? \"/\" : presentPath.join(\"/\"),\n },\n ];\n //this.props.navitateUp();\n switch (e) {\n case \"share\":\n this.props.setSelectedTarget(newTarget);\n this.props.openShareDialog();\n break;\n case \"newfolder\":\n this.props.openCreateFolderDialog();\n break;\n case \"compress\":\n this.props.setSelectedTarget(newTarget);\n this.props.openCompressDialog();\n break;\n case \"newFile\":\n this.props.openCreateFileDialog();\n break;\n default:\n break;\n }\n };\n\n render() {\n const { classes } = this.props;\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const user = Auth.GetUser();\n\n const presentFolderMenu = (\n \n this.performAction(\"refresh\")}>\n \n \n \n 刷新\n \n {this.props.keywords === \"\" && isHomePage && (\n
\n \n this.performAction(\"share\")}>\n \n \n \n 分享\n \n {user.group.compress && (\n this.performAction(\"compress\")}\n >\n \n \n \n 压缩\n \n )}\n \n this.performAction(\"newfolder\")}\n >\n \n \n \n 创建文件夹\n \n\n this.performAction(\"newFile\")}>\n \n \n \n 创建文件\n \n
\n )}\n \n );\n\n return (\n \n
\n
\n \n this.navigateTo(e, -1)}\n />\n \n \n {this.state.hiddenMode && (\n \n \n \n \n \n \n {/* */}\n \n this.navigateTo(\n e,\n this.state.folders.length - 1\n )\n }\n />\n {presentFolderMenu}\n \n )}\n {!this.state.hiddenMode &&\n this.state.folders.map((folder, id, folders) => (\n \n {folder !== \"\" && (\n \n \n this.navigateTo(e, id)\n }\n />\n {id === folders.length - 1 &&\n presentFolderMenu}\n {id !== folders.length - 1 && (\n \n )}\n \n )}\n \n ))}\n
\n
\n \n
\n
\n \n
\n );\n }\n}\n\nNavigatorComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n};\n\nconst Navigator = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(NavigatorComponent)));\n\nexport default Navigator;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport {\n withStyles,\n ButtonBase,\n Typography,\n Tooltip,\n fade,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport { lighten } from \"@material-ui/core/styles\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport statusHelper from \"../../utils/page\";\nimport Grow from \"@material-ui/core/Grow\";\nimport { Folder } from \"@material-ui/icons\";\n\nconst styles = (theme) => ({\n container: {\n padding: \"7px\",\n },\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n height: \"50px\",\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: \"6px\",\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n display: \"flex\",\n justifyContent: \"left\",\n alignItems: \"initial\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass SmallIconCompoment extends Component {\n state = {};\n\n render() {\n const { classes } = this.props;\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isMobile = statusHelper.isMobile();\n\n return (\n \n \n {(!isSelected || !isMobile) && (\n <>\n {this.props.isFolder && }\n {!this.props.isFolder && (\n \n )}\n \n )}\n {isSelected && isMobile && (\n \n \n \n )}\n
\n \n \n {this.props.file.name}\n \n \n \n );\n }\n}\n\nSmallIconCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst SmallIcon = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(SmallIconCompoment));\n\nexport default SmallIcon;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport { LazyLoadImage } from \"react-lazy-load-image-component\";\nimport ContentLoader from \"react-content-loader\";\nimport { baseURL } from \"../../middleware/Api\";\nimport {\n withStyles,\n ButtonBase,\n Typography,\n Divider,\n Tooltip,\n fade,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport { lighten } from \"@material-ui/core/styles\";\nimport { withRouter } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport statusHelper from \"../../utils/page\";\nimport Grow from \"@material-ui/core/Grow\";\n\nconst styles = (theme) => ({\n container: {\n padding: \"7px\",\n },\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: \"6px\",\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n alignItems: \"initial\",\n display: \"initial\",\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n preview: {\n overflow: \"hidden\",\n height: \"150px\",\n width: \"100%\",\n borderRadius: \"6px 6px 0 0\",\n backgroundColor: theme.palette.background.default,\n },\n previewIcon: {\n overflow: \"hidden\",\n height: \"149px\",\n width: \"100%\",\n borderRadius: \"5px 5px 0 0\",\n backgroundColor: theme.palette.background.paper,\n paddingTop: \"50px\",\n },\n iconBig: {\n fontSize: 50,\n },\n picPreview: {\n objectFit: \"cover\",\n width: \"100%\",\n height: \"100%\",\n },\n fileInfo: {\n height: \"50px\",\n display: \"flex\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n hide: {\n display: \"none\",\n },\n loadingAnimation: {\n borderRadius: \"6px 6px 0 0\",\n height: \"100%\",\n width: \"100%\",\n },\n shareFix: {\n marginLeft: \"20px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass FileIconCompoment extends Component {\n static defaultProps = {\n share: false,\n };\n\n state = {\n loading: false,\n showPicIcon: false,\n };\n\n render() {\n const { classes } = this.props;\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSharePage = pathHelper.isSharePage(\n this.props.location.pathname\n );\n const isMobile = statusHelper.isMobile();\n\n return (\n
\n \n {this.props.file.pic !== \"\" &&\n !this.state.showPicIcon &&\n this.props.file.pic !== \" \" &&\n this.props.file.pic !== \"null,null\" && (\n
\n \n this.setState({ loading: false })\n }\n beforeLoad={() =>\n this.setState({ loading: true })\n }\n onError={() =>\n this.setState({ showPicIcon: true })\n }\n />\n \n \n \n
\n )}\n {(this.props.file.pic === \"\" ||\n this.state.showPicIcon ||\n this.props.file.pic === \" \" ||\n this.props.file.pic === \"null,null\") && (\n
\n \n
\n )}\n {(this.props.file.pic === \"\" ||\n this.state.showPicIcon ||\n this.props.file.pic === \" \" ||\n this.props.file.pic === \"null,null\") && }\n
\n {!this.props.share && (\n \n {(!isSelected || !isMobile) && (\n \n )}\n {isSelected && isMobile && (\n \n \n \n )}\n
\n )}\n \n \n {this.props.file.name}\n \n \n
\n \n \n );\n }\n}\n\nFileIconCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst FileIcon = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(FileIconCompoment)));\n\nexport default FileIcon;\n","import React from \"react\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport classNames from \"classnames\";\nimport {\n ButtonBase,\n Typography,\n Tooltip,\n makeStyles,\n fade,\n} from \"@material-ui/core\";\nimport { useSelector } from \"react-redux\";\nimport { lighten } from \"@material-ui/core/styles\";\nimport statusHelper from \"../../utils/page\";\nimport TypeIcon from \"./TypeIcon\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: \"7px\",\n },\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n height: \"50px\",\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: \"6px\",\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n display: \"flex\",\n justifyContent: \"left\",\n alignItems: \"initial\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n active: {\n boxShadow: \"0 0 0 2px \" + theme.palette.primary.light,\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n}));\n\nexport default function Folder({ folder, isActive, onIconClick }) {\n const selected = useSelector((state) => state.explorer.selected);\n const classes = useStyles();\n const isMobile = statusHelper.isMobile();\n const isSelected =\n selected.findIndex((value) => {\n return value === folder;\n }) !== -1;\n\n return (\n \n \n {(!isSelected || !isMobile) && }\n {isSelected && isMobile && (\n \n )}\n \n \n \n {folder.name}\n \n \n \n );\n}\n","import React from \"react\";\nimport SmallIcon from \"../SmallIcon\";\nimport FileIcon from \"../FileIcon\";\nimport { useSelector } from \"react-redux\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Folder from \"../Folder\";\n\nconst useStyles = makeStyles(() => ({\n dragging: {\n width: \"200px\",\n },\n cardDragged: {\n position: \"absolute\",\n \"transform-origin\": \"bottom left\",\n },\n}));\n\nconst diliverIcon = (object, viewMethod, classes) => {\n if (object.type === \"dir\") {\n return (\n
\n \n
\n );\n }\n if (object.type === \"file\" && viewMethod === \"icon\") {\n return (\n
\n \n
\n );\n }\n if (\n (object.type === \"file\" && viewMethod === \"smallIcon\") ||\n viewMethod === \"list\"\n ) {\n return (\n
\n \n
\n );\n }\n};\n\nconst Preview = (props) => {\n const selected = useSelector((state) => state.explorer.selected);\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const classes = useStyles();\n return (\n <>\n {selected.length === 0 &&\n diliverIcon(props.object, viewMethod, classes)}\n {selected.length > 0 && (\n <>\n {selected.slice(0, 3).map((card, i) => (\n \n {diliverIcon(card, viewMethod, classes)}\n \n ))}\n \n )}\n \n );\n};\nexport default Preview;\n","import React from \"react\";\nimport { useDragLayer } from \"react-dnd\";\nimport Preview from \"./Preview\";\nimport { useSelector } from \"react-redux\";\nconst layerStyles = {\n position: \"fixed\",\n pointerEvents: \"none\",\n zIndex: 100,\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n};\n\nfunction getItemStyles(\n initialOffset,\n currentOffset,\n pointerOffset,\n viewMethod\n) {\n if (!initialOffset || !currentOffset) {\n return {\n display: \"none\",\n };\n }\n let { x, y } = currentOffset;\n if (viewMethod === \"list\") {\n x += pointerOffset.x - initialOffset.x;\n y += pointerOffset.y - initialOffset.y;\n }\n\n const transform = `translate(${x}px, ${y}px)`;\n return {\n opacity: 0.5,\n transform,\n WebkitTransform: transform,\n };\n}\nconst CustomDragLayer = (props) => {\n const {\n itemType,\n isDragging,\n item,\n initialOffset,\n currentOffset,\n pointerOffset,\n } = useDragLayer((monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n pointerOffset: monitor.getInitialClientOffset(),\n isDragging: monitor.isDragging(),\n }));\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n function renderItem() {\n switch (itemType) {\n case \"object\":\n return ;\n default:\n return null;\n }\n }\n if (!isDragging) {\n return null;\n }\n return (\n
\n \n {renderItem()}\n
\n \n );\n};\nexport default CustomDragLayer;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\n\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport classNames from \"classnames\";\nimport { sizeToString } from \"../../utils/index\";\nimport {\n withStyles,\n TableCell,\n TableRow,\n Typography,\n fade,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport { lighten } from \"@material-ui/core/styles\";\nimport pathHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router\";\nimport KeyboardReturnIcon from \"@material-ui/icons/KeyboardReturn\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport statusHelper from \"../../utils/page\";\nimport Grow from \"@material-ui/core/Grow\";\nimport dayjs from \"dayjs\";\nimport { formatLocalTime } from \"../../utils/datetime\";\n\nconst styles = (theme) => ({\n selected: {\n \"&:hover\": {},\n backgroundColor: fade(theme.palette.primary.main, 0.18),\n },\n\n selectedShared: {\n \"&:hover\": {},\n backgroundColor: fade(theme.palette.primary.main, 0.18),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n },\n },\n icon: {\n verticalAlign: \"middle\",\n marginRight: \"20px\",\n color: theme.palette.text.secondary,\n },\n tableIcon: {\n marginRight: \"20px\",\n verticalAlign: \"middle\",\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n userSelect: \"none\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n userSelect: \"none\",\n },\n folderName: {\n marginRight: \"20px\",\n display: \"flex\",\n alignItems: \"center\",\n },\n hideAuto: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n tableRow: {\n padding: \"10px 16px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n active: {\n backgroundColor: fade(theme.palette.primary.main, 0.1),\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass TableRowCompoment extends Component {\n state = {};\n\n render() {\n const { classes } = this.props;\n const isShare = pathHelper.isSharePage(this.props.location.pathname);\n\n let icon;\n if (this.props.file.type === \"dir\") {\n icon = ;\n } else if (this.props.file.type === \"up\") {\n icon = ;\n } else {\n icon = (\n \n );\n }\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isMobile = statusHelper.isMobile();\n\n return (\n \n \n \n \n {(!isSelected || !isMobile) && icon}\n {isSelected && isMobile && (\n \n \n \n )}\n \n {this.props.file.name}\n \n \n \n \n {\" \"}\n {this.props.file.type !== \"dir\" &&\n this.props.file.type !== \"up\" &&\n sizeToString(this.props.file.size)}\n \n \n \n \n {\" \"}\n {formatLocalTime(\n this.props.file.date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n \n );\n }\n}\n\nTableRowCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst TableItem = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(TableRowCompoment)));\n\nexport default TableItem;\n","import React from \"react\";\nimport { useDrop } from \"react-dnd\";\nimport Folder from \"../Folder\";\nimport classNames from \"classnames\";\nimport TableItem from \"../TableRow\";\nexport default function FolderDropWarpper({\n isListView,\n folder,\n onIconClick,\n contextMenu,\n handleClick,\n handleDoubleClick,\n className,\n pref,\n}) {\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => ({ folder }),\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n const isActive = canDrop && isOver;\n if (!isListView) {\n return (\n
\n \n
\n );\n }\n return (\n \n );\n}\n","import React, { useCallback, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n changeContextMenu,\n setSelectedTarget,\n selectFile as selectFileAction,\n navigateTo,\n showImgPreivew,\n openMusicDialog,\n toggleSnackbar,\n dragAndDrop,\n openLoadingDialog,\n} from \"../../actions/index\";\nimport statusHelper from \"../../utils/page\";\nimport FileIcon from \"./FileIcon\";\nimport SmallIcon from \"./SmallIcon\";\nimport TableItem from \"./TableRow\";\nimport classNames from \"classnames\";\nimport { isPreviewable } from \"../../config\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDrag } from \"react-dnd\";\nimport { getEmptyImage } from \"react-dnd-html5-backend\";\nimport DropWarpper from \"./DnD/DropWarpper\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport Auth from \"../../middleware/Auth\";\nimport { pathBack } from \"../../utils\";\nimport { openPreview } from \"../../actions\";\n\nconst useStyles = makeStyles(() => ({\n container: {\n padding: \"7px\",\n },\n fixFlex: {\n minWidth: 0,\n },\n dragging: {\n opacity: 0.4,\n },\n}));\n\nexport default function ObjectIcon(props) {\n const path = useSelector((state) => state.navigator.path);\n const selected = useSelector((state) => state.explorer.selected);\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const navigatorPath = useSelector((state) => state.navigator.path);\n const location = useLocation();\n\n const dispatch = useDispatch();\n const ContextMenu = useCallback(\n (type, open) => dispatch(changeContextMenu(type, open)),\n [dispatch]\n );\n const SetSelectedTarget = useCallback(\n (targets) => dispatch(setSelectedTarget(targets)),\n [dispatch]\n );\n\n const NavitateTo = useCallback((targets) => dispatch(navigateTo(targets)), [\n dispatch,\n ]);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const DragAndDrop = useCallback(\n (source, target) => dispatch(dragAndDrop(source, target)),\n [dispatch]\n );\n const OpenLoadingDialog = useCallback(\n (text) => dispatch(openLoadingDialog(text)),\n [dispatch]\n );\n const OpenPreview = useCallback(() => dispatch(openPreview()), [dispatch]);\n\n const classes = useStyles();\n\n const contextMenu = (e) => {\n if (props.file.type === \"up\") {\n return;\n }\n e.preventDefault();\n if (\n selected.findIndex((value) => {\n return value === props.file;\n }) === -1\n ) {\n SetSelectedTarget([props.file]);\n }\n ContextMenu(\"file\", true);\n };\n\n const selectFile = (e) => {\n dispatch(selectFileAction(props.file, e, props.index));\n };\n const enterFolder = () => {\n NavitateTo(\n path === \"/\" ? path + props.file.name : path + \"/\" + props.file.name\n );\n };\n const handleClick = (e) => {\n if (props.file.type === \"up\") {\n NavitateTo(pathBack(navigatorPath));\n }\n if (\n statusHelper.isMobile() ||\n statusHelper.isSharePage(location.pathname)\n ) {\n selectFile(e);\n if (props.file.type === \"dir\" && !e.ctrlKey) {\n enterFolder();\n return;\n }\n } else {\n selectFile(e);\n }\n };\n\n const handleDoubleClick = () => {\n if (props.file.type === \"up\") {\n return;\n }\n if (props.file.type === \"dir\") {\n enterFolder();\n return;\n }\n const isShare = statusHelper.isSharePage(location.pathname);\n if (isShare) {\n const user = Auth.GetUser();\n if (!Auth.Check() && user && !user.group.shareDownload) {\n ToggleSnackbar(\"top\", \"right\", \"请先登录\", \"warning\");\n return;\n }\n }\n if (window.shareInfo && !window.shareInfo.preview) {\n OpenLoadingDialog(\"获取下载地址...\");\n return;\n }\n\n OpenPreview();\n };\n\n const handleIconClick = (e) => {\n if (statusHelper.isMobile()) {\n e.stopPropagation();\n e.ctrlKey = true;\n selectFile(e);\n return false;\n }\n };\n\n const [{ isDragging }, drag, preview] = useDrag({\n item: {\n object: props.file,\n type: \"object\",\n selected: [...selected],\n viewMethod: viewMethod,\n },\n end: (item, monitor) => {\n const dropResult = monitor.getDropResult();\n if (item && dropResult) {\n if (dropResult.folder) {\n if (\n item.object.id !== dropResult.folder.id ||\n item.object.type !== dropResult.folder.type\n ) {\n DragAndDrop(item.object, dropResult.folder);\n }\n }\n }\n },\n canDrag: () => {\n return (\n !statusHelper.isMobile() &&\n statusHelper.isHomePage(location.pathname)\n );\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n // eslint-disable-next-line\n }, []);\n\n if (viewMethod === \"list\") {\n return (\n <>\n {props.file.type === \"dir\" && (\n \n )}\n {props.file.type !== \"dir\" && (\n \n )}\n \n );\n }\n\n return (\n \n \n {props.file.type === \"dir\" && viewMethod !== \"list\" && (\n \n )}\n {props.file.type === \"file\" && viewMethod === \"icon\" && (\n \n )}\n {props.file.type === \"file\" && viewMethod === \"smallIcon\" && (\n \n )}\n \n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport {\n changeContextMenu,\n setNavigatorLoadingStatus,\n navigateTo,\n openCreateFolderDialog,\n openRenameDialog,\n openMoveDialog,\n openRemoveDialog,\n openShareDialog,\n showImgPreivew,\n openMusicDialog,\n toggleSnackbar,\n openRemoteDownloadDialog,\n openTorrentDownloadDialog,\n openGetSourceDialog,\n openCopyDialog,\n openLoadingDialog,\n setSelectedTarget,\n openDecompressDialog,\n refreshFileList,\n openCompressDialog,\n openCreateFileDialog,\n openRelocateDialog,\n} from \"../../actions/index\";\nimport { isCompressFile, isPreviewable, isTorrent } from \"../../config\";\nimport { allowSharePreview } from \"../../utils/index\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport OpenFolderIcon from \"@material-ui/icons/FolderOpen\";\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\nimport MoveIcon from \"@material-ui/icons/Input\";\nimport LinkIcon from \"@material-ui/icons/InsertLink\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport { FilePlus, MagnetOn, Transfer } from \"mdi-material-ui\";\nimport {\n withStyles,\n Typography,\n MenuItem,\n Divider,\n ListItemIcon,\n} from \"@material-ui/core\";\nimport pathHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router-dom\";\nimport Auth from \"../../middleware/Auth\";\nimport { Archive, InfoOutlined, Unarchive } from \"@material-ui/icons\";\nimport Menu from \"@material-ui/core/Menu\";\nimport { FolderUpload } from \"mdi-material-ui\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport { openPreview } from \"../../actions\";\nimport {\n setSideBar,\n toggleObjectInfoSidebar,\n} from \"../../redux/explorer/action\";\n\nconst styles = () => ({\n propover: {},\n divider: {\n marginTop: 4,\n marginBottom: 4,\n },\n});\n\nconst StyledListItemIcon = withStyles({\n root: {\n minWidth: 38,\n },\n})(ListItemIcon);\n\nconst mapStateToProps = (state) => {\n return {\n menuType: state.viewUpdate.contextType,\n menuOpen: state.viewUpdate.contextOpen,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n path: state.navigator.path,\n selected: state.explorer.selected,\n keywords: state.explorer.keywords,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n changeContextMenu: (type, open) => {\n dispatch(changeContextMenu(type, open));\n },\n setNavigatorLoadingStatus: (status) => {\n dispatch(setNavigatorLoadingStatus(status));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n openCreateFileDialog: () => {\n dispatch(openCreateFileDialog());\n },\n openRenameDialog: () => {\n dispatch(openRenameDialog());\n },\n openMoveDialog: () => {\n dispatch(openMoveDialog());\n },\n openRemoveDialog: () => {\n dispatch(openRemoveDialog());\n },\n openShareDialog: () => {\n dispatch(openShareDialog());\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openRemoteDownloadDialog: () => {\n dispatch(openRemoteDownloadDialog());\n },\n openTorrentDownloadDialog: () => {\n dispatch(openTorrentDownloadDialog());\n },\n openGetSourceDialog: () => {\n dispatch(openGetSourceDialog());\n },\n openCopyDialog: () => {\n dispatch(openCopyDialog());\n },\n openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n openDecompressDialog: () => {\n dispatch(openDecompressDialog());\n },\n openCompressDialog: () => {\n dispatch(openCompressDialog());\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n openRelocateDialog: () => {\n dispatch(openRelocateDialog());\n },\n openPreview: () => {\n dispatch(openPreview());\n },\n toggleObjectInfoSidebar: (open) => {\n dispatch(toggleObjectInfoSidebar(open));\n },\n };\n};\n\nclass ContextMenuCompoment extends Component {\n X = 0;\n Y = 0;\n\n state = {};\n\n componentDidMount = () => {\n window.document.addEventListener(\"mousemove\", this.setPoint);\n };\n\n setPoint = (e) => {\n this.Y = e.clientY;\n this.X = e.clientX;\n };\n\n openArchiveDownload = () => {\n this.props.changeContextMenu(\"file\", false);\n this.props.openLoadingDialog(\"打包中...\");\n };\n\n openDownload = () => {\n if (!allowSharePreview()) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"未登录用户无法预览\",\n \"warning\"\n );\n this.props.changeContextMenu(\"file\", false);\n return;\n }\n this.props.changeContextMenu(\"file\", false);\n this.props.openLoadingDialog(\"获取下载地址...\");\n };\n\n enterFolder = () => {\n this.props.navigateTo(\n this.props.path === \"/\"\n ? this.props.path + this.props.selected[0].name\n : this.props.path + \"/\" + this.props.selected[0].name\n );\n };\n\n clickUpload = (id) => {\n this.props.changeContextMenu(\"empty\", false);\n const uploadButton = document.getElementsByClassName(id)[0];\n if (document.body.contains(uploadButton)) {\n uploadButton.click();\n } else {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"上传组件还未加载完成\",\n \"warning\"\n );\n }\n };\n\n // 暂时只对空白处右键菜单使用这个函数,疑似有bug会导致的一个菜单被默认选中。\n // 相关issue: https://github.com/mui-org/material-ui/issues/23747\n renderMenuItems = (items) => {\n const res = [];\n let key = 0;\n\n [\"top\", \"center\", \"bottom\"].forEach((position) => {\n let visibleCount = 0;\n items[position].forEach((item) => {\n if (item.condition) {\n res.push(\n \n {item.icon}\n \n {item.text}\n \n \n );\n key++;\n visibleCount++;\n }\n });\n if (visibleCount > 0 && position != \"bottom\") {\n res.push(\n \n );\n key++;\n }\n });\n\n return res;\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const emptyMenuList = {\n top: [\n {\n condition: true,\n onClick: () => {\n this.props.refreshFileList();\n this.props.changeContextMenu(\n this.props.menuType,\n false\n );\n },\n icon: ,\n text: \"刷新\",\n },\n ],\n center: [\n {\n condition: true,\n onClick: () => this.clickUpload(\"uploadFileForm\"),\n icon: ,\n text: \"上传文件\",\n },\n {\n condition: true,\n onClick: () => this.clickUpload(\"uploadFolderForm\"),\n icon: ,\n text: \"上传目录\",\n },\n // {\n // condition: user.group.allowRemoteDownload,\n // onClick: () => this.props.openRemoteDownloadDialog(),\n // icon: ,\n // text: \"离线下载\",\n // },\n ],\n bottom: [\n {\n condition: true,\n onClick: () => this.props.openCreateFolderDialog(),\n icon: ,\n text: \"创建文件夹\",\n },\n {\n condition: true,\n onClick: () => this.props.openCreateFileDialog(),\n icon: ,\n text: \"创建文件\",\n },\n ],\n };\n\n return (\n
\n \n this.props.changeContextMenu(this.props.menuType, false)\n }\n anchorReference=\"anchorPosition\"\n anchorPosition={{ top: this.Y, left: this.X }}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n >\n {this.props.menuType === \"empty\" && (\n
\n {\n this.props.refreshFileList();\n this.props.changeContextMenu(\n this.props.menuType,\n false\n );\n }}\n >\n \n \n \n 刷新\n \n \n \n this.clickUpload(\"uploadFileForm\")\n }\n >\n \n \n \n \n 上传文件\n \n \n \n this.clickUpload(\"uploadFolderForm\")\n }\n >\n \n \n \n \n 上传目录\n \n \n {/* {user.group.allowRemoteDownload && (\n \n this.props.openRemoteDownloadDialog()\n }\n >\n \n \n \n \n 离线下载\n \n \n )} */}\n\n \n \n this.props.openCreateFolderDialog()\n }\n >\n \n \n \n \n 创建文件夹\n \n \n \n this.props.openCreateFileDialog()\n }\n >\n \n \n \n \n 创建文件\n \n \n
\n )}\n {this.props.menuType !== \"empty\" && (\n
\n {!this.props.isMultiple && this.props.withFolder && (\n
\n \n \n \n \n \n 进入\n \n \n {isHomePage && (\n \n )}\n
\n )}\n {!this.props.isMultiple &&\n this.props.withFile &&\n (!this.props.share ||\n this.props.share.preview) &&\n isPreviewable(this.props.selected[0].name) && (\n
\n \n this.props.openPreview()\n }\n >\n \n \n \n \n 打开\n \n \n
\n )}\n\n {!this.props.isMultiple && this.props.withFile && (\n
\n this.openDownload()}\n >\n \n \n \n \n 下载\n \n \n {isHomePage && (\n \n )}\n
\n )}\n\n {/* {(this.props.isMultiple || this.props.withFolder) &&\n (user.group.allowArchiveDownload ||\n !isHomePage) && (\n \n this.openArchiveDownload()\n }\n >\n \n \n \n \n 打包下载\n \n \n )} */}\n {/* {!this.props.isMultiple &&\n this.props.withFile &&\n isHomePage && (\n \n this.props.openGetSourceDialog()\n }\n >\n \n \n \n \n 获取外链\n \n \n )} */}\n\n {/* {!this.props.isMultiple &&\n isHomePage &&\n user.group.allowRemoteDownload &&\n this.props.withFile &&\n isTorrent(this.props.selected[0].name) && (\n \n this.props.openTorrentDownloadDialog()\n }\n >\n \n \n \n \n 创建离线下载任务\n \n \n )} */}\n {/* {!this.props.isMultiple &&\n isHomePage &&\n user.group.compress &&\n this.props.withFile &&\n isCompressFile(this.props.selected[0].name) && (\n \n this.props.openDecompressDialog()\n }\n >\n \n \n \n \n 解压缩\n \n \n )} */}\n\n {/* {isHomePage && user.group.compress && (\n \n this.props.openCompressDialog()\n }\n >\n \n \n \n \n 创建压缩文件\n \n \n )} */}\n\n {/* {isHomePage && user.group.relocate && (\n \n this.props.openRelocateDialog()\n }\n >\n \n \n \n \n 转移存储策略\n \n \n )} */}\n {!this.props.isMultiple && !this.props.withFolder && isHomePage && (\n this.props.openShareDialog()}\n >\n \n \n \n \n 创建分享链接\n \n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n \n this.props.toggleObjectInfoSidebar(true)\n }\n >\n \n \n \n \n 详细信息\n \n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n
\n \n this.props.openRenameDialog()\n }\n >\n \n \n \n \n 重命名\n \n \n {this.props.keywords === \"\" && (\n \n this.props.openCopyDialog()\n }\n >\n \n \n \n \n 复制\n \n \n )}\n
\n )}\n {isHomePage && (\n
\n {this.props.keywords === \"\" && (\n \n this.props.openMoveDialog()\n }\n >\n \n \n \n \n 移动\n \n \n )}\n\n \n \n this.props.openRemoveDialog()\n }\n >\n \n \n \n \n 删除\n \n \n
\n )}\n
\n )}\n \n
\n );\n }\n}\n\nContextMenuCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n menuType: PropTypes.string.isRequired,\n};\n\nconst ContextMenu = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ContextMenuCompoment)));\n\nexport default ContextMenu;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport {\n navigateTo,\n changeContextMenu,\n navigateUp,\n setSelectedTarget,\n openRemoveDialog,\n} from \"../../actions/index\";\nimport explorer from \"../../redux/explorer\";\nimport ObjectIcon from \"./ObjectIcon\";\nimport ContextMenu from \"./ContextMenu\";\nimport EmptyIcon from \"@material-ui/icons/Unarchive\";\nimport SadIcon from \"@material-ui/icons/SentimentVeryDissatisfied\";\nimport classNames from \"classnames\";\nimport ImgPreivew from \"./ImgPreview\";\nimport pathHelper from \"../../utils/page\";\nimport { isMac } from \"../../utils\";\nimport { withRouter } from \"react-router-dom\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n withStyles,\n Typography,\n Grid,\n CircularProgress,\n Paper,\n} from \"@material-ui/core\";\nimport { GlobalHotKeys, configure } from \"react-hotkeys\";\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\n\nconst styles = (theme) => ({\n paper: {\n padding: theme.spacing(2),\n textAlign: \"center\",\n color: theme.palette.text.secondary,\n margin: \"10px\",\n },\n root: {\n flexGrow: 1,\n padding: \"10px\",\n overflowY: \"auto\",\n height: \"calc(100vh - 113px)\",\n [theme.breakpoints.up(\"sm\")]: {\n overflowY: \"auto\",\n height: \"calc(100vh - 113px)\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n height: \"100%\",\n },\n },\n rootTable: {\n padding: \"0px\",\n backgroundColor: theme.palette.background.paper.white,\n [theme.breakpoints.up(\"sm\")]: {\n overflowY: \"auto\",\n height: \"calc(100vh - 113px)\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n height: \"100%\",\n },\n },\n typeHeader: {\n margin: \"10px 25px\",\n color: \"#6b6b6b\",\n fontWeight: \"500\",\n },\n loading: {\n justifyContent: \"center\",\n display: \"flex\",\n marginTop: \"40px\",\n },\n errorBox: {\n padding: theme.spacing(4),\n },\n errorMsg: {\n marginTop: \"10px\",\n },\n emptyContainer: {\n bottom: \"0\",\n height: \"300px\",\n margin: \"50px auto\",\n width: \"300px\",\n color: theme.palette.text.disabled,\n textAlign: \"center\",\n paddingTop: \"20px\",\n },\n emptyIcon: {\n fontSize: \"160px\",\n },\n emptyInfoBig: {\n fontSize: \"25px\",\n color: theme.palette.text.disabled,\n },\n emptyInfoSmall: {\n color: theme.palette.text.hint,\n },\n hideAuto: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n flexFix: {\n minWidth: 0,\n },\n upButton: {\n marginLeft: \"20px\",\n marginTop: \"10px\",\n marginBottom: \"10px\",\n },\n clickAway: {\n height: \"100%\",\n width: \"100%\",\n },\n rootShare: {\n height: \"100%\",\n minHeight: 500,\n },\n visuallyHidden: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 20,\n width: 1,\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n drawerDesktopOpen: state.viewUpdate.open,\n viewMethod: state.viewUpdate.explorerViewMethod,\n sortMethod: state.viewUpdate.sortMethod,\n fileList: state.explorer.fileList,\n dirList: state.explorer.dirList,\n loading: state.viewUpdate.navigatorLoading,\n navigatorError: state.viewUpdate.navigatorError,\n navigatorErrorMsg: state.viewUpdate.navigatorErrorMsg,\n keywords: state.explorer.keywords,\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n navigateToPath: (path) => {\n dispatch(navigateTo(path));\n },\n\n changeContextMenu: (type, open) => {\n dispatch(changeContextMenu(type, open));\n },\n navigateUp: () => {\n dispatch(navigateUp());\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n openRemoveDialog: () => {\n dispatch(openRemoveDialog());\n },\n changeSort: (method) => {\n dispatch(explorer.actions.changeSortMethod(method));\n },\n };\n};\n\nclass ExplorerCompoment extends Component {\n constructor() {\n super();\n this.keyMap = {\n DELETE_FILE: \"del\",\n SELECT_ALL: `${isMac() ? \"command\" : \"ctrl\"}+a`,\n };\n\n this.handlers = {\n DELETE_FILE: () => {\n if (this.props.selected.length > 0 && !this.props.share) {\n this.props.openRemoveDialog();\n }\n },\n SELECT_ALL: (e) => {\n e.preventDefault();\n if (\n this.props.selected.length >=\n this.props.dirList.length + this.props.fileList.length\n ) {\n this.props.setSelectedTarget([]);\n } else {\n this.props.setSelectedTarget([\n ...this.props.dirList,\n ...this.props.fileList,\n ]);\n }\n },\n };\n\n configure({\n ignoreTags: [\"input\", \"select\", \"textarea\"],\n });\n }\n\n contextMenu = (e) => {\n e.preventDefault();\n if (\n this.props.keywords === \"\" &&\n !pathHelper.isSharePage(this.props.location.pathname)\n ) {\n if (!this.props.loading) {\n this.props.changeContextMenu(\"empty\", true);\n }\n }\n };\n\n componentDidUpdate() {\n this.away = 0;\n }\n\n ClickAway = (e) => {\n const element = e.target;\n if (element.dataset.clickaway) {\n this.props.setSelectedTarget([]);\n }\n };\n\n render() {\n const { classes } = this.props;\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n\n const showView =\n !this.props.loading &&\n (this.props.dirList.length !== 0 ||\n this.props.fileList.length !== 0);\n const listView = (\n \n \n \n \n {\n this.props.changeSort(\n this.props.sortMethod === \"namePos\"\n ? \"nameRev\"\n : \"namePos\"\n );\n }}\n >\n 名称\n {this.props.sortMethod === \"namePos\" ||\n this.props.sortMethod === \"nameRev\" ? (\n \n {this.props.sortMethod === \"nameRev\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n {\n this.props.changeSort(\n this.props.sortMethod === \"sizePos\"\n ? \"sizeRes\"\n : \"sizePos\"\n );\n }}\n >\n 大小\n {this.props.sortMethod === \"sizePos\" ||\n this.props.sortMethod === \"sizeRes\" ? (\n \n {this.props.sortMethod === \"sizeRes\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n {\n this.props.changeSort(\n this.props.sortMethod === \"timePos\"\n ? \"timeRev\"\n : \"timePos\"\n );\n }}\n >\n 日期\n {this.props.sortMethod === \"timePos\" ||\n this.props.sortMethod === \"timeRev\" ? (\n \n {this.props.sortMethod === \"sizeRes\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n \n \n {pathHelper.isMobile() && this.props.path !== \"/\" && (\n \n )}\n {this.props.dirList.map((value, index) => (\n \n ))}\n {this.props.fileList.map((value, index) => (\n \n ))}\n \n
\n );\n\n const normalView = (\n
\n {this.props.dirList.length !== 0 && (\n <>\n \n 文件夹\n \n \n {this.props.dirList.map((value, index) => (\n \n \n \n ))}\n \n \n )}\n {this.props.fileList.length !== 0 && (\n <>\n \n 文件\n \n \n {this.props.fileList.map((value, index) => (\n \n \n \n ))}\n \n \n )}\n
\n );\n const view = this.props.viewMethod === \"list\" ? listView : normalView;\n return (\n \n \n \n \n {this.props.navigatorError && (\n \n \n :( 请求时出现错误\n \n \n {this.props.navigatorErrorMsg.message}\n \n \n )}\n\n {this.props.loading && !this.props.navigatorError && (\n
\n \n
\n )}\n\n {this.props.keywords === \"\" &&\n isHomePage &&\n this.props.dirList.length === 0 &&\n this.props.fileList.length === 0 &&\n !this.props.loading &&\n !this.props.navigatorError && (\n
\n \n
\n 拖拽文件至此\n
\n
\n 或点击右下方“上传文件”按钮添加文件\n
\n
\n )}\n {((this.props.keywords !== \"\" &&\n this.props.dirList.length === 0 &&\n this.props.fileList.length === 0 &&\n !this.props.loading &&\n !this.props.navigatorError) ||\n (this.props.dirList.length === 0 &&\n this.props.fileList.length === 0 &&\n !this.props.loading &&\n !this.props.navigatorError &&\n !isHomePage)) && (\n
\n \n
\n 什么都没有找到\n
\n
\n )}\n {showView && view}\n \n );\n }\n}\n\nExplorerCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n};\n\nconst Explorer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ExplorerCompoment)));\n\nexport default Explorer;\n","import React from \"react\";\nimport { BulletList } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"100%\",\n // padding: 40,\n // [theme.breakpoints.down(\"md\")]: {\n // width: \"100%\",\n // padding: 10\n // }\n },\n}));\n\nconst MyLoader = (props) => (\n \n);\n\nfunction ListLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n\nexport default ListLoading;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport { Clear, Folder } from \"@material-ui/icons\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { setSideBar } from \"../../../redux/explorer/action\";\nimport TypeIcon from \"../TypeIcon\";\nimport Typography from \"@material-ui/core/Typography\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Grid from \"@material-ui/core/Grid\";\nimport API from \"../../../middleware/Api\";\nimport { navigateTo, toggleSnackbar } from \"../../../actions\";\nimport { filename, sizeToString } from \"../../../utils\";\nimport Link from \"@material-ui/core/Link\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport TimeAgo from \"timeago-react\";\nimport ListLoading from \"../../Placeholder/ListLoading\";\nimport Hidden from \"@material-ui/core/Hidden\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Slide from \"@material-ui/core/Slide\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport { formatLocalTime } from \"../../../utils/datetime\";\n\nconst drawerWidth = 350;\n\nconst useStyles = makeStyles((theme) => ({\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n },\n drawerPaper: {\n width: drawerWidth,\n boxShadow:\n \"0px 8px 10px -5px rgb(0 0 0 / 20%), 0px 16px 24px 2px rgb(0 0 0 / 14%), 0px 6px 30px 5px rgb(0 0 0 / 12%)\",\n },\n drawerContainer: {\n overflow: \"auto\",\n },\n header: {\n display: \"flex\",\n padding: theme.spacing(3),\n placeContent: \"space-between\",\n },\n fileIcon: { width: 33, height: 33 },\n fileIconSVG: { fontSize: 20 },\n folderIcon: {\n color: theme.palette.text.secondary,\n width: 33,\n height: 33,\n },\n fileName: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n wordBreak: \"break-all\",\n flexGrow: 2,\n },\n closeIcon: {\n placeSelf: \"flex-start\",\n marginTop: 2,\n },\n propsContainer: {\n padding: theme.spacing(3),\n },\n propsLabel: {\n color: theme.palette.text.secondary,\n padding: theme.spacing(1),\n },\n propsTime: {\n color: theme.palette.text.disabled,\n padding: theme.spacing(1),\n },\n propsValue: {\n padding: theme.spacing(1),\n wordBreak: \"break-all\",\n },\n appBar: {\n position: \"relative\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nexport default function SideDrawer() {\n const dispatch = useDispatch();\n const sideBarOpen = useSelector((state) => state.explorer.sideBarOpen);\n const selected = useSelector((state) => state.explorer.selected);\n const SetSideBar = useCallback((open) => dispatch(setSideBar(open)), [\n dispatch,\n ]);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\n const keywords = useSelector((state) => state.explorer.keywords);\n const [target, setTarget] = useState(null);\n const [details, setDetails] = useState(null);\n const loadProps = (object) => {\n API.get(\n \"/object/property/\" +\n object.id +\n \"?trace_root=\" +\n (keywords !== \"\" ? \"true\" : \"false\") +\n \"&is_folder=\" +\n (object.type === \"dir\").toString()\n )\n .then((response) => {\n setDetails(response.data);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n useEffect(() => {\n setDetails(null);\n if (sideBarOpen) {\n if (selected.length !== 1) {\n SetSideBar(false);\n } else {\n setTarget(selected[0]);\n loadProps(selected[0]);\n }\n }\n }, [selected, sideBarOpen]);\n\n const classes = useStyles();\n const propsItem = [\n {\n label: \"大小\",\n value: (d, t) =>\n sizeToString(d.size) +\n \" (\" +\n d.size.toLocaleString() +\n \" 字节)\",\n show: (d) => true,\n },\n {\n label: \"存储策略\",\n value: (d, t) => d.policy,\n show: (d) => d.type === \"file\",\n },\n {\n label: \"包含目录\",\n value: (d, t) => d.child_folder_num.toLocaleString() + \" \" + \"个\",\n show: (d) => d.type === \"dir\",\n },\n {\n label: \"包含文件\",\n value: (d, t) => d.child_file_num.toLocaleString() + \" \" + \"个\",\n show: (d) => d.type === \"dir\",\n },\n {\n label: \"所在目录\",\n // eslint-disable-next-line react/display-name\n value: (d, t) => {\n const path = d.path === \"\" ? t.path : d.path;\n const name = filename(path);\n return (\n \n NavigateTo(path)}\n >\n {name === \"\" ? \"根目录\" : name}\n \n \n );\n },\n show: (d) => true,\n },\n {\n label: \"修改于\",\n value: (d, t) =>\n formatLocalTime(d.updated_at, \"YYYY/MM/DD H:mm:ss\"),\n show: (d) => true,\n },\n {\n label: \"创建于\",\n value: (d) => formatLocalTime(d.created_at, \"YYYY/MM/DD H:mm:ss\"),\n show: (d) => true,\n },\n ];\n const content = (\n \n {!details && }\n {details && (\n <>\n {propsItem.map((item) => {\n if (item.show(target)) {\n return (\n <>\n \n {item.label}\n \n \n {item.value(details, target)}\n \n \n );\n }\n })}\n {target.type === \"dir\" && (\n \n 统计于{\" \"}\n \n \n )}\n \n )}\n \n );\n return (\n <>\n \n \n {target && (\n <>\n \n \n SetSideBar(false)}\n aria-label=\"close\"\n >\n \n \n \n {target.name}\n \n \n \n {content}\n \n )}\n \n \n \n \n \n
\n {target && (\n <>\n
\n {target.type === \"dir\" && (\n \n )}\n {target.type !== \"dir\" && (\n \n )}\n
\n \n {target.name}\n \n
\n SetSideBar(false)}\n className={classes.closeIcon}\n aria-label=\"close\"\n size={\"small\"}\n >\n \n \n
\n \n )}\n \n {content}\n
\n \n
\n \n );\n}\n","import React, { Component } from \"react\";\n\nimport Navigator from \"./Navigator/Navigator\";\nimport { DndProvider } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\nimport DragLayer from \"./DnD/DragLayer\";\nimport Explorer from \"./Explorer\";\nimport Modals from \"./Modals\";\nimport { withStyles } from \"@material-ui/core\";\nimport { connect } from \"react-redux\";\nimport {\n closeAllModals,\n navigateTo,\n setSelectedTarget,\n toggleSnackbar,\n} from \"../../actions\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport { withRouter } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport SideDrawer from \"./Sidebar/SideDrawer\";\nimport { ImageLoader } from \"@abslant/cd-image-loader\";\n\nconst styles = () => ({});\n\nconst mapStateToProps = () => ({});\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n changeSubTitle: (text) => {\n dispatch(changeSubTitle(text));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n closeAllModals: () => {\n dispatch(closeAllModals());\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n };\n};\n\nclass FileManager extends Component {\n constructor(props) {\n super(props);\n }\n\n componentWillUnmount() {\n this.props.setSelectedTarget([]);\n this.props.closeAllModals();\n this.props.navigateTo(\"/\");\n }\n\n componentDidMount() {\n if (pathHelper.isHomePage(this.props.location.pathname)) {\n this.props.changeSubTitle(null);\n }\n }\n\n render() {\n return (\n
\n \n \n \n \n \n \n \n \n
\n );\n }\n}\n\nFileManager.propTypes = {};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(FileManager)));\n","import React, { useCallback, useEffect } from \"react\";\nimport DPlayer from \"react-dplayer\";\nimport { Paper } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport { getBaseURL } from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport pathHelper from \"../../utils/page\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 50,\n },\n player: {\n borderRadius: \"4px\",\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function VideoViewer() {\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n const dispatch = useDispatch();\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n useEffect(() => {\n if (!pathHelper.isSharePage(location.pathname)) {\n const path = query.get(\"p\").split(\"/\");\n SetSubTitle(path[path.length - 1]);\n } else {\n SetSubTitle(query.get(\"name\"));\n }\n // eslint-disable-next-line\n }, [math.params[0], location]);\n\n const classes = useStyles();\n return (\n
\n \n \n \n
\n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\n\nimport {\n Tooltip,\n Card,\n Avatar,\n CardHeader,\n Typography,\n Grid,\n IconButton,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport { useHistory } from \"react-router-dom\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation } from \"react-router\";\nimport TimeAgo from \"timeago-react\";\n\nconst useStyles = makeStyles((theme) => ({\n cardContainer: {\n padding: theme.spacing(1),\n },\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n loadMore: {\n textAlign: \"right\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n badge: {\n marginLeft: theme.spacing(1),\n height: 17,\n },\n orderSelect: {\n textAlign: \"right\",\n marginTop: 5,\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function SearchResult() {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const query = useQuery();\n const location = useLocation();\n const history = useHistory();\n\n const [page, setPage] = useState(1);\n const [total, setTotal] = useState(0);\n const [shareList, setShareList] = useState([]);\n const [orderBy, setOrderBy] = useState(\"created_at DESC\");\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const search = (keywords, page, orderBy) => {\n const order = orderBy.split(\" \");\n API.get(\n \"/share/search?page=\" +\n page +\n \"&order_by=\" +\n order[0] +\n \"&order=\" +\n order[1] +\n \"&keywords=\" +\n encodeURIComponent(keywords)\n )\n .then((response) => {\n if (response.data.items.length === 0) {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"找不到符合条件的分享\",\n \"info\"\n );\n }\n setTotal(response.data.total);\n setShareList(response.data.items);\n })\n .catch(() => {\n ToggleSnackbar(\"top\", \"right\", \"加载失败\", \"error\");\n });\n };\n\n useEffect(() => {\n const keywords = query.get(\"keywords\");\n if (keywords) {\n search(keywords, page, orderBy);\n } else {\n ToggleSnackbar(\"top\", \"right\", \"请输入搜索关键词\", \"warning\");\n }\n }, [location]);\n\n const handlePageChange = (event, value) => {\n setPage(value);\n const keywords = query.get(\"keywords\");\n search(keywords, value, orderBy);\n };\n\n const handleOrderChange = (event) => {\n setOrderBy(event.target.value);\n const keywords = query.get(\"keywords\");\n search(keywords, page, event.target.value);\n };\n\n return (\n
\n \n \n \n 搜索结果\n \n \n \n \n \n \n 创建日期由晚到早\n \n \n 创建日期由早到晚\n \n \n 下载次数由大到小\n \n \n 下载次数由小到大\n \n \n 浏览次数由大到小\n \n \n 浏览次数由小到大\n \n \n \n \n \n \n {shareList.map((value) => (\n \n \n \n {!value.is_dir && (\n \n )}{\" \"}\n {value.is_dir && (\n \n \n \n )}\n
\n }\n action={\n \n \n history.push(\"/s/\" + value.key)\n }\n >\n \n \n \n }\n title={\n \n \n {value.source\n ? value.source.name\n : \"[原始对象不存在]\"}{\" \"}\n \n \n }\n subheader={\n \n 分享于{\" \"}\n \n \n }\n />\n \n \n ))}\n \n
\n \n
{\" \"}\n \n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport UnlockIcon from \"@material-ui/icons/LockOpen\";\nimport EyeIcon from \"@material-ui/icons/RemoveRedEye\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\n\nimport {\n withStyles,\n Tooltip,\n Card,\n Avatar,\n CardHeader,\n CardActions,\n Typography,\n Grid,\n IconButton,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Button,\n TextField,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport Chip from \"@material-ui/core/Chip\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { VisibilityOff, VpnKey } from \"@material-ui/icons\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport { withRouter } from \"react-router-dom\";\nimport ToggleIcon from \"material-ui-toggle-icon\";\nimport { formatLocalTime } from \"../../utils/datetime\";\n\nconst styles = (theme) => ({\n cardContainer: {\n padding: theme.spacing(1),\n },\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n loadMore: {\n textAlign: \"right\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n badge: {\n marginLeft: theme.spacing(1),\n height: 17,\n },\n orderSelect: {\n textAlign: \"right\",\n marginTop: 5,\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass MyShareCompoment extends Component {\n state = {\n page: 1,\n total: 0,\n shareList: [],\n showPwd: null,\n orderBy: \"created_at DESC\",\n };\n\n componentDidMount = () => {\n this.loadList(1, this.state.orderBy);\n };\n\n showPwd = (pwd) => {\n this.setState({ showPwd: pwd });\n };\n\n handleClose = () => {\n this.setState({ showPwd: null });\n };\n\n removeShare = (id) => {\n API.delete(\"/share/\" + id)\n .then(() => {\n let oldList = this.state.shareList;\n oldList = oldList.filter((value) => {\n return value.key !== id;\n });\n this.setState({\n shareList: oldList,\n total: this.state.total - 1,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"分享已取消\",\n \"success\"\n );\n if (oldList.length === 0) {\n this.loadList(1, this.state.orderBy);\n }\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n changePermission = (id) => {\n const newPwd = Math.random().toString(36).substr(2).slice(2, 8);\n const oldList = this.state.shareList;\n const shareIndex = oldList.findIndex((value) => {\n return value.key === id;\n });\n API.patch(\"/share/\" + id, {\n prop: \"password\",\n value: oldList[shareIndex].password === \"\" ? newPwd : \"\",\n })\n .then((response) => {\n oldList[shareIndex].password = response.data;\n this.setState({\n shareList: oldList,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n changePreviewOption = (id) => {\n const oldList = this.state.shareList;\n const shareIndex = oldList.findIndex((value) => {\n return value.key === id;\n });\n API.patch(\"/share/\" + id, {\n prop: \"preview_enabled\",\n value: oldList[shareIndex].preview ? \"false\" : \"true\",\n })\n .then((response) => {\n oldList[shareIndex].preview = response.data;\n this.setState({\n shareList: oldList,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n loadList = (page, orderBy) => {\n const order = orderBy.split(\" \");\n API.get(\n \"/share?page=\" +\n page +\n \"&order_by=\" +\n order[0] +\n \"&order=\" +\n order[1]\n )\n .then((response) => {\n if (response.data.items.length === 0) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"没有更多了\",\n \"info\"\n );\n }\n this.setState({\n total: response.data.total,\n shareList: response.data.items,\n });\n })\n .catch(() => {\n this.props.toggleSnackbar(\"top\", \"right\", \"加载失败\", \"error\");\n });\n };\n\n handlePageChange = (event, value) => {\n this.setState({\n page: value,\n });\n this.loadList(value, this.state.orderBy);\n };\n\n handleOrderChange = (event) => {\n this.setState({\n orderBy: event.target.value,\n });\n this.loadList(this.state.page, event.target.value);\n };\n\n isExpired = (share) => {\n return share.expire < -1 || share.remain_downloads === 0;\n };\n\n render() {\n const { classes } = this.props;\n\n return (\n
\n \n \n \n 我的分享\n \n \n \n \n \n \n 创建日期由晚到早\n \n \n 创建日期由早到晚\n \n \n 下载次数由大到小\n \n \n 下载次数由小到大\n \n \n 浏览次数由大到小\n \n \n 浏览次数由小到大\n \n \n \n \n \n \n {this.state.shareList.map((value) => (\n \n \n \n {!value.is_dir && (\n \n )}{\" \"}\n {value.is_dir && (\n \n \n \n )}\n
\n }\n title={\n \n \n {value.source\n ? value.source.name\n : \"[原始对象不存在]\"}{\" \"}\n \n \n }\n subheader={\n \n {formatLocalTime(\n value.create_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n {this.isExpired(value) && (\n \n )}\n \n }\n />\n \n \n\n {value.score > 0 && (\n \n 下载积分:{value.score}\n \n \n )}\n {value.score <= 0 && (\n \n 免费\n \n )}\n \n \n this.props.history.push(\n \"/s/\" +\n value.key +\n (value.password === \"\"\n ? \"\"\n : \"?password=\" +\n value.password)\n )\n }\n >\n \n \n {\" \"}\n {value.password !== \"\" && (\n <>\n \n this.changePermission(\n value.key\n )\n }\n >\n \n \n \n \n \n this.showPwd(value.password)\n }\n >\n \n \n \n \n \n )}\n {value.password === \"\" && (\n \n this.changePermission(value.key)\n }\n >\n \n \n \n \n )}\n \n this.changePreviewOption(value.key)\n }\n >\n \n \n }\n offIcon={\n \n }\n />\n \n \n \n this.removeShare(value.key)\n }\n >\n \n \n \n \n \n \n \n ))}\n \n
\n \n
{\" \"}\n \n 分享密码 {\" \"}\n \n \n {\" \"}\n \n {\" \"}\n {\" \"}\n {\" \"}\n \n );\n }\n}\n\nconst MyShare = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(MyShareCompoment)));\n\nexport default MyShare;\n","import React, { useState, useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n CircularProgress,\n} from \"@material-ui/core\";\nimport FormGroup from \"@material-ui/core/FormGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n content: {\n padding: 0,\n },\n}));\n\nexport default function SelectFileDialog(props) {\n const [files, setFiles] = useState(props.files);\n\n useEffect(() => {\n setFiles(props.files);\n }, [props.files]);\n\n const handleChange = (index) => (event) => {\n const filesCopy = [...files];\n // eslint-disable-next-line\n filesCopy.map((v, k) => {\n if (v.index === index) {\n filesCopy[k] = {\n ...filesCopy[k],\n selected: event.target.checked ? \"true\" : \"false\",\n };\n }\n });\n setFiles(filesCopy);\n };\n\n const submit = () => {\n const index = [];\n // eslint-disable-next-line\n files.map((v) => {\n if (v.selected === \"true\") {\n index.push(parseInt(v.index));\n }\n });\n props.onSubmit(index);\n };\n\n const classes = useStyles();\n\n return (\n \n 选择要下载的文件\n \n {files.map((v, k) => {\n return (\n \n \n \n }\n label={v.path}\n />\n \n \n );\n })}\n \n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useEffect } from \"react\";\nimport {\n Card,\n CardContent,\n darken,\n IconButton,\n lighten,\n LinearProgress,\n makeStyles,\n Typography,\n useTheme,\n} from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport { hex2bin, sizeToString } from \"../../utils\";\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { ExpandMore, HighlightOff } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport Table from \"@material-ui/core/Table\";\nimport Badge from \"@material-ui/core/Badge\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport API from \"../../middleware/Api\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport TimeAgo from \"timeago-react\";\nimport SelectFileDialog from \"../Modals/SelectFile\";\nimport { useHistory } from \"react-router\";\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {},\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n\n \"&$expanded\": {\n minHeight: 56,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"flex\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n marginTop: \"20px\",\n justifyContent: \"space-between\",\n },\n iconContainer: {\n width: \"90px\",\n height: \"96px\",\n padding: \" 35px 29px 29px 29px\",\n paddingLeft: \"35px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n content: {\n width: \"100%\",\n minWidth: 0,\n [theme.breakpoints.up(\"sm\")]: {\n borderInlineStart: \"1px \" + theme.palette.divider + \" solid\",\n },\n },\n contentSide: {\n minWidth: 0,\n paddingTop: \"24px\",\n paddingRight: \"28px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n iconBig: {\n fontSize: \"30px\",\n },\n iconMultiple: {\n fontSize: \"30px\",\n color: \"#607D8B\",\n },\n progress: {\n marginTop: 8,\n marginBottom: 4,\n },\n expand: {\n transition: \".15s transform ease-in-out\",\n },\n expanded: {\n transform: \"rotate(180deg)\",\n },\n subFileName: {\n display: \"flex\",\n },\n subFileIcon: {\n marginRight: \"20px\",\n },\n scroll: {\n overflowY: \"auto\",\n },\n action: {\n padding: theme.spacing(2),\n textAlign: \"right\",\n },\n actionButton: {\n marginLeft: theme.spacing(1),\n },\n info: {\n padding: theme.spacing(2),\n },\n infoTitle: {\n fontWeight: 700,\n },\n infoValue: {\n color: theme.palette.text.secondary,\n },\n bitmap: {\n width: \"100%\",\n height: \"50px\",\n backgroundColor: theme.palette.background.default,\n },\n}));\n\nexport default function DownloadingCard(props) {\n const canvasRef = React.createRef();\n const classes = useStyles();\n const theme = useTheme();\n const history = useHistory();\n\n const [expanded, setExpanded] = React.useState(\"\");\n const [task, setTask] = React.useState(props.task);\n const [loading, setLoading] = React.useState(false);\n const [selectDialogOpen, setSelectDialogOpen] = React.useState(false);\n const [selectFileOption, setSelectFileOption] = React.useState([]);\n\n const handleChange = (panel) => (event, newExpanded) => {\n setExpanded(newExpanded ? panel : false);\n };\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n setTask(props.task);\n }, [props.task]);\n\n useEffect(() => {\n if (task.info.bitfield === \"\") {\n return;\n }\n let result = \"\";\n task.info.bitfield.match(/.{1,2}/g).forEach((str) => {\n result += hex2bin(str);\n });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n context.clearRect(0, 0, canvas.width, canvas.height);\n context.strokeStyle = theme.palette.primary.main;\n for (let i = 0; i < canvas.width; i++) {\n let bit =\n result[\n Math.round(((i + 1) / canvas.width) * task.info.numPieces)\n ];\n bit = bit ? bit : result.slice(-1);\n if (bit === \"1\") {\n context.beginPath();\n context.moveTo(i, 0);\n context.lineTo(i, canvas.height);\n context.stroke();\n }\n }\n // eslint-disable-next-line\n }, [task.info.bitfield, task.info.numPieces, theme]);\n\n const getPercent = (completed, total) => {\n if (total === 0) {\n return 0;\n }\n return (completed / total) * 100;\n };\n\n const activeFiles = useCallback(() => {\n return task.info.files.filter((v) => v.selected === \"true\");\n }, [task.info.files]);\n\n const deleteFile = (index) => {\n setLoading(true);\n const current = activeFiles();\n const newIndex = [];\n const newFiles = [];\n // eslint-disable-next-line\n current.map((v) => {\n if (v.index !== index && v.selected) {\n newIndex.push(parseInt(v.index));\n newFiles.push({\n ...v,\n selected: \"true\",\n });\n } else {\n newFiles.push({\n ...v,\n selected: \"false\",\n });\n }\n });\n API.put(\"/aria2/select/\" + task.info.gid, {\n indexes: newIndex,\n })\n .then(() => {\n setTask({\n ...task,\n info: {\n ...task.info,\n files: newFiles,\n },\n });\n ToggleSnackbar(\"top\", \"right\", \"文件已删除\", \"success\");\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const getDownloadName = useCallback(() => {\n if (task.info.bittorrent.info.name !== \"\") {\n return task.info.bittorrent.info.name;\n }\n return task.name === \".\" ? \"[未知]\" : task.name;\n }, [task]);\n\n const getIcon = useCallback(() => {\n if (task.info.bittorrent.mode === \"multi\") {\n return (\n \n \n \n );\n } else {\n return (\n \n );\n }\n // eslint-disable-next-line\n }, [task, classes]);\n\n const cancel = () => {\n setLoading(true);\n API.delete(\"/aria2/task/\" + task.info.gid)\n .then(() => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"任务已取消,状态会在稍后更新\",\n \"success\"\n );\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const changeSelectedFile = (fileIndex) => {\n setLoading(true);\n API.put(\"/aria2/select/\" + task.info.gid, {\n indexes: fileIndex,\n })\n .then(() => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"操作成功,状态会在稍后更新\",\n \"success\"\n );\n setSelectDialogOpen(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n return (\n \n setSelectDialogOpen(false)}\n modalsLoading={loading}\n files={selectFileOption}\n onSubmit={changeSelectedFile}\n />\n \n \n
{getIcon()}
\n \n \n \n {getDownloadName()}\n \n \n \n \n {task.total > 0 && (\n \n {getPercent(\n task.downloaded,\n task.total\n ).toFixed(2)}\n % -{\" \"}\n {task.downloaded === 0\n ? \"0Bytes\"\n : sizeToString(task.downloaded)}\n /\n {task.total === 0\n ? \"0Bytes\"\n : sizeToString(task.total)}{\" \"}\n -{\" \"}\n {task.speed === \"0\"\n ? \"0B/s\"\n : sizeToString(task.speed) + \"/s\"}\n \n )}\n {task.total === 0 && - }\n \n \n \n \n \n \n \n \n \n \n {task.info.bittorrent.mode === \"multi\" && (\n
\n \n \n {activeFiles().map((value) => {\n return (\n \n \n \n \n {value.path}\n \n \n \n \n {\" \"}\n {sizeToString(\n value.length\n )}\n \n \n \n \n {getPercent(\n value.completedLength,\n value.length\n ).toFixed(2)}\n %\n \n \n \n \n \n deleteFile(\n value.index\n )\n }\n disabled={loading}\n size={\"small\"}\n >\n \n \n \n \n \n );\n })}\n \n
\n
\n )}\n\n
\n \n history.push(\n \"/#/home?path=\" +\n encodeURIComponent(task.dst)\n )\n }\n >\n 打开存放目录\n \n {task.info.bittorrent.mode === \"multi\" && (\n {\n setSelectDialogOpen(true);\n setSelectFileOption([\n ...props.task.info.files,\n ]);\n }}\n >\n 选择要下载的文件\n \n )}\n \n 取消任务\n \n
\n \n
\n {task.info.bitfield !== \"\" && (\n \n )}\n\n \n \n \n 更新于:\n \n \n \n \n \n \n \n 上传大小:\n \n \n {sizeToString(task.info.uploadLength)}\n \n \n \n \n 上传速度:\n \n \n {sizeToString(task.info.uploadSpeed)} / s\n \n \n {task.info.bittorrent.mode !== \"\" && (\n <>\n \n \n InfoHash:\n \n \n {task.info.infoHash}\n \n \n \n \n 做种者:\n \n \n {task.info.numSeeders}\n \n \n \n \n 做种中:\n \n \n {task.info.seeder === \"true\"\n ? \"是\"\n : \"否\"}\n \n \n \n )}\n \n \n 分片大小:\n \n \n {sizeToString(task.info.pieceLength)}\n \n \n \n \n 分片数量:\n \n \n {task.info.numPieces}\n \n \n \n
\n
\n \n
\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Card,\n CardContent,\n IconButton,\n makeStyles,\n Typography,\n useTheme,\n} from \"@material-ui/core\";\nimport { sizeToString } from \"../../utils\";\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { ExpandMore } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport Table from \"@material-ui/core/Table\";\nimport Badge from \"@material-ui/core/Badge\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport { useHistory } from \"react-router\";\nimport { formatLocalTime } from \"../../utils/datetime\";\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {},\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n\n \"&$expanded\": {\n minHeight: 56,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"flex\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n marginTop: \"20px\",\n justifyContent: \"space-between\",\n },\n iconContainer: {\n width: \"90px\",\n height: \"96px\",\n padding: \" 35px 29px 29px 29px\",\n paddingLeft: \"35px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n content: {\n width: \"100%\",\n minWidth: 0,\n [theme.breakpoints.up(\"sm\")]: {\n borderInlineStart: \"1px \" + theme.palette.divider + \" solid\",\n },\n textAlign: \"left\",\n },\n contentSide: {\n minWidth: 0,\n paddingTop: \"24px\",\n paddingRight: \"28px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n iconBig: {\n fontSize: \"30px\",\n },\n iconMultiple: {\n fontSize: \"30px\",\n color: \"#607D8B\",\n },\n progress: {\n marginTop: 8,\n marginBottom: 4,\n },\n expand: {\n transition: \".15s transform ease-in-out\",\n },\n expanded: {\n transform: \"rotate(180deg)\",\n },\n subFileName: {\n display: \"flex\",\n },\n subFileIcon: {\n marginRight: \"20px\",\n },\n scroll: {\n overflowY: \"auto\",\n },\n action: {\n padding: theme.spacing(2),\n textAlign: \"right\",\n },\n actionButton: {\n marginLeft: theme.spacing(1),\n },\n info: {\n padding: theme.spacing(2),\n },\n infoTitle: {\n fontWeight: 700,\n },\n infoValue: {\n color: theme.palette.text.secondary,\n },\n}));\n\nexport default function FinishedCard(props) {\n const classes = useStyles();\n const theme = useTheme();\n const history = useHistory();\n\n const [expanded, setExpanded] = React.useState(false);\n const [loading, setLoading] = React.useState(false);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const handleChange = () => (event, newExpanded) => {\n setExpanded(!!newExpanded);\n };\n\n const cancel = () => {\n setLoading(true);\n API.delete(\"/aria2/task/\" + props.task.gid)\n .then(() => {\n ToggleSnackbar(\"top\", \"right\", \"删除成功\", \"success\");\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n window.location.reload();\n });\n };\n\n const getPercent = (completed, total) => {\n if (total == 0) {\n return 0;\n }\n return (completed / total) * 100;\n };\n\n const getDownloadName = useCallback(() => {\n return props.task.name === \".\" ? \"[未知]\" : props.task.name;\n }, [props.task.name]);\n\n const activeFiles = useCallback(() => {\n return props.task.files.filter((v) => v.selected === \"true\");\n }, [props.task.files]);\n\n const getIcon = useCallback(() => {\n if (props.task.files.length > 1) {\n return (\n \n \n \n );\n } else {\n return (\n \n );\n }\n }, [props.task, classes]);\n\n const getTaskError = (error) => {\n try {\n const res = JSON.parse(error);\n return res.msg + \":\" + res.error;\n } catch (e) {\n return \"文件转存失败\";\n }\n };\n\n return (\n \n \n \n
{getIcon()}
\n \n \n \n {getDownloadName()}\n \n \n {props.task.status === 3 && (\n \n \n 下载出错:{props.task.error}\n \n \n )}\n {props.task.status === 5 && (\n \n 已取消\n {props.task.error !== \"\" && (\n :{props.task.error}\n )}\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 4 && (\n \n 已完成\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 0 && (\n \n 已完成,转存排队中\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 1 && (\n \n 已完成,转存处理中\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 2 && (\n \n {getTaskError(props.task.task_error)}\n \n )}\n \n \n \n \n \n \n \n \n \n {props.task.files.length > 1 && (\n
\n \n \n {activeFiles().map((value) => {\n return (\n \n \n \n \n {value.path}\n \n \n \n \n {\" \"}\n {sizeToString(\n value.length\n )}\n \n \n \n \n {getPercent(\n value.completedLength,\n value.length\n ).toFixed(2)}\n %\n \n \n \n );\n })}\n \n
\n
\n )}\n\n
\n \n history.push(\n \"/home?path=\" +\n encodeURIComponent(props.task.dst)\n )\n }\n >\n 打开存放目录\n \n \n 删除记录\n \n
\n \n
\n \n \n \n 创建日期:\n \n \n {formatLocalTime(\n props.task.create,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n \n \n 最后更新:\n \n \n {formatLocalTime(\n props.task.update,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n \n
\n
\n \n
\n );\n}\n","import React, { useCallback } from \"react\";\nimport { openRemoteDownloadDialog } from \"../../actions\";\nimport { useDispatch } from \"react-redux\";\nimport AutoHidden from \"./AutoHidden\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Fab from \"@material-ui/core/Fab\";\nimport { Add } from \"@material-ui/icons\";\nimport Modals from \"../FileManager/Modals\";\n\nconst useStyles = makeStyles(() => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n}));\n\nexport default function RemoteDownloadButton() {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const OpenRemoteDownloadDialog = useCallback(\n () => dispatch(openRemoteDownloadDialog()),\n [dispatch]\n );\n\n return (\n <>\n \n \n OpenRemoteDownloadDialog()}\n >\n \n \n \n \n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport { toggleSnackbar } from \"../../actions\";\nimport API from \"../../middleware/Api\";\nimport { withStyles, Typography, Button, IconButton } from \"@material-ui/core\";\nimport DownloadingCard from \"./DownloadingCard\";\nimport FinishedCard from \"./FinishedCard\";\nimport RemoteDownloadButton from \"../Dial/Aria2\";\nimport Auth from \"../../middleware/Auth\";\n\nconst styles = (theme) => ({\n actions: {\n display: \"flex\",\n },\n title: {\n marginTop: \"20px\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 700,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n hide: {\n display: \"none\",\n },\n loadingAnimation: {\n borderRadius: \"6px 6px 0 0\",\n },\n shareFix: {\n marginLeft: \"20px\",\n },\n loadMore: {\n textAlign: \"center\",\n marginTop: \"20px\",\n marginBottom: \"20px\",\n },\n margin: {\n marginTop: theme.spacing(2),\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass DownloadComponent extends Component {\n page = 0;\n interval = 0;\n previousDownloading = -1;\n\n state = {\n downloading: [],\n loading: false,\n finishedList: [],\n continue: true,\n };\n\n componentDidMount = () => {\n this.loadDownloading();\n };\n\n componentWillUnmount() {\n clearTimeout(this.interval);\n }\n\n loadDownloading = () => {\n this.setState({\n loading: true,\n });\n API.get(\"/aria2/downloading\")\n .then((response) => {\n this.setState({\n downloading: response.data,\n loading: false,\n });\n // 设定自动更新\n clearTimeout(this.interval);\n if (response.data.length > 0) {\n this.interval = setTimeout(\n this.loadDownloading,\n 1000 *\n response.data.reduce(function (prev, current) {\n return prev.interval < current.interval\n ? prev\n : current;\n }).interval\n );\n }\n\n // 下载中条目变更时刷新已完成列表\n if (response.data.length !== this.previousDownloading) {\n this.page = 0;\n this.setState({\n finishedList: [],\n continue: true,\n });\n this.loadMore();\n }\n this.previousDownloading = response.data.length;\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n loadMore = () => {\n this.setState({\n loading: true,\n });\n API.get(\"/aria2/finished?page=\" + ++this.page)\n .then((response) => {\n this.setState({\n finishedList: [\n ...this.state.finishedList,\n ...response.data,\n ],\n loading: false,\n continue: response.data.length >= 10,\n });\n })\n .catch(() => {\n this.props.toggleSnackbar(\"top\", \"right\", \"加载失败\", \"error\");\n this.setState({\n loading: false,\n });\n });\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n\n return (\n
\n {user.group.allowRemoteDownload && }\n \n 进行中\n \n \n \n \n {this.state.downloading.map((value, k) => (\n \n ))}\n \n 已完成\n \n
\n {this.state.finishedList.map((value, k) => {\n if (value.files) {\n return ;\n }\n return null;\n })}\n \n 加载更多\n \n
\n
\n );\n }\n}\n\nconst Download = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(DownloadComponent));\n\nexport default Download;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\n\nimport {\n withStyles,\n Button,\n Card,\n Divider,\n CardHeader,\n CardContent,\n CardActions,\n TextField,\n Avatar,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router\";\nimport { formatLocalTime } from \"../../utils/datetime\";\n\nconst styles = (theme) => ({\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n continue: {\n marginLeft: \"auto\",\n marginRight: \"10px\",\n marginRottom: \"10px\",\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass LockedFileCompoment extends Component {\n constructor(props) {\n super(props);\n const query = new URLSearchParams(this.props.location.search);\n this.state = {\n pwd: query.get(\"password\"),\n };\n }\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n submit = (e) => {\n e.preventDefault();\n if (this.state.pwd === \"\") {\n return;\n }\n this.props.setPassowrd(this.state.pwd);\n };\n\n render() {\n const { classes } = this.props;\n\n return (\n
\n \n \n }\n title={this.props.share.creator.nick + \" 的加密分享\"}\n subheader={formatLocalTime(\n this.props.share.create_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n />\n \n \n
\n \n \n
\n \n \n 继续\n \n \n
\n
\n );\n }\n}\n\nconst LockedFile = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(LockedFileCompoment)));\n\nexport default LockedFile;\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Avatar, Typography } from \"@material-ui/core\";\nimport { useHistory } from \"react-router\";\nimport Link from \"@material-ui/core/Link\";\nimport { formatLocalTime } from \"../../utils/datetime\";\n\nconst useStyles = makeStyles((theme) => ({\n boxHeader: {\n textAlign: \"center\",\n padding: 24,\n },\n avatar: {\n backgroundColor: theme.palette.secondary.main,\n margin: \"0 auto\",\n width: 50,\n height: 50,\n cursor: \"pointer\",\n },\n shareDes: {\n marginTop: 12,\n },\n shareInfo: {\n color: theme.palette.text.disabled,\n fontSize: 14,\n },\n}));\n\nexport default function Creator(props) {\n const classes = useStyles();\n const history = useHistory();\n\n const getSecondDes = () => {\n if (props.share.expire > 0) {\n if (props.share.expire >= 24 * 3600) {\n return (\n Math.round(props.share.expire / (24 * 3600)) + \" 天后到期\"\n );\n }\n return Math.round(props.share.expire / 3600) + \" 小时后到期\";\n }\n return formatLocalTime(props.share.create_date, \"YYYY-MM-DD H:mm:ss\");\n };\n\n const userProfile = () => {\n history.push(\"/profile/\" + props.share.creator.key);\n props.onClose && props.onClose();\n };\n\n return (\n
\n userProfile()}\n />\n \n {props.isFolder && (\n <>\n 此分享由{\" \"}\n userProfile()}\n href={\"javascript:void(0)\"}\n color=\"inherit\"\n >\n {props.share.creator.nick}\n {\" \"}\n 创建\n \n )}\n {!props.isFolder && (\n <>\n {\" \"}\n userProfile()}\n href={\"javascript:void(0)\"}\n color=\"inherit\"\n >\n {props.share.creator.nick}\n {\" \"}\n 向您分享了 1 个文件\n \n )}\n \n \n {props.share.views} 次浏览 • {props.share.downloads} 次下载 •{\" \"}\n {getSecondDes()}\n \n
\n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { sizeToString, vhCheck } from \"../../utils\";\nimport {\n openMusicDialog,\n openResaveDialog,\n setSelectedTarget,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../actions\";\nimport { isPreviewable } from \"../../config\";\nimport { withStyles, Button, Typography } from \"@material-ui/core\";\nimport Divider from \"@material-ui/core/Divider\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport ReportIcon from \"@material-ui/icons/Report\";\nimport Auth from \"../../middleware/Auth\";\nimport PurchaseShareDialog from \"../Modals/PurchaseShare\";\nimport API from \"../../middleware/Api\";\nimport { withRouter } from \"react-router-dom\";\nimport Creator from \"./Creator\";\nimport pathHelper from \"../../utils/page\";\nimport Report from \"../Modals/Report\";\nimport Link from \"@material-ui/core/Link\";\n\nvhCheck();\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"90px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginTop: \"90px\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: 0,\n marginLeft: 0,\n marginRight: 0,\n },\n justifyContent: \"center\",\n display: \"flex\",\n },\n player: {\n borderRadius: \"4px\",\n },\n fileCotainer: {\n width: \"200px\",\n margin: \"0 auto\",\n },\n buttonCotainer: {\n width: \"400px\",\n margin: \"0 auto\",\n textAlign: \"center\",\n marginTop: \"20px\",\n },\n paper: {\n padding: theme.spacing(2),\n },\n icon: {\n borderRadius: \"10%\",\n marginTop: 2,\n },\n\n box: {\n width: \"100%\",\n maxWidth: 440,\n backgroundColor: theme.palette.background.paper,\n borderRadius: 12,\n boxShadow: \"0 8px 16px rgba(29,39,55,.25)\",\n [theme.breakpoints.down(\"sm\")]: {\n height: \"calc(var(--vh, 100vh) - 56px)\",\n borderRadius: 0,\n maxWidth: 1000,\n },\n display: \"flex\",\n flexDirection: \"column\",\n },\n boxContent: {\n padding: 24,\n display: \"flex\",\n flex: \"1\",\n },\n fileName: {\n marginLeft: 20,\n },\n fileSize: {\n color: theme.palette.text.disabled,\n fontSize: 14,\n },\n boxFooter: {\n display: \"flex\",\n padding: \"20px 16px\",\n justifyContent: \"space-between\",\n },\n downloadButton: {\n marginLeft: 8,\n },\n shareInfo: {\n color: theme.palette.text.disabled,\n fontSize: 13,\n margin:\"6px\",\n marginRight:\"5px\",\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openResave: (key) => {\n dispatch(openResaveDialog(key));\n },\n };\n};\n\nconst Modals = React.lazy(() => import(\"../FileManager/Modals\"));\nconst ImgPreview = React.lazy(() => import(\"../FileManager/ImgPreview\"));\n\nclass SharedFileCompoment extends Component {\n state = {\n anchorEl: null,\n open: false,\n purchaseCallback: null,\n loading: false,\n openReport: false,\n store:0,\n share_score:0,\n };\n\n downloaded = false;\n\n // TODO merge into react thunk\n preview = () => {\n if (pathHelper.isSharePage(this.props.location.pathname)) {\n const user = Auth.GetUser();\n if (!Auth.Check() && user && !user.group.shareDownload) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"请先登录\",\n \"warning\"\n );\n return;\n }\n }\n\n switch (isPreviewable(this.props.share.source.name)) {\n case \"img\":\n this.props.showImgPreivew({\n key: this.props.share.key,\n name: this.props.share.source.name,\n });\n return;\n case \"msDoc\":\n this.props.history.push(\n this.props.share.key +\n \"/doc?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"audio\":\n this.props.setSelectedTarget([\n {\n key: this.props.share.key,\n type: \"share\",\n },\n ]);\n this.props.openMusicDialog();\n return;\n case \"video\":\n this.props.history.push(\n this.props.share.key +\n \"/video?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"edit\":\n this.props.history.push(\n this.props.share.key +\n \"/text?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"pdf\":\n this.props.history.push(\n this.props.share.key +\n \"/pdf?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"code\":\n this.props.history.push(\n this.props.share.key +\n \"/code?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n default:\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"此文件无法预览\",\n \"warning\"\n );\n return;\n }\n };\n\n componentWillUnmount() {\n this.props.setSelectedTarget([]);\n }\n componentDidMount = () => {\n if(Auth.Check()){\n this.updateStatus();\n }\n };\n updateStatus = () => {\n API.get(\"/user/storage\")\n .then((response) => {\n this.setState({\n score:response.data.score,\n share_score:response.data.share_score,\n });\n })\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n .catch(() => {});\n };\n scoreHandle = (callback) => (event) => {\n if (this.props.share.score > 0) {\n if (!Auth.Check()) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"登录后才能继续操作\",\n \"warning\"\n );\n return;\n }\n if (!Auth.GetUser().group.shareFree && !this.downloaded) {\n this.setState({\n purchaseCallback: () => {\n this.setState({\n purchaseCallback: null,\n });\n callback(event);\n },\n });\n return;\n }\n }\n callback(event);\n };\n\n download = () => {\n this.setState({ loading: true });\n API.put(\"/share/download/\" + this.props.share.key)\n .then((response) => {\n this.downloaded = true;\n window.location.assign(response.data);\n\n // const link = document.createElement('a')\n // fetch(response.data).then(res => res.blob()).then(blob => { // 将链接地址字符内容转变成blob地址\n // link.href = URL.createObjectURL(blob)\n // // console.log(link.href)\n // link.download = ''\n // document.body.appendChild(link)\n // link.click()\n // document.body.removeChild(link)\n // })\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"warning\"\n );\n })\n .then(() => {\n this.setState({ loading: false });\n });\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n const isLogin = Auth.Check();\n\n return (\n
\n \n \n this.setState({ purchaseCallback: null })}\n />\n this.setState({ openReport: false })}\n />\n
\n \n \n
\n \n
\n \n {this.props.share.source.name}\n \n \n {sizeToString(this.props.share.source.size)}\n \n
\n \n
\n \n {isLogin && (\n
\n
\n 您当前可用积分{\" \"}{(this.state.score + this.state.share_score).toFixed(2)}{\" \"} \n 积分充值\n \n
\n \n
\n )}\n {isLogin &&(\n \n )}\n \n
\n
\n \n this.props.openResave(this.props.share.key)\n }\n color=\"secondary\"\n >\n 保存到我的文件\n \n \n this.setState({ openReport: true })\n }\n title=\"举报\"\n color=\"secondary\"\n >\n \n \n
\n
\n {/* {this.props.share.preview && (\n \n 预览\n \n )} */}\n \n 下载\n {this.props.share.score > 0 &&\n (!isLogin || !user.group.shareFree) &&\n \" (\" + this.props.share.score + \"积分)\"}\n {this.props.share.score > 0 &&\n isLogin &&\n user.group.shareFree &&\n \" (免积分)\"}\n \n
\n
\n
\n
\n );\n }\n}\n\nconst SharedFile = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(SharedFileCompoment)));\n\nexport default SharedFile;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n openMusicDialog,\n openResaveDialog,\n setSelectedTarget,\n setShareUserPopover,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../actions\";\nimport { withStyles, Typography } from \"@material-ui/core\";\nimport { withRouter } from \"react-router-dom\";\nimport FileManager from \"../FileManager/FileManager\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popover from \"@material-ui/core/Popover\";\nimport Creator from \"./Creator\";\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport pathHelper from \"../../utils/page\";\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: 30,\n marginBottom: 30,\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: theme.spacing(2),\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n },\n managerContainer: {\n overflowY: \"auto\",\n },\n});\n\nconst ReadMe = React.lazy(() => import(\"./ReadMe\"));\n\nconst mapStateToProps = (state) => {\n return {\n anchorEl: state.viewUpdate.shareUserPopoverAnchorEl,\n fileList: state.explorer.fileList,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openResave: (key) => {\n dispatch(openResaveDialog(key));\n },\n setShareUserPopover: (e) => {\n dispatch(setShareUserPopover(e));\n },\n };\n};\n\nclass SharedFolderComponent extends Component {\n state = {};\n\n UNSAFE_componentWillMount() {\n window.shareInfo = this.props.share;\n }\n\n componentWillUnmount() {\n window.shareInfo = null;\n this.props.setSelectedTarget([]);\n }\n\n handleClickAway = () => {\n if (!pathHelper.isMobile()) {\n this.props.setSelectedTarget([]);\n }\n };\n\n render() {\n const { classes } = this.props;\n let readmeShowed = false;\n const id = this.props.anchorEl !== null ? \"simple-popover\" : undefined;\n\n return (\n
\n \n \n \n \n \n {/* eslint-disable-next-line */}\n {this.props.fileList.map((value) => {\n if (\n (value.name.toLowerCase() === \"readme.md\" ||\n value.name.toLowerCase() === \"readme.txt\") &&\n !readmeShowed\n ) {\n readmeShowed = true;\n return ;\n }\n })}\n this.props.setShareUserPopover(null)}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n \n this.props.setShareUserPopover(null)}\n share={this.props.share}\n />\n \n \n
\n );\n }\n}\n\nconst SharedFolder = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(SharedFolderComponent)));\n\nexport default SharedFolder;\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\nimport PageLoading from \"../Placeholder/PageLoading\";\nimport { useParams } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { toggleSnackbar } from \"../../actions\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport { useDispatch } from \"react-redux\";\nimport Notice from \"./NotFound\";\nimport LockedFile from \"./LockedFile\";\nimport SharedFile from \"./SharedFile\";\nimport SharedFolder from \"./SharedFolder\";\n\nexport default function SharePreload() {\n const dispatch = useDispatch();\n const { id } = useParams();\n\n const [share, setShare] = useState(undefined);\n const [loading, setLoading] = useState(false);\n const [password, setPassword] = useState(\"\");\n\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n if (share) {\n if (share.locked) {\n SetSubTitle(share.creator.nick + \"的加密分享\");\n if (password !== \"\") {\n ToggleSnackbar(\"top\", \"right\", \"密码不正确\", \"warning\");\n }\n } else {\n SetSubTitle(share.source.name);\n }\n } else {\n SetSubTitle();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [share, SetSubTitle, ToggleSnackbar]);\n\n useEffect(() => {\n return () => {\n SetSubTitle();\n };\n // eslint-disable-next-line\n }, []);\n\n useEffect(() => {\n setLoading(true);\n let withPassword = \"\";\n if (password !== \"\") {\n withPassword = \"?password=\" + password;\n }\n API.get(\"/share/info/\" + id + withPassword)\n .then((response) => {\n setShare(response.data);\n setLoading(false);\n })\n .catch((error) => {\n setLoading(false);\n if (error.code === 404) {\n setShare(null);\n } else {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n }\n });\n }, [id, password, ToggleSnackbar]);\n\n return (\n }>\n {share === undefined && }\n {share === null && }\n {share && share.locked && (\n \n )}\n {share && !share.locked && !share.is_dir && (\n \n )}\n {share && !share.locked && share.is_dir && (\n \n )}\n \n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport pathHelper from \"../../utils/page\";\n\nconst useStyles = makeStyles(() => ({\n layout: {\n width: \"auto\",\n },\n\n container: {\n border: \"none\",\n width: \"100%\",\n height: \"calc(100vh - 18px)\",\n marginBottom: -3,\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function DocViewer() {\n const [url, setURL] = useState(\"\");\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n\n const dispatch = useDispatch();\n\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n if (!pathHelper.isSharePage(location.pathname)) {\n const path = query.get(\"p\").split(\"/\");\n SetSubTitle(path[path.length - 1]);\n } else {\n SetSubTitle(query.get(\"name\"));\n }\n // eslint-disable-next-line\n }, [math.params[0], location]);\n\n useEffect(() => {\n let requestURL = \"/file/doc/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/doc/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n API.get(requestURL)\n .then((response) => {\n setURL(\"https://view.xdocin.com/view?src=\" + response.data);\n //window.open(response.data,'_target')\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n // eslint-disable-next-line\n }, [math.params[0], location]);\n // sandbox=\"allow-scripts allow-top-navigation-by-user-activation allow-same-origin allow-forms\"\n const classes = useStyles();\n return (\n
\n {url !== \"\" && (\n \n // \n )}\n
\n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Paper } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport Editor from \"for-editor\";\nimport SaveButton from \"../Dial/Save\";\nimport pathHelper from \"../../utils/page\";\nimport TextLoading from \"../Placeholder/TextLoading\";\nimport Axios from 'axios'\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 50,\n },\n player: {\n borderRadius: \"4px\",\n },\n root: {\n backgroundColor: \"white\",\n borderRadius: \"8px\",\n },\n \"@global\": {\n \".for-toolbar\": {\n overflowX: \"auto!important\",\n },\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function TextViewer() {\n const [content, setContent] = useState(\"\");\n const [status, setStatus] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const math = useRouteMatch();\n const $vm = React.createRef();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n\n const dispatch = useDispatch();\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n if (!pathHelper.isSharePage(location.pathname)) {\n const path = query.get(\"p\").split(\"/\");\n SetSubTitle(path[path.length - 1]);\n } else {\n SetSubTitle(query.get(\"name\"));\n }\n // eslint-disable-next-line\n }, [math.params[0], location]);\n\n useEffect(() => {\n let requestURL = \"/file/content/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/content/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n\n setLoading(true);\n API.get(requestURL)\n .then((response) => {\n //请求地址内的文本\n const cdnFileUrl = response.data;\n Axios({\n url:cdnFileUrl,\n method: 'get',\n headers:{'Content-Type':'multipart/form-data'}\n }).then(\n request =>{\n setContent(request.data);\n },\n error =>{\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"无法读取文件内容,\" + error.data,\n \"error\"\n );\n }\n )\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"无法读取文件内容,\" + error.message,\n \"error\"\n );\n })\n .then(() => {\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [math.params[0]]);\n\n const toBase64 = (file) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n\n const save = () => {\n setStatus(\"loading\");\n API.put(\"/file/update/\" + query.get(\"id\"), content)\n .then(() => {\n setStatus(\"success\");\n setTimeout(() => setStatus(\"\"), 2000);\n })\n .catch((error) => {\n setStatus(\"\");\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const addImg = async ($file) => {\n $vm.current.$img2Url($file.name, await toBase64($file));\n console.log($file);\n };\n\n const classes = useStyles();\n return (\n
\n \n {loading && }\n {!loading && (\n save()}\n // addImg={($file) => addImg($file)}\n onChange={(value) => setContent(value)}\n disabled={true}\n toolbar={{\n // h1: true, // h1\n // h2: true, // h2\n // h3: true, // h3\n // h4: true, // h4\n // img: true, // 图片\n // link: true, // 链接\n // code: true, // 代码块\n // preview: true, // 预览\n expand: true, // 全屏\n /* v0.0.9 */\n // undo: true, // 撤销\n // redo: true, // 重做\n save: false, // 保存\n /* v0.2.3 */\n // subfield: true, // 单双栏模式\n }}\n />\n )}\n \n {/* {!pathHelper.isSharePage(location.pathname) && (\n \n )} */}\n
\n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport { toggleSnackbar } from \"../../actions\";\nimport API from \"../../middleware/Api\";\n\nimport {\n withStyles,\n Typography,\n Paper,\n Button,\n Grid,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from \"@material-ui/core\";\nimport { sizeToString } from \"../../utils\";\nimport { withRouter } from \"react-router\";\nimport { formatLocalTime } from \"../../utils/datetime\";\n\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: \"50px\",\n },\n\n gird: {\n marginTop: \"30px\",\n },\n paper: {\n padding: theme.spacing(2),\n color: theme.palette.text.secondary,\n },\n data: {\n fontSize: \"25px\",\n color: theme.palette.primary.main,\n },\n proBar: {\n height: \"10px\",\n },\n r1: {\n backgroundColor: \"#f0ad4e\",\n transition: \"width .6s ease\",\n height: \"100%\",\n fontSize: \"12px\",\n lineHeight: \"20px\",\n float: \"left\",\n },\n r2: {\n backgroundColor: \"#4caf50\",\n transition: \"width .6s ease\",\n height: \"100%\",\n fontSize: \"12px\",\n lineHeight: \"20px\",\n float: \"left\",\n },\n r3: {\n backgroundColor: \"#5bc0de\",\n transition: \"width .6s ease\",\n height: \"100%\",\n fontSize: \"12px\",\n lineHeight: \"20px\",\n float: \"left\",\n },\n note_block: {\n width: \"10px\",\n height: \"10px\",\n display: \"inline-block\",\n position: \"relative\",\n marginLeft: \"10px\",\n marginRight: \"3px\",\n },\n r1_block: {\n backgroundColor: \"#f0ad4e\",\n },\n r2_block: {\n backgroundColor: \"#4caf50\",\n },\n r3_block: {\n backgroundColor: \"#5bc0de\",\n },\n title: {\n marginTop: \"30px\",\n marginBottom: \"30px\",\n },\n button: {\n margin: theme.spacing(1),\n },\n table: {\n overflowX: \"auto\",\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass QuotaCompoment extends Component {\n state = {\n data: {\n basic: 0,\n used: 0,\n total: 0,\n pack: 0,\n r1: 0,\n r2: 0,\n r3: 0,\n },\n packs: [],\n };\n\n firstLoad = true;\n\n componentDidMount() {\n if (this.firstLoad) {\n this.firstLoad = !this.firstLoad;\n API.get(\"/vas/pack\")\n .then((response) => {\n let usedR,\n baseR,\n packR = 0;\n if (response.data.used > response.data.base) {\n usedR = response.data.used / response.data.total;\n baseR = 0;\n packR = 1 - usedR;\n } else {\n usedR = response.data.used / response.data.total;\n baseR =\n (response.data.base - response.data.used) /\n response.data.total;\n packR = 1 - usedR - baseR;\n }\n\n this.setState({\n data: {\n used: response.data.used,\n pack: response.data.pack,\n total: response.data.total,\n basic: response.data.base,\n r1: usedR > 1 ? 100 : usedR * 100,\n r2: usedR > 1 ? 0 : baseR * 100,\n r3: usedR > 1 ? 0 : packR * 100,\n },\n packs: response.data.packs,\n });\n })\n .catch((error) => {\n this.setState({\n loading: false,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n }\n render() {\n const { classes } = this.props;\n\n return (\n
\n \n 容量配额\n \n \n \n \n \n {sizeToString(this.state.data.basic)}\n \n 用户组基础容量\n \n \n \n \n \n {sizeToString(this.state.data.pack)}\n \n 有效容量包附加附加容量\n \n \n \n \n \n {sizeToString(this.state.data.used)}\n \n 已使用容量\n \n \n \n \n \n {sizeToString(this.state.data.total)}\n \n 总容量\n \n \n \n \n
\n \n \n \n
\n
\n \n 已用容量\n \n 用户组基础容量\n \n 有效容量包附加附加容量\n
\n
\n
\n
\n \n 可用容量包\n \n \n this.props.history.push(\"/buy\")}\n >\n 购买容量包\n \n this.props.history.push(\"/buy?tab=3\")}\n >\n 使用激活码兑换\n \n
\n \n \n \n \n 容量包名称\n \n 大小\n \n 激活日期\n \n 有效期\n \n 过期日期\n \n \n \n \n {this.state.packs.map((row, id) => (\n \n \n {row.name}\n \n \n {sizeToString(row.size)}\n \n \n {formatLocalTime(\n row.activate_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n {Math.round(row.expiration / 86400)}\n 天\n \n \n {formatLocalTime(\n row.expiration_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n ))}\n \n
\n
\n
\n
\n );\n }\n}\n\nconst Quota = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(QuotaCompoment)));\n\nexport default Quota;\n","import React, { Component } from \"react\";\nimport classNames from \"classnames\";\nimport { withStyles, ButtonBase, Typography } from \"@material-ui/core\";\nconst styles = (theme) => ({\n container: {\n boxShadow: \"0 0 0 1px #e6e9eb\",\n borderRadius: \"4px\",\n transition: \"box-shadow .5s\",\n width: \"100%\",\n display: \"block\",\n },\n active: {\n boxShadow: \"0 0 0 3px \" + theme.palette.primary.main,\n },\n boxHead: {\n textAlign: \"center\",\n padding: \"10px 10px 10px\",\n borderBottom: \"1px solid #e6e9eb\",\n color: theme.palette.text.main,\n width: \"100%\",\n },\n price: {\n fontSize: \"33px\",\n fontWeight: \"500\",\n lineHeight: \"40px\",\n color: theme.palette.primary.main,\n },\n priceWithScore: {\n fontSize: \"23px\",\n fontWeight: \"500\",\n lineHeight: \"40px\",\n color: theme.palette.primary.main,\n },\n packName: {\n marginTop: \"5px\",\n marginBottom: \"5px\",\n },\n boxBottom: {\n color: theme.palette.text.main,\n textAlign: \"center\",\n padding: \"5px\",\n },\n});\n\nclass PackSelect extends Component {\n render() {\n const { classes, pack } = this.props;\n return (\n \n
\n \n {pack.name}\n \n {pack.score === 0 && (\n \n ¥{(pack.price / 100).toFixed(2)}\n \n )}\n {pack.score !== 0 && (\n \n ¥{(pack.price / 100).toFixed(2)} / {pack.score}{\" \"}\n 积分\n \n )}\n
\n
\n \n 有效期:{Math.ceil(pack.time / 86400)}天\n \n
\n \n );\n }\n}\n\nexport default withStyles(styles)(PackSelect);\n","import React, { Component } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { withStyles, ButtonBase, Typography } from \"@material-ui/core\";\r\nconst styles = (theme) => ({\r\n container: {\r\n boxShadow: \"0 0 0 1px #e6e9eb\",\r\n borderRadius: \"4px\",\r\n transition: \"box-shadow .5s\",\r\n width: \"100%\",\r\n display: \"block\",\r\n },\r\n active: {\r\n boxShadow: \"0 0 0 3px \" + theme.palette.primary.main,\r\n },\r\n boxHead: {\r\n textAlign: \"center\",\r\n padding: \"10px 10px 10px\",\r\n borderBottom: \"1px solid #e6e9eb\",\r\n color: theme.palette.text.main,\r\n width: \"100%\",\r\n },\r\n price: {\r\n fontSize: \"33px\",\r\n fontWeight: \"500\",\r\n lineHeight: \"40px\",\r\n color: theme.palette.primary.main,\r\n },\r\n priceWithScore: {\r\n fontSize: \"23px\",\r\n fontWeight: \"500\",\r\n lineHeight: \"40px\",\r\n color: theme.palette.primary.main,\r\n },\r\n packName: {\r\n marginTop: \"5px\",\r\n marginBottom: \"5px\",\r\n },\r\n boxBottom: {\r\n color: theme.palette.text.main,\r\n textAlign: \"center\",\r\n padding: \"5px\",\r\n },\r\n});\r\n\r\nclass JiFenPackSelect extends Component {\r\n render() {\r\n const { classes, pack } = this.props;\r\n return (\r\n \r\n
\r\n \r\n {pack.name}\r\n \r\n {pack.id === -1 && (\r\n \r\n ¥{(pack.price/100) + \" / 1积分\"}\r\n \r\n )}\r\n {pack.id !== -1 && (\r\n \r\n ¥{(pack.price / 100).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\nexport default withStyles(styles)(JiFenPackSelect);\r\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport SdStorage from \"@material-ui/icons/SdStorage\";\nimport ShopIcon from \"@material-ui/icons/ShoppingCart\";\nimport PackSelect from \"./PackSelect\";\nimport JiFenPackSelect from \"./JiFenPackSelect\";\nimport SupervisedUserCircle from \"@material-ui/icons/SupervisedUserCircle\";\nimport StarIcon from \"@material-ui/icons/StarBorder\";\nimport LocalPlay from \"@material-ui/icons/LocalPlay\";\nimport API from \"../../middleware/Api\";\nimport QRCode from \"qrcode-react\";\n\nimport {\n withStyles,\n AppBar,\n Tabs,\n Tab,\n Typography,\n Paper,\n Button,\n TextField,\n Grid,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Card,\n CardActions,\n CardContent,\n CardHeader,\n} from \"@material-ui/core\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormLabel from \"@material-ui/core/FormLabel\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport { AccountBalanceWallet } from \"@material-ui/icons\";\nimport pathHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router\";\n\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: \"50px\",\n },\n\n gird: {\n marginTop: \"30px\",\n },\n paper: {\n padding: theme.spacing(2),\n color: theme.palette.text.secondary,\n },\n title: {\n marginTop: \"30px\",\n marginBottom: \"30px\",\n },\n button: {\n margin: theme.spacing(1),\n },\n action: {\n textAlign: \"right\",\n marginTop: \"20px\",\n },\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n width: 70,\n textAlign: \"center!important\",\n },\n priceShow: {\n color: theme.palette.secondary.main,\n fontSize: \"30px\",\n },\n codeContainer: {\n textAlign: \"center\",\n marginTop: \"20px\",\n },\n cardHeader: {\n backgroundColor:\n theme.palette.type === \"dark\"\n ? theme.palette.background.default\n : theme.palette.grey[200],\n },\n cardPricing: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"baseline\",\n marginBottom: theme.spacing(2),\n },\n cardActions: {\n [theme.breakpoints.up(\"sm\")]: {\n paddingBottom: theme.spacing(2),\n },\n },\n redeemContainer: {\n [theme.breakpoints.up(\"sm\")]: {\n marginLeft: \"50px\",\n marginRight: \"50px\",\n width: \"auto\",\n },\n marginTop: \"50px\",\n marginBottom: \"50px\",\n },\n doRedeem: {\n textAlign: \"right\",\n },\n payMethod: {\n marginTop: theme.spacing(4),\n padding: theme.spacing(2),\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass BuyQuotaCompoment extends Component {\n IntervalId = null;\n constructor(props) {\n super(props);\n\n const tab = new URLSearchParams(this.props.location.search);\n const index = tab.get(\"tab\");\n\n this.state = {\n value: index ? parseInt(index) : 0,\n selectedPack: -1,\n selectedJiFenPack: 0,\n selectedGroup: -1,\n times: 1,\n scoreNum: 1,\n loading: false,\n redeemCode: \"\",\n dialog: null,\n payment: {\n type: \"\",\n img: \"\",\n },\n scorePrice: 0,\n redeemInfo: null,\n packs: [],\n groups: [],\n alipay: false,\n payjs: false,\n wechat: false,\n wechatH5: false,\n packPayMethod: null,\n jiFenData: [],\n };\n }\n\n componentWillUnmount() {\n window.clearInterval(this.IntervalId);\n }\n\n componentDidMount() {\n API.get(\"/vas/product\")\n .then((response) => {\n this.setState({\n packs: response.data.packs,\n groups: response.data.groups,\n alipay: response.data.alipay,\n payjs: response.data.payjs,\n wechat: response.data.wechat,\n wechatH5: response.data.wechat_h5,\n scorePrice: response.data.score_price,\n jiFenData: response.data.ji_fen_data,\n });\n const jiFenData_Temp=this.state.jiFenData;\n jiFenData_Temp.splice(0,0,{id: -1, name: \"自定义充值\", price: this.state.scorePrice});\n this.setState({jiFenData:jiFenData_Temp})\n })\n .catch((error) => {\n this.setState({\n loading: false,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n\n confirmRedeem = () => {\n this.setState({\n loading: true,\n });\n API.post(\"/vas/redeem/\" + this.state.redeemCode)\n .then(() => {\n this.setState({\n loading: false,\n dialog: \"success\",\n });\n })\n .catch((error) => {\n this.setState({\n loading: false,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"错误:\" + error.message,\n \"error\"\n );\n });\n };\n\n doRedeem = () => {\n if (this.state.redeemCode === \"\") {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"请输入激活码\",\n \"warning\"\n );\n return;\n }\n this.setState({\n loading: true,\n });\n API.get(\"/vas/redeem/\" + this.state.redeemCode)\n .then((response) => {\n this.setState({\n loading: false,\n dialog: \"redeem\",\n redeemInfo: response.data,\n });\n })\n .catch((error) => {\n this.setState({\n loading: false,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n buyPack = (packType) => {\n if (packType === \"pack\" && this.state.selectedPack === -1) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"请先选择一个容量包\",\n \"warning\"\n );\n return;\n }\n this.setState({\n loading: true,\n });\n API.post(\"/vas/order\", {\n action: packType,\n method: this.state.packPayMethod,\n id:\n packType === \"score\"\n ? 1\n : packType === \"pack\"\n ? this.state.packs[this.state.selectedPack].id\n : this.state.groups[this.state.selectedGroup].id,\n num:\n packType === \"score\"\n ? parseInt(this.state.scoreNum)\n : parseInt(this.state.times),\n })\n .then((response) => {\n if (!response.data.payment) {\n this.setState({\n loading: false,\n dialog: \"success\",\n });\n return;\n }\n if (response.data.qr_code) {\n if(this.state.packPayMethod == \"wechat_h5\"){\n window.location.href = response.data.qr_code\n this.setState({\n loading: false,\n dialog: \"h5WXPay\",\n });\n }else{\n this.setState({\n loading: false,\n dialog: \"qr\",\n payment: {\n type: this.state.packPayMethod,\n img: response.data.qr_code,\n },\n });\n }\n this.IntervalId = window.setInterval(() => {\n this.querryLoop(response.data.id);\n }, 3000);\n }\n })\n .catch((error) => {\n this.setState({\n loading: false,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"错误:\" + error.message,\n \"error\"\n );\n });\n };\n buyJiFenPack = () => {\n if (this.state.selectedJiFenPack === -1) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"请先选择一个积分包\",\n \"warning\"\n );\n return;\n }\n this.setState({\n loading: true,\n });\n API.post(\"/vas/order\", {\n action: \"ji_fen_data\",\n method: this.state.packPayMethod,\n id:\n this.state.selectedJiFenPack === 0\n ? 1\n : this.state.jiFenData[this.state.selectedJiFenPack].id,\n num:\n this.state.selectedJiFenPack > 0\n ? 1\n : parseInt(this.state.scoreNum),\n })\n .then((response) => {\n if (!response.data.payment) {\n this.setState({\n loading: false,\n dialog: \"success\",\n });\n return;\n }\n if (response.data.qr_code) {\n if(this.state.packPayMethod == \"wechat_h5\"){\n window.location.href = response.data.qr_code\n this.setState({\n loading: false,\n dialog: \"h5WXPay\",\n });\n }else{\n this.setState({\n loading: false,\n dialog: \"qr\",\n payment: {\n type: this.state.packPayMethod,\n img: response.data.qr_code,\n },\n });\n }\n this.IntervalId = window.setInterval(() => {\n this.querryLoop(response.data.id);\n }, 3000);\n }\n })\n .catch((error) => {\n this.setState({\n loading: false,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"错误:\" + error.message,\n \"error\"\n );\n });\n };\n querryLoop = (id) => {\n API.get(\"/vas/order/\" + id)\n .then((response) => {\n if (response.data === 1) {\n this.setState({\n dialog: \"success\",\n });\n window.clearInterval(this.IntervalId);\n }\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"错误:\" + error.message,\n \"error\"\n );\n window.clearInterval(this.IntervalId);\n });\n };\n\n handleChange = (event, value) => {\n this.setState({\n packPayMethod:\n this.state.packPayMethod === \"score\"\n ? null\n : this.state.packPayMethod,\n });\n this.setState({ value });\n };\n\n handleChangeIndex = (index) => {\n this.setState({ value: index });\n };\n\n handleClose = () => {\n window.clearInterval(this.IntervalId);\n this.setState({\n dialog: null,\n });\n };\n\n handleTexyChange = (name) => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n selectPack = (id) => {\n this.setState({\n selectedPack: id,\n packPayMethod:\n this.state.packPayMethod === \"score\"\n ? null\n : this.state.packPayMethod,\n });\n };\n selectJiFenPack = (id) => {\n this.setState({scoreNum : 1});\n if(id == -1){\n // 自定义充值\n this.setState({\n selectedJiFenPack: id,\n packPayMethod:\n this.state.packPayMethod === \"score\"\n ? null\n : this.state.packPayMethod,\n });\n }else{\n //积分包充值\n this.setState({\n selectedJiFenPack: id,\n packPayMethod:\n this.state.packPayMethod === \"score\"\n ? null\n : this.state.packPayMethod,\n });\n }\n \n };\n selectGroup = (id) => {\n this.setState({\n selectedGroup: id,\n dialog: \"buyGroup\",\n packPayMethod:\n this.state.packPayMethod === \"score\"\n ? null\n : this.state.packPayMethod,\n });\n };\n\n selectPackPayMethod = (event) => {\n this.setState({\n packPayMethod: event.target.value,\n });\n };\n\n render() {\n const { classes } = this.props;\n\n const methodSelect = (\n
\n 选择支付方式:\n \n {!this.state.alipay &&\n !this.state.payjs &&\n !this.state.wechat &&\n !this.state.wechatH5 &&\n (this.state.value === 1 || this.state.value === 0) &&\n (this.state.selectedPack === -1 ||\n this.state.packs[this.state.selectedPack].score ===\n 0) && (\n 无可用支付方式\n )}\n {this.state.alipay && (\n }\n label={\"支付宝扫码\"}\n />\n )}\n {this.state.payjs && (\n }\n label={\"微信扫码支付\"}\n />\n )}\n {this.state.wechat && (\n }\n label={\"微信扫码支付\"}\n />\n )}\n {this.state.wechatH5 && (\n }\n label={\"手机微信支付\"}\n />\n )}\n {this.state.value === 1 &&\n this.state.selectedPack !== -1 &&\n this.state.packs[this.state.selectedPack].score !==\n 0 && (\n }\n label={\"积分支付\"}\n />\n )}\n {/* {this.state.value === 1 &&\n this.state.selectedGroup !== -1 &&\n this.state.groups[this.state.selectedGroup].score !==\n 0 && (\n }\n label={\"积分支付\"}\n />\n )} */}\n \n
\n {this.state.value === 1 && (\n 购买时长倍数:\n )}\n {this.state.value === 0 && (\n \n {this.state.selectedJiFenPack ===\n 0 && \n {(\"充值积分数量:\")}\n }\n {this.state.selectedJiFenPack > 0 && this.state.jiFenData !== null && (\n \n {(\"充值积分包:\")}\n \n )}\n \n )}\n
\n {this.state.value === 1 && (\n \n )}\n {this.state.value === 0 && (\n \n )}\n
\n );\n\n return (\n
\n \n 购买\n \n \n \n {this.state.scorePrice > 0 && (\n }\n />\n )}\n } />\n \n } />\n \n \n {this.state.value === 0 && (\n \n \n {this.state.jiFenData.map((value, id) => (\n \n this.selectJiFenPack(id)}\n active={this.state.selectedJiFenPack === id}\n />\n \n ))}\n \n \n \n {methodSelect}\n \n \n
\n
\n 当前费用:\n \n ¥\n {this.state.selectedJiFenPack ===\n 0 && \n {(\n (this.state.scorePrice /\n 100) *\n this.state.scoreNum\n ).toFixed(2)}\n }\n {this.state.selectedJiFenPack > 0 && this.state.jiFenData !== null && (\n \n {(this.state.jiFenData[this.state.selectedJiFenPack].price / 100).toFixed(2)}\n \n )}\n \n
\n
\n \n this.buyJiFenPack()\n }\n >\n 立即购买\n \n
\n
\n
\n \n
\n )}\n {this.state.value === 1 && (\n \n \n {this.state.packs.map((value, id) => (\n \n this.selectPack(id)}\n active={this.state.selectedPack === id}\n />\n \n ))}\n \n \n \n {methodSelect}\n \n \n
\n
\n 当前费用:\n {this.state.packPayMethod !==\n \"score\" && (\n \n ¥\n {this.state.selectedPack ===\n -1 && --}\n {this.state.selectedPack !==\n -1 &&\n this.state.times <= 99 &&\n this.state.times >= 1 && (\n \n {(\n (this.state\n .packs[\n this.state\n .selectedPack\n ].price /\n 100) *\n this.state.times\n ).toFixed(2)}\n \n )}\n \n )}\n {this.state.packPayMethod ===\n \"score\" && (\n \n {this.state.selectedPack ===\n -1 && --}\n {this.state.selectedPack !==\n -1 &&\n this.state.times <= 99 &&\n this.state.times >= 1 && (\n \n {this.state.packs[\n this.state\n .selectedPack\n ].score *\n this.state\n .times}{\" \"}\n 积分\n \n )}\n \n )}\n
\n
\n this.buyPack(\"pack\")}\n >\n 立即购买\n \n
\n
\n
\n \n
\n )}\n {this.state.value === 2 && (\n \n
\n \n
\n \n 下一步\n \n
\n
\n
\n )}\n \n 支付\n \n \n 请使用\n {this.state.payment.type === \"alipay\" && (\n 支付宝\n )}\n {this.state.payment.type === \"payjs\" && (\n 微信\n )}\n 扫描下方二维码完成付款,付款完成后本页面会自动刷新。\n \n
\n ,\n
\n
\n \n \n \n \n\n \n 支付完成\n \n \n 您所购买的商品已到账。\n \n \n \n \n \n \n \n 手机微信支付\n \n \n 请使用手机微信支付\n \n \n \n \n \n \n \n 确认兑换\n \n {this.state.redeemInfo !== null && (\n \n \n 商品名称:\n \n \n {this.state.redeemInfo.name}\n \n \n {this.state.redeemInfo.type === 2\n ? \"数量:\"\n : \"时长:\"}\n \n \n {this.state.redeemInfo.type === 2 && (\n <>{this.state.redeemInfo.num}\n )}\n {this.state.redeemInfo.type !== 2 && (\n <>\n {Math.ceil(\n this.state.redeemInfo.time /\n 86400\n ) * this.state.redeemInfo.num}\n 天\n \n )}\n \n \n )}\n \n \n \n \n 确认兑换\n \n \n \n\n \n \n 购买用户组\n \n \n \n 已选:\n {this.state.selectedGroup !== -1 &&\n this.state.groups[this.state.selectedGroup]\n .name}\n \n {methodSelect}\n
\n 当前费用:\n {this.state.packPayMethod !== \"score\" && (\n \n ¥\n {this.state.selectedGroup === -1 && (\n --\n )}\n {this.state.selectedGroup !== -1 &&\n this.state.times <= 99 &&\n this.state.times >= 1 && (\n \n {(\n (this.state.groups[\n this.state.selectedGroup\n ].price /\n 100) *\n this.state.times\n ).toFixed(2)}\n \n )}\n \n )}\n {this.state.packPayMethod === \"score\" && (\n \n {this.state.selectedGroup === -1 && (\n --\n )}\n {this.state.selectedGroup !== -1 &&\n this.state.times <= 99 &&\n this.state.times >= 1 && (\n \n {this.state.groups[\n this.state.selectedGroup\n ].score * this.state.times}{\" \"}\n 积分\n \n )}\n \n )}\n
\n
\n \n \n 取消\n \n this.buyPack(\"group\")}\n color=\"primary\"\n >\n 购买\n \n \n \n
\n );\n }\n}\n\nconst BuyQuota = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(BuyQuotaCompoment)));\n\nexport default BuyQuota;\n","import React, { useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { Dialog } from \"@material-ui/core\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Button from \"@material-ui/core/Button\";\nimport TextField from \"@material-ui/core/TextField\";\nimport { FolderOpenOutlined, LabelOutlined } from \"@material-ui/icons\";\nimport PathSelector from \"../FileManager/PathSelector\";\nconst useStyles = makeStyles((theme) => ({\n formGroup: {\n display: \"flex\",\n marginTop: theme.spacing(1),\n },\n formIcon: {\n marginTop: 21,\n marginRight: 19,\n color: theme.palette.text.secondary,\n },\n input: {\n width: 250,\n },\n dialogContent: {\n paddingTop: 24,\n paddingRight: 24,\n paddingBottom: 8,\n paddingLeft: 24,\n },\n button: {\n marginTop: 8,\n },\n}));\n\nexport default function CreateWebDAVAccount(props) {\n const [value, setValue] = useState({\n name: \"\",\n path: \"/\",\n });\n const [pathSelectDialog, setPathSelectDialog] = React.useState(false);\n const [selectedPath, setSelectedPath] = useState(\"\");\n // eslint-disable-next-line\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n const classes = useStyles();\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const handleInputChange = (name) => (e) => {\n setValue({\n ...value,\n [name]: e.target.value,\n });\n };\n\n const selectPath = () => {\n setValue({\n ...value,\n path: selectedPath === \"//\" ? \"/\" : selectedPath,\n });\n setPathSelectDialog(false);\n };\n\n return (\n \n setPathSelectDialog(false)}\n aria-labelledby=\"form-dialog-title\"\n >\n 选择目录\n \n\n \n \n \n 确定\n \n \n \n
\n
\n
\n
\n \n
\n\n \n
\n
\n
\n \n
\n
\n \n
\n setPathSelectDialog(true)}\n >\n 选择目录\n \n
\n
\n
\n
\n \n \n props.callback(value)}\n >\n 确定\n \n \n \n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { Dialog } from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Button from \"@material-ui/core/Button\";\nimport TextField from \"@material-ui/core/TextField\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport { FolderOpenOutlined, Storage } from \"@material-ui/icons\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport Select from \"@material-ui/core/Select\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { toggleSnackbar } from \"../../actions\";\nconst useStyles = makeStyles((theme) => ({\n formGroup: {\n display: \"flex\",\n marginTop: theme.spacing(1),\n },\n formIcon: {\n marginTop: 21,\n marginRight: 19,\n color: theme.palette.text.secondary,\n },\n input: {\n width: 250,\n },\n dialogContent: {\n paddingTop: 24,\n paddingRight: 24,\n paddingBottom: 8,\n paddingLeft: 24,\n },\n button: {\n marginTop: 8,\n },\n}));\n\nexport default function CreateWebDAVMount(props) {\n const [value, setValue] = useState({\n policy: \"\",\n path: \"/\",\n });\n const [policies, setPolicies] = useState([]);\n const [pathSelectDialog, setPathSelectDialog] = React.useState(false);\n const [selectedPath, setSelectedPath] = useState(\"\");\n // eslint-disable-next-line\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const classes = useStyles();\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const handleInputChange = (name) => (e) => {\n setValue({\n ...value,\n [name]: e.target.value,\n });\n };\n\n const selectPath = () => {\n setValue({\n ...value,\n path: selectedPath === \"//\" ? \"/\" : selectedPath,\n });\n setPathSelectDialog(false);\n };\n\n useEffect(() => {\n API.get(\"/user/setting/policies\")\n .then((response) => {\n setPolicies(response.data.options);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n // eslint-disable-next-line\n }, []);\n\n return (\n \n setPathSelectDialog(false)}\n aria-labelledby=\"form-dialog-title\"\n >\n 选择目录\n \n\n \n \n \n 确定\n \n \n \n
\n
\n
\n
\n \n
\n \n \n 存储策略\n \n \n {policies.map((v, k) => (\n \n {v.name}\n \n ))}\n \n \n
\n
\n
\n \n
\n
\n \n
\n setPathSelectDialog(true)}\n >\n 选择目录\n \n
\n
\n
\n
\n \n \n props.callback(value)}\n >\n 确定\n \n \n \n );\n}\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { makeStyles, Typography } from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Tabs from \"@material-ui/core/Tabs\";\nimport Tab from \"@material-ui/core/Tab\";\nimport Button from \"@material-ui/core/Button\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport Table from \"@material-ui/core/Table\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport Alert from \"@material-ui/lab/Alert\";\nimport Auth from \"../../middleware/Auth\";\nimport API from \"../../middleware/Api\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport { Delete } from \"@material-ui/icons\";\nimport CreateWebDAVAccount from \"../Modals/CreateWebDAVAccount\";\nimport TimeAgo from \"timeago-react\";\nimport CreateWebDAVMount from \"../Modals/CreateWebDAVMount\";\nimport Link from \"@material-ui/core/Link\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: \"50px\",\n },\n content: {\n marginTop: theme.spacing(4),\n },\n cardContent: {\n padding: theme.spacing(2),\n },\n tableContainer: {\n overflowX: \"auto\",\n },\n create: {\n marginTop: theme.spacing(2),\n },\n copy: {\n marginLeft: 10,\n },\n}));\n\nexport default function WebDAV() {\n const [tab, setTab] = useState(0);\n const [create, setCreate] = useState(false);\n const [mount, setMount] = useState(false);\n const [accounts, setAccounts] = useState([]);\n const [folders, setFolders] = useState([]);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const copyToClipboard = (text) => {\n navigator.clipboard.writeText(text);\n ToggleSnackbar(\"top\", \"center\", \"已复制到剪切板\", \"success\");\n };\n\n const loadList = () => {\n API.get(\"/webdav/accounts\")\n .then((response) => {\n setAccounts(response.data.accounts);\n setFolders(response.data.folders);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n useEffect(() => {\n loadList();\n // eslint-disable-next-line\n }, []);\n\n const deleteAccount = (id) => {\n const account = accounts[id];\n API.delete(\"/webdav/accounts/\" + account.ID)\n .then(() => {\n let accountCopy = [...accounts];\n accountCopy = accountCopy.filter((v, i) => {\n return i !== id;\n });\n setAccounts(accountCopy);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const deleteMount = (id) => {\n const folder = folders[id];\n API.delete(\"/webdav/mount/\" + folder.id)\n .then(() => {\n let folderCopy = [...folders];\n folderCopy = folderCopy.filter((v, i) => {\n return i !== id;\n });\n setFolders(folderCopy);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const addAccount = (account) => {\n setCreate(false);\n API.post(\"/webdav/accounts\", {\n path: account.path,\n name: account.name,\n })\n .then((response) => {\n setAccounts([\n {\n ID: response.data.id,\n Password: response.data.password,\n CreatedAt: response.data.created_at,\n Name: account.name,\n Root: account.path,\n },\n ...accounts,\n ]);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const addMount = (mountInfo) => {\n setMount(false);\n API.post(\"/webdav/mount\", {\n path: mountInfo.path,\n policy: mountInfo.policy,\n })\n .then(() => {\n loadList();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const classes = useStyles();\n const user = Auth.GetUser();\n\n return (\n
\n setCreate(false)}\n />\n setMount(false)}\n />\n \n WebDAV\n \n \n setTab(newValue)}\n aria-label=\"disabled tabs example\"\n >\n \n \n \n
\n {tab === 0 && (\n
\n \n WebDAV的地址为:\n {window.location.origin + \"/dav\"}\n ;登陆用户名统一为:{user.user_name}{\" \"}\n ;密码为所创建账号的密码。\n \n \n \n \n \n 备注名\n 密码\n \n 根目录\n \n \n 创建日期\n \n \n 操作\n \n \n \n \n {accounts.map((row, id) => (\n \n \n {row.Name}\n \n \n {row.Password}\n \n copyToClipboard(\n row.Password\n )\n }\n href={\"javascript:void\"}\n >\n 复制\n \n \n \n {row.Root}\n \n \n \n \n \n \n deleteAccount(id)\n }\n >\n \n \n \n \n ))}\n \n \n \n setCreate(true)}\n className={classes.create}\n variant=\"contained\"\n color=\"secondary\"\n >\n 创建新账号\n \n
\n )}\n {tab === 1 && (\n
\n \n 为目录挂载存储策略后,在 WebDAV\n 中上传至此目录的新文件将会使用挂载的存储策略存储。复制、移动到此目录不会应用挂载的存储策略;挂载设置不会被子目录继承。\n \n \n \n \n \n 目录名\n \n 挂载存储策略\n \n \n 操作\n \n \n \n \n {folders.map((row, id) => (\n \n \n {row.name}\n \n \n {row.policy_name}\n \n \n \n deleteMount(id)\n }\n >\n \n \n \n \n ))}\n \n \n \n setMount(true)}\n className={classes.create}\n variant=\"contained\"\n color=\"secondary\"\n >\n 挂载新目录\n \n
\n )}\n
\n
\n
\n );\n}\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { makeStyles, Typography } from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Table from \"@material-ui/core/Table\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport API from \"../../middleware/Api\";\nimport { getTaskProgress, getTaskStatus, getTaskType } from \"../../config\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport { formatLocalTime } from \"../../utils/datetime\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: \"50px\",\n },\n content: {\n marginTop: theme.spacing(4),\n overflowX: \"auto\",\n },\n cardContent: {\n padding: theme.spacing(2),\n },\n tableContainer: {\n overflowX: \"auto\",\n },\n create: {\n marginTop: theme.spacing(2),\n },\n noWrap: {\n wordBreak: \"keepAll\",\n },\n footer: {\n padding: theme.spacing(2),\n },\n}));\n\nexport default function Tasks() {\n const [tasks, setTasks] = useState([]);\n const [total, setTotal] = useState(0);\n const [page, setPage] = useState(1);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const loadList = (page) => {\n API.get(\"/user/setting/tasks?page=\" + page)\n .then((response) => {\n setTasks(response.data.tasks);\n setTotal(response.data.total);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n useEffect(() => {\n loadList(page);\n // eslint-disable-next-line\n }, [page]);\n\n const getError = (error) => {\n if (error === \"\") {\n return \"-\";\n }\n try {\n const res = JSON.parse(error);\n return res.msg;\n } catch (e) {\n return \"未知\";\n }\n };\n\n const classes = useStyles();\n\n return (\n
\n \n 任务队列\n \n \n \n \n \n 创建于\n \n 任务类型\n \n \n 状态\n \n \n 最后进度\n \n 错误信息\n \n \n \n {tasks.map((row, id) => (\n \n \n {formatLocalTime(\n row.create_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n {getTaskType(row.type)}\n \n \n {getTaskStatus(row.status)}\n \n \n {getTaskProgress(row.type, row.progress)}\n \n \n {getError(row.error)}\n \n \n ))}\n \n
\n
\n setPage(v)}\n color=\"secondary\"\n />\n
\n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport Input from \"@material-ui/core/Input\";\r\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport SizeInput from \"../Common/SizeInput\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport API from \"../../../middleware/Api\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n formContainer: {\r\n margin: \"8px 0 8px 0\",\r\n },\r\n}));\r\n\r\nexport default function Withdrawals({ open, onClose, onSubmit, maxShareSorce,WithdrawalsSorce }) {\r\n const classes = useStyles();\r\n const [shareSorce, setShareSorce] = useState(0);\r\n const [withdrawalsSorce, setWithdrawalsSorce] = useState(0);\r\n const [minSorce, setminSorce] = useState(0);\r\n\r\n\r\n useEffect(() => {\r\n setShareSorce(maxShareSorce)\r\n setWithdrawalsSorce(WithdrawalsSorce)\r\n setminSorce(WithdrawalsSorce)\r\n }, [maxShareSorce,WithdrawalsSorce]);\r\n\r\n const handleChange = (name) => (event) => {\r\n\r\n setWithdrawalsSorce(event.target.value)\r\n };\r\n\r\n const submit = (e) => {\r\n e.preventDefault();\r\n //提交提现日志记录\r\n API.post(\"/user/withdrawalsAction/\", {\r\n WithdrawalsScore: parseFloat(withdrawalsSorce),\r\n }).then((response) => {\r\n onSubmit(\"\")\r\n }).catch((error) => {\r\n onSubmit(error.message)\r\n });\r\n\r\n \r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n 分享积分提现\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n 提现积分\r\n \r\n \r\n \r\n 最少提积分:{minSorce},当前可提现分享积分:{maxShareSorce}\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\";\nimport { connect } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport API from \"../../middleware/Api\";\nimport { sizeToString } from \"../../utils\";\nimport Withdrawals from \"../Admin/Dialogs/Withdrawals\";\n\n\nimport {\n withStyles,\n Paper,\n Avatar,\n Typography,\n Tabs,\n Tab,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Grid,\n Button,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport Link from \"@material-ui/core/Link\";\n\n\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n marginBottom: \"30px\",\n [theme.breakpoints.up(\"sm\")]: {\n width: 780,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n userNav: {\n height: \"270px\",\n backgroundColor: theme.palette.primary.main,\n padding: \"20px 20px 2em\",\n backgroundImage:\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 900'%3E%3Cpolygon fill='\" +\n theme.palette.primary.light.replace(\"#\", \"%23\") +\n \"' points='957 450 539 900 1396 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\n \"' points='957 450 872.9 900 1396 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='-60 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='337 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\n \"' points='1203 546 1552 900 876 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='1203 546 1552 900 1162 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\n \"' points='641 695 886 900 367 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.main.replace(\"#\", \"%23\") +\n \"' points='587 900 641 695 886 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\n \"' points='1710 900 1401 632 1096 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='1710 900 1401 632 1365 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='1210 900 971 687 725 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='943 900 1210 900 971 687'/%3E%3C/svg%3E\\\")\",\n backgroundSize: \"cover\",\n backgroundPosition: \"bottom\",\n },\n avatarContainer: {\n height: \"80px\",\n width: \"80px\",\n borderRaidus: \"50%\",\n margin: \"auto\",\n marginTop: \"50px\",\n boxShadow:\n \"0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12)\",\n border: \"2px solid #fff\",\n },\n nickName: {\n width: \"200px\",\n margin: \"auto\",\n textAlign: \"center\",\n marginTop: \"1px\",\n fontSize: \"25px\",\n color: \"#ffffff\",\n opacity: \"0.81\",\n },\n th: {\n minWidth: \"106px\",\n },\n mobileHide: {\n [theme.breakpoints.down(\"md\")]: {\n display: \"none\",\n },\n },\n tableLink: {\n cursor: \"pointer\",\n },\n navigator: {\n padding: theme.spacing(2),\n },\n pageInfo: {\n marginTop: \"14px\",\n marginLeft: \"23px\",\n },\n infoItem: {\n paddingLeft: \"46px!important\",\n paddingBottom: \"20px!important\",\n },\n infoContainer: {\n marginTop: \"30px\",\n },\n tableContainer: {\n overflowX: \"auto\",\n },\n loadMore: {\n textAlign: \"right\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass ProfileCompoment extends Component {\n state = {\n listType: 0,\n shareList: [],\n page: 1,\n user: null,\n total: 0,\n withdrawals:false,\n shareScoreWithdrawals : 0,\n withdrawalsSorce : 0,\n withdrawalsList: [],\n withdrawalsTotal:0\n };\n\n handleChange = (event, listType) => {\n this.setState({\n shareList: [],\n total: 0,\n });\n this.setState({ listType });\n if (listType === 2) {\n this.loadList(1, \"hot\");\n } else if (listType === 1) {\n this.loadList(1, \"default\");\n }else if (listType === 3) {\n this.loadListSharedown(1, \"shareDownload\");\n }else if (listType === 4) {\n this.loadWithdrawalsList(1);\n }\n };\n\n componentDidMount = () => {\n this.loadList(1, \"default\");\n };\n submitShare = (e) => {\n // this.props.toggleSnackbar(\"top\", \"right\", \"敬请期待\", \"warning\");\n API.get(\n \"/user/withdrawalsPrev/\"\n )\n .then((response) => {\n this.setState({\n shareScoreWithdrawals: response.data.ShareScore,\n withdrawalsSorce : response.data.WithdrawalsSorce\n }); \n this.setState({\n withdrawals: true\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n loadList = (page, order) => {\n this.setState({\n shareList: [],\n });\n API.get(\n \"/user/profile/\" +\n this.props.match.params.id +\n \"?page=\" +\n page +\n \"&type=\" +\n order\n )\n .then((response) => {\n this.setState({\n shareList: response.data.items,\n user: response.data.user,\n total: response.data.total,\n }); \n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n withdrawalsOver = (msg) => {\n this.setState({\n withdrawals: false\n });\n if (msg === \"\"){\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"发起提现请求成功\",\n \"success\"\n );\n }else{\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n msg,\n \"error\"\n );\n }\n \n };\n\n loadWithdrawalsList = (page) => {\n this.setState({\n withdrawalsList: [],\n });\n API.post(\"/user/listWithdrawalID\", {\n page: page,\n page_size: 10,\n })\n .then((response) => {\n this.setState({\n withdrawalsList: response.data.items,\n withdrawalsTotal: response.data.total,\n }); \n })\n .catch((error) => {\n this.props.toggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n loadListSharedown = (page,order) => {\n this.setState({\n shareList: [],\n });\n API.get(\n \"/user/profile/\" +\n this.props.match.params.id +\n \"?page=\" +\n page +\n \"&type=\" +\n order\n )\n .then((response) => {\n this.setState({\n shareList: response.data.items,\n total: response.data.total,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n loadNext = () => {\n this.loadList(\n this.state.page + 1,\n this.state.listType === 1 ? \"default\" : \"hot\"\n );\n };\n\n loadPrev = () => {\n this.loadList(\n this.state.page - 1,\n this.state.listType === 1 ? \"default\" : \"hot\"\n );\n };\n handlePageChange = (event, value) => {\n //this.state.page = value;\n this.loadList(\n value,\n this.state.listType === 1 ? \"default\" : \"hot\"\n );\n };\n render() {\n const { classes } = this.props;\n\n return (\n
\n {this.state.user === null &&
}\n {this.state.user !== null && (\n \n
\n
\n \n
\n
\n \n {this.state.user.nick}\n \n
\n
\n \n \n \n \n \n \n \n {this.state.listType === 0 && (\n
\n \n \n \n 文件总数\n \n \n {this.state.user.FileCount}\n \n \n \n \n 分享总数\n \n \n {this.state.user.ShareCount}\n \n \n \n \n 用户组\n \n \n {this.state.user.group}\n \n \n\n \n \n 储存空间\n \n \n {sizeToString(this.state.user.total)}\n \n \n \n \n 已用空间\n \n \n {sizeToString(this.state.user.total - this.state.user.free)}\n \n \n \n \n 可用空间\n \n \n {sizeToString(this.state.user.free)}\n \n \n\n \n \n 可用积分\n \n \n {(parseFloat(this.state.user.score) + parseFloat(this.state.user.shareScore)).toFixed(2)}\n \n \n \n \n 充值积分\n \n \n {(parseFloat(this.state.user.score)).toFixed(2)}\n \n \n \n \n 分享收益积分\n \n \n {(parseFloat(this.state.user.shareScore)).toFixed(2)}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n this.props.history.push(\n \"/Withdrawals\"\n );\n }}\n variant={\"contained\"}\n color=\"secondary\">\n 补充提现账户信息\n \n \n \n \n \n \n \n 积分提现\n \n \n \n \n \n \n \n \n
\n )}\n {(this.state.listType === 1 ||\n this.state.listType === 2) && (\n
\n
\n \n \n \n 文件名\n \n 分享日期\n \n \n 下载次数\n \n \n 浏览次数\n \n \n \n \n {this.state.shareList.map(\n (row, id) => (\n \n this.props.history.push(\n \"/s/\" + row.key\n )\n }\n >\n \n \n {row.source\n ? row.source\n .name\n : \"[已失效]\"}\n \n \n \n {formatLocalTime(\n row.create_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n {row.downloads}\n \n \n {row.views}\n \n \n )\n )}\n \n
\n
\n {/* this.state.shareList.length !== 0 && */}\n {\n this.state.listType === 1 && (\n
\n \n this.loadList(\n v,\n \"default\"\n )\n }\n color=\"secondary\"\n />\n
\n )}\n {/* this.state.shareList.length !== 0 && */}\n {\n this.state.listType === 2 && (\n
\n \n this.loadList(\n v,\n \"hot\"\n )\n }\n color=\"secondary\"\n />\n
\n )}\n
\n )}\n {(this.state.listType === 3) && (\n
\n
\n \n \n \n 文件名\n 分享人\n \n 下载日期\n \n \n \n \n {this.state.shareList.map(\n (row, id) => (\n \n \n \n {row.sourceName}\n \n \n \n \n {row.shareUserName}\n \n \n \n {formatLocalTime(\n row.create_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n )\n )}\n \n
\n
\n {\n this.state.listType === 3 && (\n
\n \n this.loadListSharedown(\n v,\n \"shareDownload\"\n )\n }\n color=\"secondary\"\n />\n
\n )}\n
\n )}\n {\n (this.state.listType === 4) && (\n
\n
\n \n \n \n 提现积分\n 提现积分单价\n 提现金额\n 提现状态\n \n 提现日期\n \n 提现备注\n \n \n \n {this.state.withdrawalsList.map(\n (row, id) => (\n \n \n \n {row.WithdrawalsScore}\n \n \n \n \n ¥{row.PriceFen /100}元\n \n \n \n \n ¥{row.PriceCurrent / 100}元\n \n \n \n \n {row.WithdrawalsStatus === 0 && 未处理}\n {row.WithdrawalsStatus === 1 && 提现成功}\n {row.WithdrawalsStatus === 2 && 提现驳回}\n \n \n \n {formatLocalTime(\n row.CreatedAt,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n \n {row.Remark}\n \n \n \n )\n )}\n \n
\n
\n {\n this.state.listType === 4 && (\n
\n \n this.loadWithdrawalsList(v)\n }\n color=\"secondary\"\n />\n
\n )}\n
\n )\n }\n
\n )}\n {\n this.setState({\n withdrawals: false\n });\n }}\n />\n
\n \n );\n }\n}\n\nconst Profile = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ProfileCompoment)));\n\nexport default Profile;\n","/* eslint-disable */\r\nimport React, { Component } from 'react'\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport API from \"../../middleware/Api\";\r\nimport { toggleSnackbar } from \"../../actions\";\r\nimport { withRouter } from \"react-router\";\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 mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nclass WXBindCompoment extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n \r\n }\r\n }\r\n BindWxToUser = (code) => {\r\n //进行微信绑定\r\n API.post(\"/user/WxBind\", {\r\n code: code,\r\n }).then((response) => {\r\n if (response.rawData.code === 0) {//绑定成功\r\n //直接到首页\r\n this.props.history.push(\"/home\");\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n \"绑定微信成功\",\r\n \"success\"\r\n );\r\n }else{\r\n this.props.toggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n response.msg,\r\n \"error\"\r\n );\r\n this.onOpenLogin()\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.onOpenLogin()\r\n });\r\n };\r\n\r\n async componentDidMount() {\r\n await this.initScript()\r\n this.onOpenLogin()\r\n let self = this;\r\n window.receiveMessageFromIndex = function (event) {\r\n if (event != undefined) {\r\n // 发送请求 event.data为微信信息对象 为对象类型再请求接口\r\n if (typeof event.data === 'object') {\r\n const WXCode = event.data.code\r\n //添加openid到当前账户\r\n self.BindWxToUser(WXCode);\r\n }\r\n }\r\n }\r\n //监听来自iframe的message事件\r\n window.addEventListener('message', receiveMessageFromIndex, false)\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('message',receiveMessageFromIndex)\r\n }\r\n\r\n initScript = () => {\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.async = false;\r\n script.src = 'https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js';\r\n document.head.appendChild(script);\r\n }\r\n\r\n onOpenLogin = () => {\r\n const timer = setTimeout(() => {\r\n this.initWX()\r\n clearTimeout(timer)\r\n }, 800)\r\n }\r\n // redirect_uri: encodeURIComponent('https://pan.blocktest.top/success.html'), // 扫码成功后重定向地址\r\n initWX() {\r\n new window.WxLogin({\r\n self_redirect: true,\r\n id: 'login_container', \r\n appid: 'wx214df6cca860634f',\r\n scope: 'snsapi_login', // 写死,网页应用暂时只支持这个值\r\n redirect_uri: encodeURIComponent(window.location.origin + '/BindSuccess.html'), // 扫码成功后重定向地址\r\n state: \"\" + (new Date()).getTime(), //随机字符串\r\n style: 'black',\r\n })\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n render() {\r\n return (\r\n\t
\r\n\t
请打开手机微信扫描二维码绑定微信
\r\n
\r\n\t
\r\n )\r\n }\r\n}\r\nconst WXBind = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)((withRouter(WXBindCompoment)));\r\n\r\nexport default WXBind;","/* eslint-disable */\r\nimport React, { Component,useCallback, useEffect, useState } from 'react'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport Input from \"@material-ui/core/Input\";\r\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { connect } from \"react-redux\";\r\nimport API from \"../../middleware/Api\";\r\nimport { toggleSnackbar } from \"../../actions\";\r\nimport { withRouter } from \"react-router\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Tabs from \"@material-ui/core/Tabs\";\r\nimport Tab from \"@material-ui/core/Tab\";\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 useStyles = makeStyles((theme) => ({\r\n root: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n marginLeft: 100,\r\n },\r\n marginBottom: 40,\r\n },\r\n form: {\r\n maxWidth: 400,\r\n marginTop: 20,\r\n marginBottom: 20,\r\n },\r\n formContainer: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n padding: \"0px 24px 0 24px\",\r\n },\r\n },\r\n tabForm: {\r\n marginTop: 20,\r\n },\r\n content: {\r\n padding: theme.spacing(2),\r\n },\r\n tableContainer: {\r\n overflowX: \"auto\",\r\n marginTop: theme.spacing(2),\r\n },\r\n navigator: {\r\n marginTop: 10,\r\n },\r\n}));\r\n\r\nconst mapStateToProps = () => {\r\n return {};\r\n};\r\n\r\nexport default function Withdrawals() {\r\n const classes = useStyles();\r\n const [ZFBZhangHao, setZFBZhangHao] = useState(\"\");\r\n const [ZFBName, setZFBName] = useState(\"\");\r\n\r\n const [loading, setLoading] = useState(false);\r\n\r\n const [CardNo, setCardNo] = useState(\"\");\r\n const [CardName, setCardName] = useState(\"\");\r\n const [CardAddr, setCardAddr] = useState(\"\");\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 handleChange = (name) => (event) => {\r\n if(name === \"ZFBZhangHao\"){\r\n setZFBZhangHao(event.target.value)\r\n }\r\n if(name === \"ZFBName\"){\r\n setZFBName(event.target.value)\r\n }\r\n if(name === \"CardNo\"){\r\n setCardNo(event.target.value)\r\n }\r\n if(name === \"CardName\"){\r\n setCardName(event.target.value)\r\n }\r\n if(name === \"CardAddr\"){\r\n setCardAddr(event.target.value)\r\n }\r\n };\r\n useEffect(() => {\r\n API.get(\r\n \"/user/withdrawals/\"\r\n )\r\n .then((response) => {\r\n setZFBZhangHao(response.data.ZFBZhangHao)\r\n setZFBName(response.data.ZFBName)\r\n setCardNo(response.data.CardNo)\r\n setCardName(response.data.CardName)\r\n setCardAddr(response.data.CardAddr)\r\n })\r\n .catch((error) => {\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n error.message,\r\n \"error\"\r\n );\r\n });\r\n // eslint-disable-next-line\r\n }, []);\r\n const saveWithdrawals = () => {\r\n if((ZFBZhangHao === \"\" || ZFBZhangHao == null) && (ZFBName === \"\" || ZFBName == null) && \r\n (CardNo === \"\" || CardNo == null) && (CardName === \"\" || CardName == null) && (CardAddr === \"\" || CardAddr == null)){\r\n ToggleSnackbar(\r\n \"top\",\r\n \"right\",\r\n \"请先填写提现信息\",\r\n \"warning\"\r\n );\r\n return\r\n }\r\n API.post(\"/user/setWithdrawals/\", {\r\n ZhiFuBaoZhangHao: ZFBZhangHao,\r\n ZhiFuBaoRealName: ZFBName,\r\n CardNo: CardNo,\r\n CardName: CardName,\r\n CardAddr: CardAddr,\r\n }).then((response) => {\r\n ToggleSnackbar(\"top\", \"right\", \"保存成功\", \"success\");\r\n }).catch((error) => {\r\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\r\n });\r\n };\r\n\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n 支付宝设置\r\n \r\n
\r\n
\r\n \r\n \r\n 支付宝账号\r\n \r\n \r\n \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\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 saveWithdrawals();\r\n }}\r\n type={\"submit\"}\r\n variant={\"contained\"}\r\n color={\"primary\"}\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 Withdrawals = connect(\r\n// mapStateToProps,\r\n// mapDispatchToProps\r\n// )((withRouter(WithdrawalsCompoment)));\r\n\r\n// export default Withdrawals;\r\n","import React, { useState, useCallback } from \"react\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n List,\n ListItem,\n ListItemIcon,\n ListItemSecondaryAction,\n ListItemText,\n makeStyles,\n Paper,\n Typography,\n} from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../actions\";\nimport RightIcon from \"@material-ui/icons/KeyboardArrowRight\";\nimport { Add, Fingerprint, HighlightOff } from \"@material-ui/icons\";\nimport API from \"../../middleware/Api\";\nimport { bufferDecode, bufferEncode } from \"../../utils\";\n\nconst useStyles = makeStyles((theme) => ({\n sectionTitle: {\n paddingBottom: \"10px\",\n paddingTop: \"30px\",\n },\n rightIcon: {\n marginTop: \"4px\",\n marginRight: \"10px\",\n color: theme.palette.text.secondary,\n },\n desenList: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n iconFix: {\n marginRight: \"11px\",\n marginLeft: \"7px\",\n minWidth: 40,\n },\n flexContainer: {\n display: \"flex\",\n },\n}));\n\nexport default function Authn(props) {\n const [selected, setSelected] = useState(\"\");\n const [confirm, setConfirm] = useState(false);\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const deleteCredential = (id) => {\n API.patch(\"/user/setting/authn\", {\n id: id,\n })\n .then(() => {\n ToggleSnackbar(\"top\", \"right\", \"凭证已删除\", \"success\");\n props.remove(id);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setConfirm(false);\n });\n };\n\n const classes = useStyles();\n\n const addCredential = () => {\n if (!navigator.credentials) {\n ToggleSnackbar(\"top\", \"right\", \"当前浏览器或环境不支持\", \"warning\");\n\n return;\n }\n API.put(\"/user/authn\", {})\n .then((response) => {\n const credentialCreationOptions = response.data;\n credentialCreationOptions.publicKey.challenge = bufferDecode(\n credentialCreationOptions.publicKey.challenge\n );\n credentialCreationOptions.publicKey.user.id = bufferDecode(\n credentialCreationOptions.publicKey.user.id\n );\n if (credentialCreationOptions.publicKey.excludeCredentials) {\n for (\n let i = 0;\n i <\n credentialCreationOptions.publicKey.excludeCredentials\n .length;\n i++\n ) {\n credentialCreationOptions.publicKey.excludeCredentials[\n i\n ].id = bufferDecode(\n credentialCreationOptions.publicKey\n .excludeCredentials[i].id\n );\n }\n }\n\n return navigator.credentials.create({\n publicKey: credentialCreationOptions.publicKey,\n });\n })\n .then((credential) => {\n const attestationObject = credential.response.attestationObject;\n const clientDataJSON = credential.response.clientDataJSON;\n const rawId = credential.rawId;\n return API.put(\n \"/user/authn/finish\",\n JSON.stringify({\n id: credential.id,\n rawId: bufferEncode(rawId),\n type: credential.type,\n response: {\n attestationObject: bufferEncode(attestationObject),\n clientDataJSON: bufferEncode(clientDataJSON),\n },\n })\n );\n })\n .then((response) => {\n props.add(response.data);\n ToggleSnackbar(\"top\", \"right\", \"验证器已添加\", \"success\");\n return;\n })\n .catch((error) => {\n console.log(error);\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n return (\n
\n setConfirm(false)}>\n 删除凭证\n 确定要吊销这个凭证吗?\n \n \n deleteCredential(selected)}\n color=\"primary\"\n >\n 确定\n \n \n \n\n \n 外部认证器\n \n \n \n {props.list.map((v) => (\n <>\n {\n setConfirm(true);\n setSelected(v.id);\n }}\n >\n \n \n \n \n\n deleteCredential(v.id)}\n className={classes.flexContainer}\n >\n \n \n \n \n \n ))}\n addCredential()}>\n \n \n \n \n\n \n \n \n \n \n \n
\n );\n}\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { FormLabel, makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport { toggleSnackbar, setModalsLoading } from \"../../actions/index\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport {\n refreshTimeZone,\n timeZone,\n validateTimeZone,\n} from \"../../utils/datetime\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Auth from \"../../middleware/Auth\";\n\nconst useStyles = makeStyles((theme) => ({}));\n\nexport default function TimeZoneDialog(props) {\n const [timeZoneValue, setTimeZoneValue] = useState(timeZone);\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const saveZoneInfo = () => {\n if (!validateTimeZone(timeZoneValue)) {\n ToggleSnackbar(\"top\", \"right\", \"无效的时区名称\", \"warning\");\n return;\n }\n Auth.SetPreference(\"timeZone\", timeZoneValue);\n refreshTimeZone();\n props.onClose();\n };\n\n const classes = useStyles();\n\n return (\n \n 更改时区\n\n \n \n setTimeZoneValue(e.target.value)}\n />\n \n \n\n \n \n
\n saveZoneInfo()}\n >\n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport PhotoIcon from \"@material-ui/icons/InsertPhoto\";\nimport GroupIcon from \"@material-ui/icons/Group\";\nimport DateIcon from \"@material-ui/icons/DateRange\";\nimport EmailIcon from \"@material-ui/icons/Email\";\nimport HomeIcon from \"@material-ui/icons/Home\";\nimport LinkIcon from \"@material-ui/icons/Phonelink\";\nimport AlarmOff from \"@material-ui/icons/AlarmOff\";\nimport InputIcon from \"@material-ui/icons/Input\";\nimport SecurityIcon from \"@material-ui/icons/Security\";\nimport NickIcon from \"@material-ui/icons/PermContactCalendar\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport VerifyIcon from \"@material-ui/icons/VpnKey\";\nimport ColorIcon from \"@material-ui/icons/Palette\";\nimport {\n applyThemes,\n changeViewMethod,\n toggleDaylightMode,\n toggleSnackbar,\n} from \"../../actions\";\nimport axios from \"axios\";\nimport FingerprintIcon from \"@material-ui/icons/Fingerprint\";\nimport ToggleButton from \"@material-ui/lab/ToggleButton\";\nimport ToggleButtonGroup from \"@material-ui/lab/ToggleButtonGroup\";\nimport RightIcon from \"@material-ui/icons/KeyboardArrowRight\";\nimport {\n ListItemIcon,\n withStyles,\n Button,\n Divider,\n TextField,\n Avatar,\n Paper,\n Typography,\n List,\n ListItem,\n ListItemSecondaryAction,\n ListItemText,\n ListItemAvatar,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Switch,\n} from \"@material-ui/core\";\nimport Backup from \"@material-ui/icons/Backup\";\nimport SettingsInputHdmi from \"@material-ui/icons/SettingsInputHdmi\";\nimport { blue, green, yellow } from \"@material-ui/core/colors\";\nimport API from \"../../middleware/Api\";\nimport Auth from \"../../middleware/Auth\";\nimport { withRouter } from \"react-router\";\nimport TimeAgo from \"timeago-react\";\nimport QRCode from \"qrcode-react\";\nimport {\n Brightness3,\n Check,\n ConfirmationNumber,\n ListAlt,\n PermContactCalendar,\n Schedule,\n} from \"@material-ui/icons\";\nimport { transformTime } from \"../../utils\";\nimport Authn from \"./Authn\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { formatLocalTime, timeZone } from \"../../utils/datetime\";\nimport TimeZoneDialog from \"../Modals/TimeZone\";\n\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 700,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n sectionTitle: {\n paddingBottom: \"10px\",\n paddingTop: \"30px\",\n },\n rightIcon: {\n marginTop: \"4px\",\n marginRight: \"10px\",\n color: theme.palette.text.secondary,\n },\n uploadFromFile: {\n backgroundColor: blue[100],\n color: blue[600],\n },\n userGravatar: {\n backgroundColor: yellow[100],\n color: yellow[800],\n },\n policySelected: {\n backgroundColor: green[100],\n color: green[800],\n },\n infoText: {\n marginRight: \"17px\",\n },\n infoTextWithIcon: {\n marginRight: \"17px\",\n marginTop: \"1px\",\n },\n rightIconWithText: {\n marginTop: \"0px\",\n marginRight: \"10px\",\n color: theme.palette.text.secondary,\n },\n iconFix: {\n marginRight: \"11px\",\n marginLeft: \"7px\",\n minWidth: 40,\n },\n flexContainer: {\n display: \"flex\",\n },\n desenList: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n flexContainerResponse: {\n display: \"flex\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"initial\",\n },\n },\n desText: {\n marginTop: \"10px\",\n },\n secondColor: {\n height: \"20px\",\n width: \"20px\",\n backgroundColor: theme.palette.secondary.main,\n borderRadius: \"50%\",\n marginRight: \"17px\",\n },\n firstColor: {\n height: \"20px\",\n width: \"20px\",\n backgroundColor: theme.palette.primary.main,\n borderRadius: \"50%\",\n marginRight: \"6px\",\n },\n themeBlock: {\n height: \"20px\",\n width: \"20px\",\n },\n paddingBottom: {\n marginBottom: \"30px\",\n },\n paddingText: {\n paddingRight: theme.spacing(2),\n },\n qrcode: {\n width: 128,\n marginTop: 16,\n marginRight: 16,\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n title: state.siteConfig.title,\n authn: state.siteConfig.authn,\n viewMethod: state.viewUpdate.explorerViewMethod,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n applyThemes: (color) => {\n dispatch(applyThemes(color));\n },\n toggleDaylightMode: () => {\n dispatch(toggleDaylightMode());\n },\n changeView: (method) => {\n dispatch(changeViewMethod(method));\n },\n };\n};\n\nclass UserSettingCompoment extends Component {\n constructor(props) {\n super(props);\n this.fileInput = React.createRef();\n }\n\n state = {\n avatarModal: false,\n nickModal: false,\n changePassword: false,\n loading: \"\",\n oldPwd: \"\",\n newPwd: \"\",\n webdavPwd: \"\",\n newPwdRepeat: \"\",\n twoFactor: false,\n authCode: \"\",\n changeTheme: false,\n chosenTheme: null,\n showWebDavUrl: false,\n showWebDavUserName: false,\n changeWebDavPwd: false,\n groupBackModal: false,\n changePolicy: false,\n changeTimeZone: false,\n settings: {\n uid: 0,\n group_expires: 0,\n policy: {\n current: {\n name: \"-\",\n id: \"\",\n },\n options: [],\n },\n qq: \"\",\n homepage: true,\n two_factor: \"\",\n two_fa_secret: \"\",\n prefer_theme: \"\",\n themes: {},\n authn: [],\n },\n };\n\n handleClose = () => {\n this.setState({\n avatarModal: false,\n nickModal: false,\n changePassword: false,\n loading: \"\",\n twoFactor: false,\n changeTheme: false,\n showWebDavUrl: false,\n showWebDavUserName: false,\n changeWebDavPwd: false,\n groupBackModal: false,\n changePolicy: false,\n });\n };\n\n componentDidMount() {\n this.loadSetting();\n }\n\n toggleViewMethod = () => {\n const newMethod =\n this.props.viewMethod === \"icon\"\n ? \"list\"\n : this.props.viewMethod === \"list\"\n ? \"smallIcon\"\n : \"icon\";\n Auth.SetPreference(\"view_method\", newMethod);\n this.props.changeView(newMethod);\n };\n\n loadSetting = () => {\n API.get(\"/user/setting\")\n .then((response) => {\n const theme = JSON.parse(response.data.themes);\n response.data.themes = theme;\n this.setState({\n settings: response.data,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n doChangeGroup = () => {\n API.patch(\"/user/setting/vip\", {})\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"解约成功,更改会在数分钟后生效\",\n \"success\"\n );\n this.handleClose();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n useGravatar = () => {\n this.setState({\n loading: \"gravatar\",\n });\n API.put(\"/user/setting/avatar\")\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"头像已更新,刷新后生效\",\n \"success\"\n );\n this.setState({\n loading: \"\",\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n changePolicy = (id) => {\n API.patch(\"/user/setting/policy\", {\n id: id,\n })\n .then(() => {\n window.location.reload();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n changeNick = () => {\n this.setState({\n loading: \"nick\",\n });\n API.patch(\"/user/setting/nick\", {\n nick: this.state.nick,\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"昵称已更改,刷新后生效\",\n \"success\"\n );\n this.setState({\n loading: \"\",\n });\n this.handleClose();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n bindQQ = () => {\n this.setState({\n loading: \"nick\",\n });\n API.patch(\"/user/setting/qq\", {})\n .then((response) => {\n if (response.data === \"\") {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"已解除与QQ账户的关联\",\n \"success\"\n );\n this.setState({\n settings: {\n ...this.state.settings,\n qq: false,\n },\n });\n } else {\n window.location.href = response.data;\n }\n this.handleClose();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n })\n .then(() => {\n this.setState({\n loading: \"\",\n });\n });\n };\n\n uploadAvatar = () => {\n this.setState({\n loading: \"avatar\",\n });\n const formData = new FormData();\n formData.append(\"avatar\", this.fileInput.current.files[0]);\n API.post(\"/user/setting/avatar\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"头像已更新,刷新后生效\",\n \"success\"\n );\n this.setState({\n loading: \"\",\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n handleToggle = () => {\n API.patch(\"/user/setting/homepage\", {\n status: !this.state.settings.homepage,\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"设置已保存\",\n \"success\"\n );\n this.setState({\n settings: {\n ...this.state.settings,\n homepage: !this.state.settings.homepage,\n },\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n changhePwd = () => {\n if (this.state.newPwd !== this.state.newPwdRepeat) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"两次密码输入不一致\",\n \"warning\"\n );\n return;\n }\n this.setState({\n loading: \"changePassword\",\n });\n API.patch(\"/user/setting/password\", {\n old: this.state.oldPwd,\n new: this.state.newPwd,\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"密码已更新\",\n \"success\"\n );\n this.setState({\n loading: \"\",\n });\n this.handleClose();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n changeTheme = () => {\n this.setState({\n loading: \"changeTheme\",\n });\n API.patch(\"/user/setting/theme\", {\n theme: this.state.chosenTheme,\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"主题配色已更换\",\n \"success\"\n );\n this.props.applyThemes(this.state.chosenTheme);\n this.setState({\n loading: \"\",\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n changheWebdavPwd = () => {\n this.setState({\n loading: \"changheWebdavPwd\",\n });\n axios\n .post(\"/Member/setWebdavPwd\", {\n pwd: this.state.webdavPwd,\n })\n .then((response) => {\n if (response.data.error === \"1\") {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n response.data.msg,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n } else {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n response.data.msg,\n \"success\"\n );\n this.setState({\n loading: \"\",\n changeWebDavPwd: false,\n });\n }\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n init2FA = () => {\n if (this.state.settings.two_factor) {\n this.setState({ twoFactor: true });\n return;\n }\n API.get(\"/user/setting/2fa\")\n .then((response) => {\n this.setState({\n two_fa_secret: response.data,\n twoFactor: true,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n twoFactor = () => {\n this.setState({\n loading: \"twoFactor\",\n });\n API.patch(\"/user/setting/2fa\", {\n code: this.state.authCode,\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"设定已保存\",\n \"success\"\n );\n this.setState({\n loading: \"\",\n settings: {\n ...this.state.settings,\n two_factor: !this.state.settings.two_factor,\n },\n });\n this.handleClose();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.setState({\n loading: \"\",\n });\n });\n };\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n handleAlignment = (event, chosenTheme) => this.setState({ chosenTheme });\n\n toggleThemeMode = (current) => {\n if (current !== null) {\n this.props.toggleDaylightMode();\n Auth.SetPreference(\"theme_mode\", null);\n }\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n const dark = Auth.GetPreference(\"theme_mode\");\n\n return (\n
\n
\n \n 个人资料\n \n \n \n \n this.setState({ avatarModal: true })\n }\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n {/* {this.state.settings.uid} */}\n {user.id}\n \n \n \n \n \n this.setState({ nickModal: true })\n }\n >\n \n \n \n \n\n \n this.setState({ nickModal: true })\n }\n className={classes.flexContainer}\n >\n \n {user.nickname}\n \n \n \n \n \n \n \n \n \n \n\n \n \n {user.user_name}\n \n \n \n \n \n this.props.history.push(\"/buy?tab=1\")\n }\n >\n \n \n \n \n\n \n \n {user.group.name}\n {this.state.settings.group_expires && (\n \n {\" \"}\n \n \n {\" \"}\n 过期\n \n )}\n \n \n \n {this.state.settings.group_expires && (\n
\n \n \n this.setState({\n groupBackModal: true,\n })\n }\n >\n \n \n \n \n\n \n \n \n \n
\n )}\n \n this.bindQQ()}>\n \n \n \n \n\n \n \n {this.state.settings.qq\n ? \"解除绑定\"\n : \"绑定\"}\n \n \n \n \n \n {/* \n this.setState({ changePolicy: true })\n }\n >\n \n \n \n \n\n \n \n {\n this.state.settings.policy.current\n .name\n }\n \n \n \n */}\n \n \n \n \n \n \n\n \n \n {parseFloat(user.score + user.share_score).toFixed(2)}\n \n \n \n \n \n \n \n \n \n\n \n \n {formatLocalTime(\n user.created_at,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n \n
\n
\n \n 安全隐私\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n this.setState({ changePassword: true })\n }\n >\n \n \n \n \n\n \n \n \n \n \n this.init2FA()}>\n \n \n \n \n\n \n \n {!this.state.settings.two_factor\n ? \"未开启\"\n : \"已开启\"}\n \n \n \n \n \n \n\n {\n this.setState({\n settings: {\n ...this.state.settings,\n authn: [\n ...this.state.settings.authn,\n credential,\n ],\n },\n });\n }}\n remove={(id) => {\n let credentials = [...this.state.settings.authn];\n credentials = credentials.filter((v) => {\n return v.id !== id;\n });\n this.setState({\n settings: {\n ...this.state.settings,\n authn: credentials,\n },\n });\n }}\n />\n\n \n 个性化\n \n \n \n \n this.setState({ changeTheme: true })\n }\n >\n \n \n \n \n\n \n
\n
\n \n \n \n this.toggleThemeMode(dark)}\n >\n \n \n \n \n\n \n \n {dark &&\n (dark === \"dark\"\n ? \"偏好开启\"\n : \"偏好关闭\")}\n {dark === null && \"跟随系统\"}\n \n \n \n \n \n this.toggleViewMethod()}\n >\n \n \n \n \n\n \n \n {this.props.viewMethod === \"icon\" &&\n \"大图标\"}\n {this.props.viewMethod === \"list\" &&\n \"列表\"}\n {this.props.viewMethod ===\n \"smallIcon\" && \"小图标\"}\n \n \n \n \n \n \n this.setState({ changeTimeZone: true })\n }\n button\n >\n \n \n \n \n\n \n \n {timeZone}\n \n \n \n \n
\n
\n {/* {user.group.webdav && (\n
\n \n WebDAV\n \n \n \n \n this.setState({\n showWebDavUrl: true,\n })\n }\n >\n \n \n \n \n\n \n \n \n \n \n \n this.setState({\n showWebDavUserName: true,\n })\n }\n >\n \n \n \n \n\n \n \n \n \n \n \n this.props.history.push(\"/webdav?\")\n }\n >\n \n \n \n \n\n \n \n \n \n \n \n
\n )} */}\n
\n
\n this.setState({ changeTimeZone: false })}\n open={this.state.changeTimeZone}\n />\n \n 切换存储策略\n \n {this.state.settings.policy.options.map(\n (value, index) => (\n this.changePolicy(value.id)}\n >\n \n {value.id ===\n this.state.settings.policy.current\n .id && (\n \n \n \n )}\n {value.id !==\n this.state.settings.policy.current\n .id && (\n \n \n \n )}\n \n \n \n )\n )}\n \n \n \n 修改头像\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 修改昵称\n \n \n \n \n \n \n 保存\n \n \n \n \n 解约用户组\n \n 将要退回到初始用户组,且所支付金额无法退还,确定要继续吗?\n \n \n \n \n \n \n \n 修改登录密码\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n \n 保存\n \n \n \n \n \n {this.state.settings.two_factor ? \"关闭\" : \"启用\"}\n 二步验证\n \n \n
\n {!this.state.settings.two_factor && (\n
\n \n
\n )}\n\n
\n {!this.state.settings.two_factor && (\n \n 请使用任意二步验证APP或者支持二步验证的密码管理软件扫描左侧二维码添加本站。扫描完成后请填写二步验证APP给出的6位验证码以开启二步验证。\n \n )}\n {this.state.settings.two_factor && (\n \n 请验证当前二步验证代码。\n \n )}\n \n
\n
\n
\n \n \n \n {this.state.settings.two_factor ? \"关闭\" : \"启用\"}\n 二步验证\n \n \n
\n \n 更改主题配色\n \n \n {Object.keys(this.state.settings.themes).map(\n (value, key) => (\n \n \n \n )\n )}\n \n \n \n \n \n 保存\n \n \n \n \n WebDAV连接地址\n \n \n \n \n \n \n \n \n WebDAV用户名\n \n \n \n \n \n \n \n
\n );\n }\n}\n\nconst UserSetting = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(UserSettingCompoment)));\n\nexport default UserSetting;\n","import React, { useCallback, useState, useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { applyThemes, setSessionStatus, toggleSnackbar } from \"../../actions\";\nimport Notice from \"../Share/NotFound\";\nimport { useHistory, useLocation } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport Auth from \"../../middleware/Auth\";\nimport { enableUploaderLoad } from \"../../middleware/Init\";\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function QQCallback() {\n const query = useQuery();\n const location = useLocation();\n const history = useHistory();\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const ApplyThemes = useCallback((theme) => dispatch(applyThemes(theme)), [\n dispatch,\n ]);\n const SetSessionStatus = useCallback(\n (status) => dispatch(setSessionStatus(status)),\n [dispatch]\n );\n\n const [msg, setMsg] = useState(\"\");\n\n const afterLogin = (data) => {\n Auth.authenticate(data);\n\n // 设置用户主题色\n if (data[\"preferred_theme\"] !== \"\") {\n ApplyThemes(data[\"preferred_theme\"]);\n }\n enableUploaderLoad();\n\n // 设置登录状态\n SetSessionStatus(true);\n\n history.push(\"/home\");\n ToggleSnackbar(\"top\", \"right\", \"登录成功\", \"success\");\n\n localStorage.removeItem(\"siteConfigCache\");\n };\n\n useEffect(() => {\n if (query.get(\"error_description\")) {\n setMsg(query.get(\"error_description\"));\n return;\n }\n if (query.get(\"code\") === null) {\n return;\n }\n API.post(\"/callback/qq\", {\n code: query.get(\"code\"),\n state: query.get(\"state\"),\n })\n .then((response) => {\n if (response.rawData.code === 203) {\n afterLogin(response.data);\n } else {\n history.push(response.data);\n }\n })\n .catch((error) => {\n setMsg(error.message);\n });\n // eslint-disable-next-line\n }, [location]);\n\n return <>{msg !== \"\" && };\n}\n","import React, { useCallback, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport RegIcon from \"@material-ui/icons/AssignmentIndOutlined\";\nimport {\n Avatar,\n Button,\n Divider,\n FormControl,\n Input,\n InputLabel,\n Link,\n makeStyles,\n Paper,\n Typography,\n Checkbox,\n FormControlLabel,\n Box\n} from \"@material-ui/core\";\nimport { toggleSnackbar } from \"../../actions/index\";\nimport { useHistory } from \"react-router-dom\";\nimport API from \"../../middleware/Api\";\nimport EmailIcon from \"@material-ui/icons/EmailOutlined\";\nimport { useCaptcha } from \"../../hooks/useCaptcha\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(\"sm\")]: {\n width: 400,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 110,\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\n 3\n )}px`,\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n marginTop: theme.spacing(1),\n },\n submit: {\n marginTop: theme.spacing(3),\n },\n link: {\n marginTop: \"20px\",\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"space-between\",\n },\n readFileClass: {\n marginTop: \"5px\",\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"space-between\",\n fontSize:10\n },\n captchaContainer: {\n display: \"flex\",\n marginTop: \"10px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"block\",\n },\n },\n captchaPlaceholder: {\n width: 200,\n },\n buttonContainer: {\n display: \"flex\",\n },\n authnLink: {\n textAlign: \"center\",\n marginTop: 16,\n },\n avatarSuccess: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.primary.main,\n },\n linkSendSMS:{\n position:\"absolute\",\n bottom:'10px',\n right:'0px',\n color: \"rgba(0,0,0,0.64)\",\n },\n linkSendSMSDark:{\n position:\"absolute\",\n bottom:'10px',\n right:'0px',\n color: \"rgba(255,255,255,1)\",\n },\n}));\n\nfunction Register() {\n const [input, setInput] = useState({\n phone: \"\",//手机号码\n verCode:\"\",//验证码\n nickName:\"\",//昵称\n password: \"\",//密码\n password_repeat: \"\",//确认密码\n });\n const [loading, setLoading] = useState(false);\n const [readFile, setReadFile] = useState(false);\n const [emailActive, setEmailActive] = useState(false);\n const [verification, setVerification] = useState(\"发送验证码\");\n const [verificationStatus, setVerificationStatus] = useState(true);\n\n const title = useSelector((state) => state.siteConfig.title);\n const regCaptcha = useSelector((state) => state.siteConfig.regCaptcha);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const history = useHistory();\n const ThemeType = useSelector(\n (state) => state.siteConfig.theme.palette.type\n );\n const handleInputChange = (name) => (e) => {\n setInput({\n ...input,\n [name]: e.target.value,\n });\n };\n\n const {\n captchaLoading,\n isValidate,\n validate,\n CaptchaRender,\n captchaRefreshRef,\n captchaParamsRef,\n } = useCaptcha();\n const classes = useStyles();\n let timer\n const sendSMSCodeEvent = (e) => {\n e.preventDefault();\n //获取验证码\n if (verificationStatus){\n if (input.phone == null || input.phone == \"\") {\n ToggleSnackbar(\"top\", \"right\", \"请输入手机号码\", \"warning\");\n return;\n }\n setVerificationStatus(false);\n setLoading(true);\n API.post(\"/user/SendSMS\", {\n PhoneNum: input.phone,\n SMSType: \"2\",\n }).then((response) => {\n setLoading(false);\n if (response.rawData.code === 0) {//短信发送成功\n let timerCount = 120;\n setVerification(timerCount+'S重试')\n timer = setInterval(() => { \n setVerification(timerCount+'S重试')\n timerCount--;\n if(timerCount === -1){\n clearInterval(timer); //清除定时器\n setVerification('发送验证码')\n setVerificationStatus(true);\n }\n }, 1000);\n } else{\n setVerificationStatus(true);\n //根据状态码来显示错误信息\n ToggleSnackbar(\"top\", \"right\", response.msg, \"warning\");\n }\n }).catch((error) => {\n setVerificationStatus(true);\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n });\n }\n }\n const handleChange = (event) => {\n setReadFile(event.target.checked);\n };\n const register = (e) => {\n e.preventDefault();\n if(!readFile){\n ToggleSnackbar(\"top\", \"right\", \"请先阅读并同意用户协议和隐私策略\", \"warning\");\n return;\n }\n if (input.password !== input.password_repeat) {\n ToggleSnackbar(\"top\", \"right\", \"两次密码输入不一致\", \"warning\");\n return;\n }\n setLoading(true);\n if (!isValidate.current.isValidate && regCaptcha) {\n validate(() => register(e), setLoading);\n return;\n }\n API.post(\"/user\", {\n userName: input.phone,\n Password: input.password,\n SMSCode: input.verCode,\n NickName: input.nickName,\n ...captchaParamsRef.current,\n }).then((response) => {\n setLoading(false);\n if (response.rawData.code === 0) {\n history.push(\"/login?username=\" + input.phone);\n ToggleSnackbar(\"top\", \"right\", \"注册成功\", \"success\");\n } else {\n ToggleSnackbar(\"top\", \"right\", response.msg, \"warning\");\n }\n }).catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n captchaRefreshRef.current();\n });\n };\n\n return (\n
\n <>\n {!emailActive && (\n \n \n \n \n \n 注册 {title}\n \n\n
\n \n \n 手机号码\n \n \n \n \n \n 验证码\n \n \n \n \n {verification}\n \n \n \n 昵称\n \n \n \n 密码\n \n \n \n \n 确认密码\n \n \n \n {regCaptcha && }\n\n \n 注册账号\n \n \n\n \n
\n
\n 返回登录\n
\n
\n 忘记密码\n
\n
\n \n
\n
\n \n }\n label={\n \n 我已阅读并同意 用户协议 和 隐私策略\n \n }\n />\n
\n
\n \n
\n
\n
\n )}\n {emailActive && (\n \n \n \n \n \n 邮件激活\n \n \n 一封激活邮件已经发送至您的邮箱,请访问邮件中的链接以继续完成注册。\n \n \n )}\n \n
\n );\n}\n\nexport default Register;\n","import React, { useCallback, useState, useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { toggleSnackbar } from \"../../actions/index\";\nimport { useHistory } from \"react-router-dom\";\nimport API from \"../../middleware/Api\";\nimport { Button, Paper, Avatar, Typography } from \"@material-ui/core\";\nimport EmailIcon from \"@material-ui/icons/EmailOutlined\";\nimport { useLocation } from \"react-router\";\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(\"sm\")]: {\n width: 400,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 110,\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\n 3\n )}px`,\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n submit: {\n marginTop: theme.spacing(3),\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nfunction Activation() {\n const query = useQuery();\n const location = useLocation();\n\n const [success, setSuccess] = useState(false);\n const [email, setEmail] = useState(\"\");\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const history = useHistory();\n\n const classes = useStyles();\n\n useEffect(() => {\n API.get(\n \"/user/activate/\" + query.get(\"id\") + \"?sign=\" + query.get(\"sign\")\n )\n .then((response) => {\n setEmail(response.data);\n setSuccess(true);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n history.push(\"/login\");\n });\n // eslint-disable-next-line\n }, [location]);\n\n return (\n
\n {success && (\n \n \n \n \n \n 激活成功\n \n \n 您的账号已被成功激活。\n \n history.push(\"/login?username=\" + email)}\n >\n 返回登录\n \n \n )}\n
\n );\n}\n\nexport default Activation;\n","import React, { useCallback, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { toggleSnackbar } from \"../../actions/index\";\nimport { useHistory } from \"react-router-dom\";\nimport API from \"../../middleware/Api\";\nimport {\n Button,\n FormControl,\n Divider,\n Link,\n Input,\n InputLabel,\n Paper,\n Avatar,\n Typography,\n} from \"@material-ui/core\";\nimport { useLocation } from \"react-router\";\nimport KeyIcon from \"@material-ui/icons/VpnKeyOutlined\";\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(\"sm\")]: {\n width: 400,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 110,\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\n 3\n )}px`,\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n submit: {\n marginTop: theme.spacing(3),\n },\n link: {\n marginTop: \"20px\",\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"space-between\",\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nfunction ResetForm() {\n const query = useQuery();\n const [input, setInput] = useState({\n password: \"\",\n password_repeat: \"\",\n });\n const [loading, setLoading] = useState(false);\n const handleInputChange = (name) => (e) => {\n setInput({\n ...input,\n [name]: e.target.value,\n });\n };\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const history = useHistory();\n\n const submit = (e) => {\n e.preventDefault();\n if (input.password !== input.password_repeat) {\n ToggleSnackbar(\"top\", \"right\", \"两次密码输入不一致\", \"warning\");\n return;\n }\n setLoading(true);\n API.patch(\"/user/reset\", {\n secret: query.get(\"sign\"),\n id: query.get(\"id\"),\n Password: input.password,\n })\n .then(() => {\n setLoading(false);\n history.push(\"/login\");\n ToggleSnackbar(\"top\", \"right\", \"密码已重设\", \"success\");\n })\n .catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n });\n };\n\n const classes = useStyles();\n\n return (\n
\n \n \n \n \n \n 找回密码\n \n
\n \n 新密码\n \n \n \n 重复新密码\n \n \n \n 重设密码\n {\" \"}\n {\" \"}\n \n
\n
\n 返回登录\n
\n
\n 注册账号\n
\n
\n
\n
\n );\n}\n\nexport default ResetForm;\n","import React, { useCallback, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n Avatar,\n Button,\n Divider,\n FormControl,\n Input,\n InputLabel,\n Link,\n makeStyles,\n Paper,\n Typography,\n} from \"@material-ui/core\";\nimport { toggleSnackbar } from \"../../actions/index\";\nimport { useHistory } from \"react-router-dom\";\nimport API from \"../../middleware/Api\";\nimport KeyIcon from \"@material-ui/icons/VpnKeyOutlined\";\nimport { useCaptcha } from \"../../hooks/useCaptcha\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(\"sm\")]: {\n width: 400,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 110,\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\n 3\n )}px`,\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n submit: {\n marginTop: theme.spacing(3),\n },\n captchaContainer: {\n display: \"flex\",\n marginTop: \"10px\",\n },\n captchaPlaceholder: {\n width: 200,\n },\n link: {\n marginTop: \"20px\",\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"space-between\",\n },\n linkSendSMS:{\n position:\"absolute\",\n bottom:'10px',\n right:'0px',\n color: \"rgba(0,0,0,0.64)\",\n },\n linkSendSMSDark:{\n position:\"absolute\",\n bottom:'10px',\n right:'0px',\n color: \"rgba(255,255,255,1)\",\n },\n}));\n\nfunction Reset() {\n const [input, setInput] = useState({\n phone: \"\",\n verCode:\"\",//验证码\n password: \"\",//密码\n password_repeat: \"\",//确认密码\n });\n const [loading, setLoading] = useState(false);\n const [verification, setVerification] = useState(\"发送验证码\");\n const [verificationStatus, setVerificationStatus] = useState(true);\n const forgetCaptcha = useSelector(\n (state) => state.siteConfig.forgetCaptcha\n );\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const ThemeType = useSelector(\n (state) => state.siteConfig.theme.palette.type\n );\n const handleInputChange = (name) => (e) => {\n setInput({\n ...input,\n [name]: e.target.value,\n });\n };\n\n const {\n captchaLoading,\n isValidate,\n validate,\n CaptchaRender,\n captchaRefreshRef,\n captchaParamsRef,\n } = useCaptcha();\n const history = useHistory();\n let timer\n const sendSMSCodeEvent = (e) => {\n e.preventDefault();\n //获取验证码\n if (verificationStatus){\n if (input.phone == null || input.phone == \"\") {\n ToggleSnackbar(\"top\", \"right\", \"请输入手机号码\", \"warning\");\n return;\n }\n setVerificationStatus(false);\n setLoading(true);\n API.post(\"/user/SendSMS\", {\n PhoneNum: input.phone,\n SMSType: \"3\",//找回密码\n }).then((response) => {\n setLoading(false);\n if (response.rawData.code === 0) {//短信发送成功\n let timerCount = 120;\n setVerification(timerCount+'S重试')\n timer = setInterval(() => { \n setVerification(timerCount+'S重试')\n timerCount--;\n if(timerCount === -1){\n clearInterval(timer); //清除定时器\n setVerification('发送验证码')\n setVerificationStatus(true);\n }\n }, 1000);\n } else{\n setVerificationStatus(true);\n //根据状态码来显示错误信息\n ToggleSnackbar(\"top\", \"right\", response.msg, \"warning\");\n }\n }).catch((error) => {\n setVerificationStatus(true);\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n });\n }\n }\n const submit = (e) => {\n e.preventDefault();\n if (input.password !== input.password_repeat) {\n ToggleSnackbar(\"top\", \"right\", \"两次密码输入不一致\", \"warning\");\n return;\n }\n setLoading(true);\n if (!isValidate.current.isValidate && forgetCaptcha) {\n validate(() => submit(e), setLoading);\n return;\n }\n API.post(\"/user/reset\", {\n userName: input.phone,\n Password: input.password,\n SMSCode: input.verCode,\n }).then(() => {\n setLoading(false);\n history.push(\"/login?username=\" + input.phone);\n ToggleSnackbar(\"top\", \"right\", \"找回密码成功\", \"success\");\n }).catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n captchaRefreshRef.current();\n });\n };\n\n const classes = useStyles();\n\n return (\n
\n \n \n \n \n \n 找回密码\n \n
\n \n \n 手机号码\n \n \n \n \n \n 验证码\n \n \n \n \n {verification}\n \n \n \n 密码\n \n \n \n \n 确认密码\n \n \n \n \n 确定\n {\" \"}\n {\" \"}\n \n
\n
\n 返回登录\n
\n
\n 注册账号\n
\n
\n
\n
\n );\n}\n\nexport default Reset;\n","/* eslint-disable */\r\nimport React, { Component } from 'react'\r\n\r\nexport class WXLoginBack extends Component {\r\n constructor(props) {\r\n super(props)//?s=1&f=7\r\n const query = this.props.location.search // '?code=123123123123&state='\r\n const arr = query.split('&')\r\n const code = arr[0].substr(6)\r\n window.parent.postMessage({\r\n code:code\r\n },'*'); //window.postMessage\r\n }\r\n render() {\r\n return (\r\n\t
扫码成功,正在登录
\r\n )\r\n }\r\n}\r\n\r\nexport default WXLoginBack;","import React, { useCallback, useEffect, useState } from \"react\";\nimport { FormControl, makeStyles, TextField } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@material-ui/core\";\nimport { toggleSnackbar } from \"../../actions/index\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport { reportReasons } from \"../../config\";\nimport Auth from \"../../middleware/Auth\";\n\nconst useStyles = makeStyles((theme) => ({\n widthAnimation: {},\n content: {\n overflowWrap: \"break-word\",\n },\n}));\n\nexport default function SiteNotice() {\n const content = useSelector((state) => state.siteConfig.site_notice);\n const classes = useStyles();\n const [show, setShow] = useState(false);\n const setRead = () => {\n setShow(false);\n Auth.SetPreference(\"notice_read\", content);\n };\n useEffect(() => {\n const newNotice = Auth.GetPreference(\"notice_read\");\n if (content !== \"\" && newNotice !== content) {\n setShow(true);\n }\n }, [content]);\n return (\n setShow(false)}\n aria-labelledby=\"form-dialog-title\"\n maxWidth=\"sm\"\n fullWidth\n >\n 公告\n \n\n \n \n \n \n \n );\n}\n","import {\n Button, Dialog,\n DialogActions,\n DialogContent, DialogTitle, withStyles\n} from \"@material-ui/core\";\nimport IconButton from '@material-ui/core/IconButton';\nimport {Slider,List,Grid} from '@material-ui/core';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MusicNote from '@material-ui/icons/MusicNote';\nimport PlayArrow from '@material-ui/icons/PlayArrow';\nimport PlayNext from '@material-ui/icons/SkipNext';\nimport PlayPrev from '@material-ui/icons/SkipPrevious';\nimport Pause from '@material-ui/icons/Pause';\nimport {Repeat, RepeatOne, Shuffle} from '@material-ui/icons';\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router\";\nimport { showAudioPreview ,audioPreviewSetIsOpen, audioPreviewSetPlaying} from \"../../actions/index\";\nimport { audioPreviewSuffix } from \"../../config\";\nimport { baseURL } from \"../../middleware/Api\";\nimport * as explorer from \"../../redux/explorer/reducer\";\nimport pathHelper from \"../../utils/page\";\n\n\n\nconst styles = (theme) => ({ \n list: {\n //maxWidth: 360,\n backgroundColor: theme.palette.background.paper,\n position: 'relative',\n overflow: 'auto',\n maxHeight: 300,\n },\n slider_root:{\n \"vertical-align\": \"middle\",\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n first: state.explorer.audioPreview.first,\n other: state.explorer.audioPreview.other,\n isOpen:state.explorer.audioPreview.isOpen,\n playingName:state.explorer.audioPreview.playingName,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n showAudioPreview: (first) => {\n dispatch(showAudioPreview(first));\n },\n audioPreviewSetIsOpen: (first) => {\n dispatch(audioPreviewSetIsOpen(first));\n },\n audioPreviewSetPlaying: (playingName,paused) => {\n dispatch(audioPreviewSetPlaying(playingName,paused));\n },\n };\n};\n\nclass MusicPlayerComponent extends Component {\n state = {\n items: [],\n currentIndex: 0,\n //isOpen: false,\n //isPlay:false,\n currentTime:0,\n duration:0,\n progressText:'00:00/00:00',\n looptype:0,\n };\n myAudioRef = React.createRef(); \n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n const items = [];\n let firstOne = 0;\n if (nextProps.first.id !== \"\") {\n if (\n pathHelper.isSharePage(this.props.location.pathname) &&\n !nextProps.first.path\n ) {\n const newItem = {\n intro: nextProps.first.name,\n src: baseURL + \"/share/preview/\" + nextProps.first.key,\n };\n firstOne = 0;\n items.push(newItem);\n this.setState({\n currentIndex: firstOne,\n items: items,\n //isOpen: true,\n });\n this.props.audioPreviewSetIsOpen(true);\n return;\n }\n // eslint-disable-next-line\n nextProps.other.map((value) => {\n const fileType = value.name.split(\".\").pop().toLowerCase();\n if (audioPreviewSuffix.indexOf(fileType) !== -1) {\n let src = \"\";\n if (pathHelper.isSharePage(this.props.location.pathname)) {\n src = baseURL + \"/share/preview/\" + value.key;\n src =\n src +\n \"?path=\" +\n encodeURIComponent(\n value.path === \"/\"\n ? value.path + value.name\n : value.path + \"/\" + value.name\n );\n } else {\n src = baseURL + \"/file/preview/\" + value.id;\n }\n const newItem = {\n intro: value.name,\n src: src,\n };\n if (\n value.path === nextProps.first.path &&\n value.name === nextProps.first.name\n ) {\n firstOne = items.length;\n }\n items.push(newItem);\n }\n });\n this.setState({\n currentIndex: firstOne,\n items: items,\n //isOpen: true,\n });\n this.props.audioPreviewSetIsOpen(true);\n this.props.showAudioPreview(explorer.initState.audioPreview.first);\n } \n };\n\n handleItemClick = (currentIndex) => () => {\n this.setState({\n currentIndex: currentIndex,\n });\n };\n \n\n handleClose = () => {\n /*this.setState({\n isOpen: false,\n });*/\n this.setState({\n currentIndex: -1,\n });\n this.pause();\n this.props.audioPreviewSetPlaying(null,false);\n this.props.audioPreviewSetIsOpen(false);\n };\n backgroundPlay = () => { \n this.props.audioPreviewSetIsOpen(false);\n };\n\n componentDidMount() {\n if(this.myAudioRef.current){\n this.bindEvents(this.myAudioRef.current);\n }\n }\n componentDidUpdate() {\n if(this.myAudioRef.current){\n this.bindEvents(this.myAudioRef.current);\n }\n } \n componentWillUnmount() {\n this.unbindEvents(this.myAudioRef.current)\n }\n\n bindEvents=(ele)=>{\n if(ele){\n ele.addEventListener('canplay', this.readyPlay)\n ele.addEventListener('ended', this.loopnext)\n ele.addEventListener('timeupdate', this.timeUpdate)\n }\n };\n\n unbindEvents=(ele)=> {\n if(ele){\n ele.removeEventListener('canplay', this.readyPlay)\n ele.removeEventListener('ended', this.loopnext)\n ele.removeEventListener('timeupdate', this.timeUpdate)\n }\n };\n\n readyPlay = () => {\n this.play();\n };\n\n formatTime = s => {\n if(isNaN(s))return \"00:00\";\n const minute = Math.floor(s / 60);\n const second = Math.floor(s % 60);\n return `${minute}`.padStart(2,'0')+':'+`${second}`.padStart(2,'0');\n }\n\n timeUpdate = () => {\n const currentTime=Math.floor(this.myAudioRef.current.currentTime);//this.myAudioRef.current.currentTime;//\n this.setState({\n currentTime: currentTime,\n duration: this.myAudioRef.current.duration,\n progressText: this.formatTime(currentTime)+'/'+this.formatTime(this.myAudioRef.current.duration)\n });\n }\n\n play = () => {\n this.myAudioRef.current.play();\n /*this.setState({\n isPlay: true\n });*/\n this.props.audioPreviewSetPlaying(this.state.items[this.state.currentIndex].intro,false);\n };\n\n pause = () => {\n if(this.myAudioRef.current){\n this.myAudioRef.current.pause();\n }\n /*this.setState({\n isPlay: false\n })*/\n this.props.audioPreviewSetPlaying(this.state.items[this.state.currentIndex]?.intro,true);\n };\n\n playOrPaues = () => {\n if (this.state.isPlay) {\n this.pause()\n } else {\n this.play()\n }\n };\n changeLoopType=()=>{\n let lt=this.state.looptype+1;\n if(lt>=3){\n lt=0;\n }\n this.setState({\n looptype: lt,\n });\n };\n loopnext=()=>{\n let index = this.state.currentIndex;\n if(this.state.looptype==0){//all\n index=index+1;\n if (index >= this.state.items.length) {\n index = 0;\n }\n }else if(this.state.looptype==1){//single\n //index=index;\n }else if(this.state.looptype==2){//random\n if(this.state.items.length<=2){\n index=index+1;\n if (index >= this.state.items.length) {\n index = 0;\n }\n }else{\n while(index==this.state.currentIndex){\n index=Math.floor(Math.random()*this.state.items.length);\n }\n }\n }\n if(this.state.currentIndex==index){\n this.myAudioRef.current.currentTime=0;\n this.play();\n }\n this.setState({\n currentIndex: index,\n });\n }\n\n prev = () => {\n let index = this.state.currentIndex - 1\n if (index < 0) {\n index = this.state.items.length - 1\n }\n this.setState({\n currentIndex: index,\n });\n };\n \n next = () => {\n let index = this.state.currentIndex + 1\n if (index >= this.state.items.length) {\n index = 0;\n }\n this.setState({\n currentIndex: index,\n });\n };\n\n handleProgress = (e, newValue) => {\n this.myAudioRef.current.currentTime=newValue;\n }\n \n\n render() {\n const { currentIndex, items } = this.state;\n const { isOpen,classes } = this.props;\n return ( \n \n 音频播放\n \n \n {items.map((value,idx) => {\n const labelId = `label-${value.intro}`;\n return (\n \n \n {\n idx==currentIndex?():()\n }\n \n \n \n );\n })}\n \n \n \n \n \n \n \n \n );\n }\n}\n\nMusicPlayerComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst MusicPlayer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(MusicPlayerComponent)));\n\nexport default MusicPlayer;\n","import React, { Suspense } from \"react\";\nimport AuthRoute from \"./middleware/AuthRoute\";\nimport Navbar from \"./component/Navbar/Navbar.js\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport AlertBar from \"./component/Common/Snackbar\";\nimport { createMuiTheme, lighten } from \"@material-ui/core/styles\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect, Route, Switch, useRouteMatch } from \"react-router-dom\";\nimport Auth from \"./middleware/Auth\";\nimport { CssBaseline, makeStyles, ThemeProvider } from \"@material-ui/core\";\nimport PageLoading from \"./component/Placeholder/PageLoading.js\";\nimport { changeThemeColor } from \"./utils\";\nimport NotFound from \"./component/Share/NotFound\";\n// Lazy loads\nimport LoginForm from \"./component/Login/LoginForm\";\nimport FileManager from \"./component/FileManager/FileManager.js\";\nimport VideoPreview from \"./component/Viewer/Video.js\";\nimport SearchResult from \"./component/Share/SearchResult\";\nimport MyShare from \"./component/Share/MyShare\";\nimport Download from \"./component/Download/Download\";\nimport SharePreload from \"./component/Share/SharePreload\";\nimport DocViewer from \"./component/Viewer/Doc\";\nimport TextViewer from \"./component/Viewer/Text\";\nimport Quota from \"./component/VAS/Quota\";\nimport BuyQuota from \"./component/VAS/BuyQuota\";\nimport WebDAV from \"./component/Setting/WebDAV\";\nimport Tasks from \"./component/Setting/Tasks\";\nimport Profile from \"./component/Setting/Profile\";\nimport WXBind from \"./component/Setting/WxBind\";\nimport Withdrawals from \"./component/Setting/SetWithdrawals\";\nimport UserSetting from \"./component/Setting/UserSetting\";\nimport QQCallback from \"./component/Login/QQ\";\nimport Register from \"./component/Login/Register\";\nimport Activation from \"./component/Login/Activication\";\nimport ResetForm from \"./component/Login/ResetForm\";\nimport Reset from \"./component/Login/Reset\";\nimport WXLoginBack from \"./component/Login/WxLoginBack\";\nimport CodeViewer from \"./component/Viewer/Code\";\nimport SiteNotice from \"./component/Modals/SiteNotice\";\nimport MusicPlayer from \"./component/FileManager/MusicPlayer\";\n\n\nconst PDFViewer = React.lazy(() =>\n import(/* webpackChunkName: \"pdf\" */ \"./component/Viewer/PDF\")\n);\n\nexport default function App() {\n const themeConfig = useSelector((state) => state.siteConfig.theme);\n const isLogin = useSelector((state) => state.viewUpdate.isLogin);\n const prefersDarkMode = useMediaQuery(\"(prefers-color-scheme: dark)\");\n\n const theme = React.useMemo(() => {\n themeConfig.palette.type = prefersDarkMode ? \"dark\" : \"light\";\n const prefer = Auth.GetPreference(\"theme_mode\");\n if (prefer) {\n themeConfig.palette.type = prefer;\n }\n const theme = createMuiTheme({\n ...themeConfig,\n palette: {\n ...themeConfig.palette,\n primary: {\n ...themeConfig.palette.primary,\n main:\n themeConfig.palette.type === \"dark\"\n ? lighten(themeConfig.palette.primary.main, 0.3)\n : themeConfig.palette.primary.main,\n },\n },\n });\n changeThemeColor(\n themeConfig.palette.type === \"dark\"\n ? theme.palette.background.default\n : theme.palette.primary.main\n );\n return theme;\n }, [prefersDarkMode, themeConfig]);\n\n const useStyles = makeStyles((theme) => ({\n root: {\n display: \"flex\",\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(0),\n minWidth: 0,\n },\n toolbar: theme.mixins.toolbar,\n }));\n\n const classes = useStyles();\n\n const { path } = useRouteMatch();\n return (\n \n \n
\n \n \n \n
\n
\n \n \n \n \n\n \n <>\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n }>\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n }>\n \n \n \n\n \n \n \n\n \n \n \n \n
\n \n
\n
\n
\n );\n}\n","import { AnyAction } from \"redux\";\nimport Auth from \"../../middleware/Auth\";\n\ndeclare global {\n interface Window {\n shareKey: any;\n }\n}\n\nexport interface ViewUpdateState {\n isLogin: boolean;\n loadUploader: boolean;\n open: boolean;\n explorerViewMethod: string;\n sortMethod:\n | \"sizePos\"\n | \"sizeRes\"\n | \"namePos\"\n | \"nameRev\"\n | \"timePos\"\n | \"timeRev\";\n subTitle: string | null;\n contextType: string;\n contextOpen: boolean;\n menuOpen: boolean;\n navigatorLoading: boolean;\n navigatorError: boolean;\n navigatorErrorMsg: string | null;\n modalsLoading: boolean;\n storageRefresh: boolean;\n userPopoverAnchorEl: any;\n shareUserPopoverAnchorEl: any;\n modals: {\n createNewFolder: boolean;\n createNewFile: boolean;\n rename: boolean;\n move: boolean;\n remove: boolean;\n share: boolean;\n music: boolean;\n remoteDownload: boolean;\n torrentDownload: boolean;\n getSource: boolean;\n copy: boolean;\n resave: boolean;\n compress: boolean;\n decompress: boolean;\n relocate: boolean;\n loading: boolean;\n loadingText: string;\n };\n snackbar: {\n toggle: boolean;\n vertical: string;\n horizontal: string;\n msg: string;\n color: string;\n };\n}\nexport const initState: ViewUpdateState = {\n // 是否登录\n isLogin: Auth.Check(),\n loadUploader: false,\n open: false,\n explorerViewMethod: \"icon\",\n sortMethod: \"timePos\",\n subTitle: null,\n contextType: \"none\",\n contextOpen: false,\n menuOpen: false,\n navigatorLoading: true,\n navigatorError: false,\n navigatorErrorMsg: null,\n modalsLoading: false,\n storageRefresh: false,\n userPopoverAnchorEl: null,\n shareUserPopoverAnchorEl: null,\n modals: {\n createNewFolder: false,\n createNewFile: false,\n rename: false,\n move: false,\n remove: false,\n share: false,\n music: false,\n remoteDownload: false,\n torrentDownload: false,\n getSource: false,\n copy: false,\n resave: false,\n compress: false,\n relocate: false,\n decompress: false,\n loading: false,\n loadingText: \"\",\n },\n snackbar: {\n toggle: false,\n vertical: \"top\",\n horizontal: \"center\",\n msg: \"\",\n color: \"\",\n },\n};\nconst viewUpdate = (state: ViewUpdateState = initState, action: AnyAction) => {\n switch (action.type) {\n case \"DRAWER_TOGGLE\":\n return Object.assign({}, state, {\n open: action.open,\n });\n case \"CHANGE_VIEW_METHOD\":\n return Object.assign({}, state, {\n explorerViewMethod: action.method,\n });\n case \"SET_NAVIGATOR_LOADING_STATUE\":\n return Object.assign({}, state, {\n navigatorLoading: action.status,\n });\n case \"SET_NAVIGATOR_ERROR\":\n return Object.assign({}, state, {\n navigatorError: action.status,\n navigatorErrorMsg: action.msg,\n });\n case \"OPEN_CREATE_FOLDER_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n createNewFolder: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_CREATE_FILE_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n createNewFile: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_RENAME_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n rename: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_REMOVE_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n remove: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_MOVE_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n move: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_RESAVE_DIALOG\":\n window.shareKey = action.key;\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n resave: true,\n }),\n contextOpen: false,\n });\n case \"SET_USER_POPOVER\":\n return Object.assign({}, state, {\n userPopoverAnchorEl: action.anchor,\n });\n case \"SET_SHARE_USER_POPOVER\":\n return Object.assign({}, state, {\n shareUserPopoverAnchorEl: action.anchor,\n });\n case \"OPEN_SHARE_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n share: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_MUSIC_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n music: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_REMOTE_DOWNLOAD_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n remoteDownload: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_TORRENT_DOWNLOAD_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n torrentDownload: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_DECOMPRESS_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n decompress: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_COMPRESS_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n compress: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_GET_SOURCE_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n getSource: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_RELOCATE_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n relocate: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_COPY_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n copy: true,\n }),\n contextOpen: false,\n });\n case \"OPEN_LOADING_DIALOG\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n loading: true,\n loadingText: action.text,\n }),\n contextOpen: false,\n });\n case \"CLOSE_CONTEXT_MENU\":\n return Object.assign({}, state, {\n contextOpen: false,\n });\n case \"CLOSE_ALL_MODALS\":\n return Object.assign({}, state, {\n modals: Object.assign({}, state.modals, {\n createNewFolder: false,\n createNewFile: false,\n rename: false,\n move: false,\n remove: false,\n share: false,\n music: false,\n remoteDownload: false,\n torrentDownload: false,\n getSource: false,\n resave: false,\n copy: false,\n loading: false,\n relocate: false,\n compress: false,\n decompress: false,\n }),\n });\n case \"TOGGLE_SNACKBAR\":\n return Object.assign({}, state, {\n snackbar: {\n toggle: !state.snackbar.toggle,\n vertical: action.vertical,\n horizontal: action.horizontal,\n msg: action.msg,\n color: action.color,\n },\n });\n case \"SET_MODALS_LOADING\":\n return Object.assign({}, state, {\n modalsLoading: action.status,\n });\n case \"SET_SESSION_STATUS\":\n return {\n ...state,\n isLogin: action.status,\n };\n case \"ENABLE_LOAD_UPLOADER\":\n return Object.assign({}, state, {\n loadUploader: true,\n });\n case \"REFRESH_STORAGE\":\n return Object.assign({}, state, {\n storageRefresh: !state.storageRefresh,\n });\n case \"SEARCH_MY_FILE\":\n return Object.assign({}, state, {\n contextOpen: false,\n navigatorError: false,\n navigatorLoading: true,\n });\n case \"CHANGE_CONTEXT_MENU\":\n if (state.contextOpen && action.open) {\n return Object.assign({}, state);\n }\n return Object.assign({}, state, {\n contextOpen: action.open,\n contextType: action.menuType,\n });\n case \"SET_SUBTITLE\":\n return Object.assign({}, state, {\n subTitle: action.title,\n });\n case \"SET_SORT_METHOD\":\n return {\n ...state,\n sortMethod: action.method,\n };\n case \"SET_NAVIGATOR\":\n return {\n ...state,\n contextOpen: false,\n navigatorError: false,\n navigatorLoading: action.navigatorLoading,\n };\n default:\n return state;\n }\n};\n\nexport default viewUpdate;\n","import { InitSiteConfig } from \"../middleware/Init\";\nimport { combineReducers } from \"../redux/combineReducers\";\nimport viewUpdate from \"../redux/viewUpdate/reducer\";\nimport explorer from \"../redux/explorer/reducer\";\nimport { connectRouter } from \"connected-react-router\";\n\nconst doNavigate = (path, state) => {\n window.currntPath = path;\n return Object.assign({}, state, {\n navigator: Object.assign({}, state.navigator, {\n path: path,\n }),\n });\n};\n\nexport const initState = {\n siteConfig: {\n title: window.subTitle,\n siteICPId: \"\",\n loginCaptcha: false,\n regCaptcha: false,\n forgetCaptcha: false,\n emailActive: false,\n QQLogin: false,\n themes: null,\n authn: false,\n theme: {\n palette: {\n common: { black: \"#000\", white: \"#fff\" },\n background: { paper: \"#fff\", default: \"#fafafa\" },\n primary: {\n light: \"#7986cb\",\n main: \"#3f51b5\",\n dark: \"#303f9f\",\n contrastText: \"#fff\",\n },\n secondary: {\n light: \"#ff4081\",\n main: \"#f50057\",\n dark: \"#c51162\",\n contrastText: \"#fff\",\n },\n error: {\n light: \"#e57373\",\n main: \"#f44336\",\n dark: \"#d32f2f\",\n contrastText: \"#fff\",\n },\n text: {\n primary: \"rgba(0, 0, 0, 0.87)\",\n secondary: \"rgba(0, 0, 0, 0.54)\",\n disabled: \"rgba(0, 0, 0, 0.38)\",\n hint: \"rgba(0, 0, 0, 0.38)\",\n },\n explorer: {\n filename: \"#474849\",\n icon: \"#8f8f8f\",\n bgSelected: \"#D5DAF0\",\n emptyIcon: \"#e8e8e8\",\n },\n },\n },\n captcha_ReCaptchaKey: \"defaultKey\",\n site_notice: \"\",\n captcha_type: \"normal\",\n tcaptcha_captcha_app_id: \"\",\n },\n navigator: {\n path: \"/\",\n refresh: true,\n },\n};\n\nconst defaultStatus = InitSiteConfig(initState);\n\n// TODO: 将cloureveApp切分成小的reducer\nconst cloudreveApp = (state = defaultStatus, action) => {\n switch (action.type) {\n case \"SET_NAVIGATOR\":\n return doNavigate(action.path, state);\n case \"TOGGLE_DAYLIGHT_MODE\": {\n const copy = Object.assign({}, state);\n if (\n copy.siteConfig.theme.palette.type === undefined ||\n copy.siteConfig.theme.palette.type === \"light\"\n ) {\n return {\n ...state,\n siteConfig: {\n ...state.siteConfig,\n theme: {\n ...state.siteConfig.theme,\n palette: {\n ...state.siteConfig.theme.palette,\n type: \"dark\",\n },\n },\n },\n };\n }\n return {\n ...state,\n siteConfig: {\n ...state.siteConfig,\n theme: {\n ...state.siteConfig.theme,\n palette: {\n ...state.siteConfig.theme.palette,\n type: \"light\",\n },\n },\n },\n };\n }\n case \"APPLY_THEME\":\n if (state.siteConfig.themes !== null) {\n const themes = JSON.parse(state.siteConfig.themes);\n if (themes[action.theme] === undefined) {\n return state;\n }\n return Object.assign({}, state, {\n siteConfig: Object.assign({}, state.siteConfig, {\n theme: themes[action.theme],\n }),\n });\n }\n break;\n case \"NAVIGATOR_UP\":\n return doNavigate(action.path, state);\n case \"SET_SITE_CONFIG\":\n return Object.assign({}, state, {\n siteConfig: action.config,\n });\n\n case \"REFRESH_FILE_LIST\":\n return Object.assign({}, state, {\n navigator: Object.assign({}, state.navigator, {\n refresh: !state.navigator.refresh,\n }),\n });\n case \"SEARCH_MY_FILE\":\n return Object.assign({}, state, {\n navigator: Object.assign({}, state.navigator, {\n path: \"/搜索结果\",\n refresh:\n state.explorer.keywords === \"\"\n ? state.navigator.refresh\n : !state.navigator.refresh,\n }),\n });\n default:\n return state;\n }\n};\n\nexport default (history) => (state, action) => {\n const { viewUpdate: viewUpdateState, explorer: explorerState } =\n state || {};\n const appState = cloudreveApp(state, action);\n const combinedState = combineReducers({\n viewUpdate,\n explorer,\n router: connectRouter(history),\n })({ viewUpdate: viewUpdateState, explorer: explorerState }, action);\n return {\n ...appState,\n ...combinedState,\n };\n};\n","import React from \"react\";\nimport { withStyles } from \"@material-ui/core\";\n\nconst styles = {\n h1: {\n color: \"#a4a4a4\",\n margin: \"5px 0px\",\n },\n h2: {\n margin: \"15px 0px\",\n },\n};\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false, error: null, errorInfo: null };\n }\n\n static getDerivedStateFromError() {\n // 更新 state 使下一次渲染能够显示降级后的 UI\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n error: error,\n errorInfo: errorInfo,\n });\n }\n\n render() {\n const { classes } = this.props;\n if (this.state.hasError) {\n // 你可以自定义降级后的 UI 并渲染\n return (\n <>\n

:(

\n

\n 页面渲染出现错误,请尝试刷新此页面。\n

\n {this.state.error &&\n this.state.errorInfo &&\n this.state.errorInfo.componentStack && (\n
\n 错误详情\n
\n                                    {this.state.error.toString()}\n                                
\n
\n                                    \n                                        {this.state.errorInfo.componentStack}\n                                    \n                                
\n
\n )}\n \n );\n }\n\n return this.props.children;\n }\n}\n\nexport default withStyles(styles)(ErrorBoundary);\n","import React, { Suspense } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport { Switch, Route } from \"react-router-dom\";\nimport { Provider } from \"react-redux\";\nimport { createStore, applyMiddleware, compose } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport App from \"./App\";\nimport cloureveApp from \"./reducers\";\nimport { UpdateSiteConfig } from \"./middleware/Init\";\nimport ErrorBoundary from \"./component/Placeholder/ErrorBoundary\";\nimport { createBrowserHistory } from \"history\";\nimport { routerMiddleware } from \"connected-react-router\";\nimport { ConnectedRouter } from \"connected-react-router\";\nconst Admin = React.lazy(() => import(\"./Admin\"));\n\nif (window.location.hash !== \"\") {\n window.location.href = window.location.hash.split(\"#\")[1];\n}\n\nserviceWorker.register();\nexport const history = createBrowserHistory();\nlet reduxEnhance = applyMiddleware(routerMiddleware(history), thunk);\nif (\n process.env.NODE_ENV === \"development\" &&\n window.__REDUX_DEVTOOLS_EXTENSION__\n) {\n reduxEnhance = compose(reduxEnhance, window.__REDUX_DEVTOOLS_EXTENSION__());\n}\n\nconst store = createStore(cloureveApp(history), reduxEnhance);\nUpdateSiteConfig(store);\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n","import {\n combineReducers as combine,\n ReducersMapObject,\n AnyAction,\n} from \"redux\";\nimport invariant from \"invariant\";\n\nexport const combineReducers = (reducers: ReducersMapObject) => {\n const combinedReducer = combine(reducers);\n // TODO: define state type\n return (state: any, action: AnyAction) => {\n if (\n action.type &&\n !action.type.startsWith(\"@@\") &&\n action.type.split(\"/\").length > 1\n ) {\n const namespace = action.type.split(\"/\")[0];\n const reducer = reducers[namespace];\n invariant(!!reducer, `reducer ${namespace} doesn't exist`);\n return reducer && reducer(state, action);\n }\n return combinedReducer(state, action);\n };\n};\n","import { ThunkAction } from \"redux-thunk\";\nimport { AnyAction } from \"redux\";\nexport interface ActionSetSubtitle extends AnyAction {\n type: \"SET_SUBTITLE\";\n title: string;\n}\n\nexport const setSubtitle = (title: string): ActionSetSubtitle => {\n return {\n type: \"SET_SUBTITLE\",\n title,\n };\n};\n\nexport const closeContextMenu = () => {\n return {\n type: \"CLOSE_CONTEXT_MENU\",\n };\n};\n\nexport const changeSubTitle = (\n title: string\n): ThunkAction => {\n return (dispatch, getState) => {\n const state = getState();\n document.title =\n title === null || title === undefined\n ? state.siteConfig.title\n : title + \" - \" + state.siteConfig.title;\n dispatch(setSubtitle(title));\n };\n};\n"],"sourceRoot":""}