|
@@ -1,5 +1,11 @@
|
|
|
import { Container } from 'unstated';
|
|
import { Container } from 'unstated';
|
|
|
|
|
|
|
|
|
|
+import loggerFactory from '@alias/logger';
|
|
|
|
|
+
|
|
|
|
|
+import { toastError } from '../util/apiNotification';
|
|
|
|
|
+
|
|
|
|
|
+const logger = loggerFactory('growi:PageHistoryContainer');
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* Service container for personal settings page (RevisionCompare.jsx)
|
|
* Service container for personal settings page (RevisionCompare.jsx)
|
|
|
* @extends {Container} unstated Container
|
|
* @extends {Container} unstated Container
|
|
@@ -17,11 +23,13 @@ export default class RevisionCompareContainer extends Container {
|
|
|
|
|
|
|
|
fromRevision: null,
|
|
fromRevision: null,
|
|
|
toRevision: null,
|
|
toRevision: null,
|
|
|
|
|
+ latestRevision: null,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
this.initRevisions = this.initRevisions.bind(this);
|
|
this.initRevisions = this.initRevisions.bind(this);
|
|
|
this.handleFromRevisionChange = this.handleFromRevisionChange.bind(this);
|
|
this.handleFromRevisionChange = this.handleFromRevisionChange.bind(this);
|
|
|
this.handleToRevisionChange = this.handleToRevisionChange.bind(this);
|
|
this.handleToRevisionChange = this.handleToRevisionChange.bind(this);
|
|
|
|
|
+ this.fetchLatestRevision = this.fetchLatestRevision.bind(this);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -31,17 +39,19 @@ export default class RevisionCompareContainer extends Container {
|
|
|
return 'RevisionCompareContainer';
|
|
return 'RevisionCompareContainer';
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- initRevisions(revisions) {
|
|
|
|
|
|
|
+ async initRevisions(revisions) {
|
|
|
const fromRevision = revisions.find(it => it._id === this.compareRevisionIds[0]) || revisions[0];
|
|
const fromRevision = revisions.find(it => it._id === this.compareRevisionIds[0]) || revisions[0];
|
|
|
const toRevision = revisions.find(it => it._id === this.compareRevisionIds[1]) || revisions[0];
|
|
const toRevision = revisions.find(it => it._id === this.compareRevisionIds[1]) || revisions[0];
|
|
|
- this.setState({ fromRevision, toRevision });
|
|
|
|
|
|
|
+ const latestRevision = await this.fetchLatestRevision();
|
|
|
|
|
+
|
|
|
|
|
+ this.setState({ fromRevision, toRevision, latestRevision });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- async handleFromRevisionChange(revision) {
|
|
|
|
|
|
|
+ handleFromRevisionChange(revision) {
|
|
|
this.setState({ fromRevision: revision });
|
|
this.setState({ fromRevision: revision });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- async handleToRevisionChange(revision) {
|
|
|
|
|
|
|
+ handleToRevisionChange(revision) {
|
|
|
this.setState({ toRevision: revision });
|
|
this.setState({ toRevision: revision });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -58,4 +68,19 @@ export default class RevisionCompareContainer extends Container {
|
|
|
return searchParams['compare'].split('...') || [];
|
|
return searchParams['compare'].split('...') || [];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ async fetchLatestRevision() {
|
|
|
|
|
+ const { pageId, shareLinkId } = this.pageContainer.state;
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await this.appContainer.apiv3Get('/revisions/list', {
|
|
|
|
|
+ pageId, shareLinkId, page: 1, limit: 1,
|
|
|
|
|
+ });
|
|
|
|
|
+ return res.data.docs[0];
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (err) {
|
|
|
|
|
+ toastError(err);
|
|
|
|
|
+ this.setState({ errorMessage: err.message });
|
|
|
|
|
+ logger.error(err);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|