1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-26 07:22:34 +00:00

fix: init content

This commit is contained in:
er-pai-r
2023-12-11 16:13:00 +08:00
parent 61d9df9a64
commit 8a3ce8a364
2 changed files with 57 additions and 7 deletions

View File

@@ -48,6 +48,46 @@ class SdocFileHistory extends React.Component {
}; };
} }
getInitContent = (firstChildren) => {
if (firstChildren) {
return {
version: -1,
children: [
{
id: firstChildren.id,
type: 'title',
children: [
{
id: firstChildren.children[0].id,
text: ''
}
]
}
]
};
}
return this.getInitContentByPath();
};
getInitContentByPath = (path) => {
const name = path ? path.split('/')?.pop()?.slice(0, -5) : '';
return {
version: -1,
children: [
{
id: '1',
type: 'title',
children: [
{
id: '2',
text: name
}
]
}
]
};
};
onSelectHistoryVersion = (currentVersion, lastVersion) => { onSelectHistoryVersion = (currentVersion, lastVersion) => {
this.setState({ isLoading: true, currentVersion }); this.setState({ isLoading: true, currentVersion });
seafileAPI.getFileRevision(historyRepoID, currentVersion.commit_id, currentVersion.path).then(res => { seafileAPI.getFileRevision(historyRepoID, currentVersion.commit_id, currentVersion.path).then(res => {
@@ -55,11 +95,19 @@ class SdocFileHistory extends React.Component {
}).then(res => { }).then(res => {
const currentVersionContent = res.data; const currentVersionContent = res.data;
if (lastVersion) { if (lastVersion) {
if (lastVersion === 'init') {
const lastVersionContent = currentVersionContent ? this.getInitContent(currentVersionContent.children[0]) : this.getInitContentByPath(currentVersion.path);
const validCurrentVersionContent = currentVersionContent || this.getInitContentByPath(currentVersion.path);
this.setContent(validCurrentVersionContent, lastVersionContent);
return;
}
seafileAPI.getFileRevision(historyRepoID, lastVersion.commit_id, lastVersion.path).then(res => { seafileAPI.getFileRevision(historyRepoID, lastVersion.commit_id, lastVersion.path).then(res => {
return res.data ? seafileAPI.getFileContent(res.data) : { data: '' }; return res.data ? seafileAPI.getFileContent(res.data) : { data: '' };
}).then(res => { }).then(res => {
const lastVersionContent = res.data; const lastVersionContent = res.data;
this.setContent(currentVersionContent, lastVersionContent); const firstChildren = currentVersionContent.children[0];
const validLastVersionContent = lastVersion && !lastVersionContent ? this.getInitContent(firstChildren) : lastVersionContent;
this.setContent(currentVersionContent, validLastVersionContent);
}).catch(error => { }).catch(error => {
const errorMessage = Utils.getErrorMsg(error, true); const errorMessage = Utils.getErrorMsg(error, true);
toaster.danger(gettext(errorMessage)); toaster.danger(gettext(errorMessage));

View File

@@ -24,7 +24,6 @@ class SidePanel extends Component {
historyGroups: [], historyGroups: [],
errorMessage: '', errorMessage: '',
hasMore: false, hasMore: false,
fileOwner: '',
isReloadingData: false, isReloadingData: false,
}; };
this.currentPage = 1; this.currentPage = 1;
@@ -41,15 +40,16 @@ class SidePanel extends Component {
seafileAPI.listSdocHistory(docUuid, this.currentPage, PER_PAGE).then(res => { seafileAPI.listSdocHistory(docUuid, this.currentPage, PER_PAGE).then(res => {
const result = res.data; const result = res.data;
const resultCount = result.histories.length; const resultCount = result.histories.length;
const historyGroups = this.formatHistories(result.histories);
this.setState({ this.setState({
historyGroups: this.formatHistories(result.histories), historyGroups: this.formatHistories(result.histories),
hasMore: resultCount >= PER_PAGE, hasMore: resultCount >= PER_PAGE,
isLoading: false, isLoading: false,
fileOwner: result.histories[0]?.creator_email, }, () => {
}); if (historyGroups.length > 0) {
if (result.histories[0]) { this.onSelectHistoryVersion([0, 0, 0]);
this.props.onSelectHistoryVersion(result.histories[0], result.histories[1]);
} }
});
}).catch((error) => { }).catch((error) => {
this.setState({isLoading: false}); this.setState({isLoading: false});
throw Error('there has an error in server'); throw Error('there has an error in server');
@@ -85,7 +85,6 @@ class SidePanel extends Component {
historyGroups: this.formatHistories(result.histories), historyGroups: this.formatHistories(result.histories),
hasMore: resultCount >= PER_PAGE, hasMore: resultCount >= PER_PAGE,
isLoading: false, isLoading: false,
fileOwner: result.histories[0].creator_email,
}); });
} }
@@ -161,6 +160,9 @@ class SidePanel extends Component {
if (!lastVersion) { if (!lastVersion) {
lastVersion = historyGroups[monthIndex + 1]?.children[0]?.children[0]; lastVersion = historyGroups[monthIndex + 1]?.children[0]?.children[0];
} }
if (monthIndex === 0 && !lastVersion) {
lastVersion = 'init';
}
} }
this.props.onSelectHistoryVersion(currentVersion, lastVersion); this.props.onSelectHistoryVersion(currentVersion, lastVersion);
}; };