From 0c8d221a4535522838b046719d5f716261c44c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E9=A1=BA=E5=BC=BA?= Date: Tue, 22 Oct 2019 12:01:00 +0800 Subject: [PATCH 1/7] repair weixin lib search bug (#4173) --- .../lib-content-view/lib-content-view.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/lib-content-view/lib-content-view.js b/frontend/src/pages/lib-content-view/lib-content-view.js index d9e626e4de..c37648d143 100644 --- a/frontend/src/pages/lib-content-view/lib-content-view.js +++ b/frontend/src/pages/lib-content-view/lib-content-view.js @@ -797,8 +797,13 @@ class LibContentView extends React.Component { this.showFile(path); } else { let url = siteRoot + 'lib/' + item.repo_id + '/file' + Utils.encodePath(path); - let newWindow = window.open('about:blank'); - newWindow.location.href = url; + let isWeChat = Utils.isWeChat(); + if (!isWeChat) { + let newWindow = window.open('about:blank'); + newWindow.location.href = url; + } else { + location.href = url; + } } } } else { @@ -806,8 +811,13 @@ class LibContentView extends React.Component { this.showDir(path); } else { let url = siteRoot + 'lib/' + item.repo_id + '/file' + Utils.encodePath(path); - let newWindow = window.open('about:blank'); - newWindow.location.href = url; + let isWeChat = Utils.isWeChat(); + if (!isWeChat) { + let newWindow = window.open('about:blank'); + newWindow.location.href = url; + } else { + location.href = url; + } } } } @@ -1069,6 +1079,7 @@ class LibContentView extends React.Component { this.showColumnMarkdownFile(direntPath); } else { const url = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(direntPath); + let isWeChat = Utils.isWeChat(); if (!isWeChat) { let newWindow = window.open('about:blank'); From 7a54b8ea90acfb94808d92b3bf8abbf2acf2fc59 Mon Sep 17 00:00:00 2001 From: lian Date: Wed, 23 Oct 2019 17:50:26 +0800 Subject: [PATCH 2/7] fix bug when shib logout (#4183) --- seahub/auth/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/seahub/auth/views.py b/seahub/auth/views.py index 68c8e56e60..fa1b2b9c78 100644 --- a/seahub/auth/views.py +++ b/seahub/auth/views.py @@ -248,6 +248,8 @@ def logout(request, next_page=None, if shib_logout_return: shib_logout_url += shib_logout_return response = HttpResponseRedirect(shib_logout_url) + response.delete_cookie('seahub_auth') + return response # Local logout for cas user. if getattr(settings, 'ENABLE_CAS', False): From a1642b89d4a4c8764dc8070ed4c4bf67269a64ca Mon Sep 17 00:00:00 2001 From: lian Date: Sat, 2 Nov 2019 18:14:42 +0800 Subject: [PATCH 3/7] return salt info when get library info (#4218) --- seahub/api2/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/seahub/api2/views.py b/seahub/api2/views.py index 2e4901a22d..6876a48f21 100644 --- a/seahub/api2/views.py +++ b/seahub/api2/views.py @@ -1276,6 +1276,7 @@ class Repo(APIView): } if repo.encrypted: repo_json["enc_version"] = repo.enc_version + repo_json["salt"] = repo.salt if repo.enc_version == 3 else '' repo_json["magic"] = repo.magic repo_json["random_key"] = repo.random_key From a381f9c79d538e1d6b276a8d1e718cfae7d681ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E9=A1=BA=E5=BC=BA?= Date: Tue, 5 Nov 2019 18:15:14 +0800 Subject: [PATCH 4/7] repair get link bug (#4220) --- .../components/file-uploader/file-uploader.js | 68 ++++++++----------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/frontend/src/components/file-uploader/file-uploader.js b/frontend/src/components/file-uploader/file-uploader.js index 34f0bca42a..8aa4aeb31d 100644 --- a/frontend/src/components/file-uploader/file-uploader.js +++ b/frontend/src/components/file-uploader/file-uploader.js @@ -55,6 +55,7 @@ class FileUploader extends React.Component { this.loaded = 0; this.bitrateInterval = 500; // Interval in milliseconds to calculate the bitrate window.onbeforeunload = this.onbeforeunload; + this.isUploadLinkLoaded = false; } componentDidMount() { @@ -188,14 +189,27 @@ class FileUploader extends React.Component { }); } else { this.setUploadFileList(this.resumable.files); - this.resumableUpload(resumableFile); + let { repoID, path } = this.props; + seafileAPI.getUploadLink(repoID, path).then(res => { + this.resumable.opts.target = res.data + '?ret-json=1'; + this.resumableUpload(resumableFile); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); + }); } } else { this.setUploadFileList(this.resumable.files); - if (isFile) { - this.resumableUpload(resumableFile); - } else { - this.resumable.upload(); + if (!this.isUploadLinkLoaded) { + this.isUploadLinkLoaded = true; + let { repoID, path } = this.props; + seafileAPI.getUploadLink(repoID, path).then(res => { + this.resumable.opts.target = res.data + '?ret-json=1'; + this.resumable.upload(); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); + }); } } } @@ -384,6 +398,8 @@ class FileUploader extends React.Component { onComplete = () => { this.notifiedFolders = []; + // reset upload link loaded + this.isUploadLinkLoaded = false; this.setState({allFilesUploaded: true}); } @@ -392,6 +408,8 @@ class FileUploader extends React.Component { } onError = (message) => { + // reset upload link loaded + this.isUploadLinkLoaded = false; // After the error, the user can switch windows Utils.registerGlobalVariable('uploader', 'totalProgress', 100); } @@ -445,52 +463,24 @@ class FileUploader extends React.Component { onFileUpload = () => { this.uploadInput.current.removeAttribute('webkitdirectory'); - let repoID = this.props.repoID; - seafileAPI.getUploadLink(repoID, this.props.path).then(res => { - this.resumable.opts.target = res.data + '?ret-json=1'; - if (Utils.isIEBrower()) { - this.uploadInput.current.click(); - } - }).catch(error => { - let errMessage = Utils.getErrorMsg(error); - toaster.danger(errMessage); - }); - if (!Utils.isIEBrower()) { + this.uploadInput.current.click(); - } } onFolderUpload = () => { this.uploadInput.current.setAttribute('webkitdirectory', 'webkitdirectory'); - let repoID = this.props.repoID; - seafileAPI.getUploadLink(repoID, this.props.path).then(res => { - this.resumable.opts.target = res.data + '?ret-json=1'; - if (Utils.isIEBrower()) { - this.uploadInput.current.click(); - } - }).catch(error => { - let errMessage = Utils.getErrorMsg(error); - toaster.danger(errMessage); - }); - if (!Utils.isIEBrower()) { this.uploadInput.current.click(); - } } onDragStart = () => { - let repoID = this.props.repoID; this.uploadInput.current.setAttribute('webkitdirectory', 'webkitdirectory'); - seafileAPI.getUploadLink(repoID, this.props.path).then(res => { - this.resumable.opts.target = res.data + '?ret-json=1'; - }).catch(error => { - let errMessage = Utils.getErrorMsg(error); - toaster.danger(errMessage); - }); } onCloseUploadDialog = () => { this.loaded = 0; this.resumable.files = []; + // reset upload link loaded + this.isUploadLinkLoaded = false; this.setState({isUploadProgressDialogShow: false, uploadFileList: []}); Utils.registerGlobalVariable('uploader', 'isUploadProgressDialogShow', false); } @@ -532,12 +522,14 @@ class FileUploader extends React.Component { totalProgress: '100', uploadFileList: uploadFileList }); + // reset upload link loaded + this.isUploadLinkLoaded = false; } onUploadRetry = (resumableFile) => { seafileAPI.getUploadLink(this.props.repoID, this.props.path).then(res => { - this.resumable.opts.target = res.data; + this.resumable.opts.target = res.data + '?ret-json=1'; let retryFileList = this.state.retryFileList.filter(item => { return item.uniqueIdentifier !== resumableFile.uniqueIdentifier; @@ -563,7 +555,7 @@ class FileUploader extends React.Component { onUploadRetryAll = () => { seafileAPI.getUploadLink(this.props.repoID, this.props.path).then(res => { - this.resumable.opts.target = res.data; + this.resumable.opts.target = res.data + '?ret-json=1'; this.state.retryFileList.forEach(item => { item.error = false; this.retryUploadFile(item); From af78fab2dfd315907d933ca2853c32f802f617e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E9=A1=BA=E5=BC=BA?= Date: Sat, 9 Nov 2019 16:26:25 +0800 Subject: [PATCH 5/7] repair reupload bug (#4241) * repair reupload bug * repair code bug --- .../components/file-uploader/file-uploader.js | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/file-uploader/file-uploader.js b/frontend/src/components/file-uploader/file-uploader.js index 8aa4aeb31d..247ae84626 100644 --- a/frontend/src/components/file-uploader/file-uploader.js +++ b/frontend/src/components/file-uploader/file-uploader.js @@ -624,14 +624,22 @@ class FileUploader extends React.Component { uploadFile = () => { let resumableFile = this.resumable.files[this.resumable.files.length - 1]; - this.setState({ - isUploadRemindDialogShow: false, - isUploadProgressDialogShow: true, - uploadFileList: [...this.state.uploadFileList, resumableFile] - }, () => { - this.resumable.upload(); + let { repoID, path } = this.props; + seafileAPI.getUploadLink(repoID, path).then((res) => { // get upload link + this.resumable.opts.target = res.data + '?ret-json=1'; + this.setState({ + isUploadRemindDialogShow: false, + isUploadProgressDialogShow: true, + uploadFileList: [...this.state.uploadFileList, resumableFile] + }, () => { + this.resumable.upload(); + }); + Utils.registerGlobalVariable('uploader', 'isUploadProgressDialogShow', true); + + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); }); - Utils.registerGlobalVariable('uploader', 'isUploadProgressDialogShow', true); } cancelFileUpload = () => { From 98a7f03b131618f6f48241c4ef0c093ae90b5388 Mon Sep 17 00:00:00 2001 From: sniper-py <38058090+sniper-py@users.noreply.github.com> Date: Fri, 15 Nov 2019 15:03:53 +0800 Subject: [PATCH 6/7] fix path (#4257) --- frontend/src/components/dialog/share-to-group.js | 6 +++--- frontend/src/components/dialog/share-to-user.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/dialog/share-to-group.js b/frontend/src/components/dialog/share-to-group.js index 58f17b1854..966a0f51f5 100644 --- a/frontend/src/components/dialog/share-to-group.js +++ b/frontend/src/components/dialog/share-to-group.js @@ -178,7 +178,7 @@ class ShareToGroup extends React.Component { } } if (isGroupOwnedRepo) { - seafileAPI.shareGroupOwnedRepoToGroup(repoID, this.state.permission, groups).then(res => { + seafileAPI.shareGroupOwnedRepoToGroup(repoID, this.state.permission, groups, path).then(res => { let errorMsg = []; if (res.data.failed.length > 0) { for (let i = 0 ; i < res.data.failed.length ; i++) { @@ -232,7 +232,7 @@ class ShareToGroup extends React.Component { let path = this.props.itemPath; let repoID = this.props.repoID; if (this.props.isGroupOwnedRepo) { - seafileAPI.deleteGroupOwnedRepoSharedGroupItem(repoID, groupID).then(() => { + seafileAPI.deleteGroupOwnedRepoSharedGroupItem(repoID, groupID, path).then(() => { this.setState({ sharedItems: this.state.sharedItems.filter(item => { return item.group_info.id !== groupID; }) }); @@ -257,7 +257,7 @@ class ShareToGroup extends React.Component { let repoID = this.props.repoID; let groupID = item.group_info.id; if (this.props.isGroupOwnedRepo) { - seafileAPI.modifyGroupOwnedRepoGroupSharedPermission(repoID, permission, groupID).then(() => { + seafileAPI.modifyGroupOwnedRepoGroupSharedPermission(repoID, permission, groupID, path).then(() => { this.updateSharedItems(item, permission); }).catch(error => { let errMessage = Utils.getErrorMsg(error); diff --git a/frontend/src/components/dialog/share-to-user.js b/frontend/src/components/dialog/share-to-user.js index 5054848c4c..b019e67f2d 100644 --- a/frontend/src/components/dialog/share-to-user.js +++ b/frontend/src/components/dialog/share-to-user.js @@ -149,7 +149,7 @@ class ShareToUser extends React.Component { } } if (this.props.isGroupOwnedRepo) { - seafileAPI.shareGroupOwnedRepoToUser(repoID, this.state.permission, users).then(res => { + seafileAPI.shareGroupOwnedRepoToUser(repoID, this.state.permission, users, path).then(res => { let errorMsg = []; if (res.data.failed.length > 0) { for (let i = 0 ; i < res.data.failed.length ; i++) { @@ -216,7 +216,7 @@ class ShareToUser extends React.Component { let path = this.props.itemPath; let repoID = this.props.repoID; if (this.props.isGroupOwnedRepo) { - seafileAPI.deleteGroupOwnedRepoSharedUserItem(repoID, username).then(res => { + seafileAPI.deleteGroupOwnedRepoSharedUserItem(repoID, username, path).then(res => { this.setState({ sharedItems: this.state.sharedItems.filter( item => { return item.user_info.name !== username; }) }); @@ -241,7 +241,7 @@ class ShareToUser extends React.Component { let repoID = this.props.repoID; let username = item.user_info.name; if (this.props.isGroupOwnedRepo) { - seafileAPI.modifyGroupOwnedRepoUserSharedPermission(repoID, permission, username).then(() => { + seafileAPI.modifyGroupOwnedRepoUserSharedPermission(repoID, permission, username, path).then(() => { this.updateSharedItems(item, permission); }).catch(error => { let errMessage = Utils.getErrorMsg(error); From b7076eee76a7979cee2e5a045a0de7fadf87ff20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E9=A1=BA=E5=BC=BA?= Date: Fri, 15 Nov 2019 15:14:57 +0800 Subject: [PATCH 7/7] update seafile-js version (#4258) --- frontend/package-lock.json | 6 +++--- frontend/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9cbf004654..baf5a05794 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11377,9 +11377,9 @@ } }, "seafile-js": { - "version": "0.2.130", - "resolved": "https://registry.npmjs.org/seafile-js/-/seafile-js-0.2.130.tgz", - "integrity": "sha512-GrzMEkCp9pkuVhrSl0WQqoZLjL55CYtCM+poMM1/PnQD8i8EKrUIf6oi/Qa+kUlWZXkej338adm2gvdaSKY8PQ==", + "version": "0.2.140", + "resolved": "https://registry.npmjs.org/seafile-js/-/seafile-js-0.2.140.tgz", + "integrity": "sha512-7WMvQMShWBorBGxygDFCIUt9XPBxHnbobnObSw3eOHflSWfdXrCu0G4ZEj32cDbeece/mEEaD5p/YNn7O7zgKw==", "requires": { "axios": "^0.18.0", "form-data": "^2.3.2", diff --git a/frontend/package.json b/frontend/package.json index 40e61dd2a5..5bb4f9947e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -36,7 +36,7 @@ "react-responsive": "^6.1.2", "react-select": "^2.4.1", "reactstrap": "^6.4.0", - "seafile-js": "^0.2.130", + "seafile-js": "^0.2.140", "socket.io-client": "^2.2.0", "sw-precache-webpack-plugin": "0.11.4", "unified": "^7.0.0",