chore: Refactor backlinks and revisions (#1611)

* Update backlinks service to not rely on revisions

* fix: Add missing index for finding backlinks

* Debounce revision creation (#1616)

* refactor debounce logic to service

* Debounce slack notification

* Revisions created by service

* fix: Revision sidebar latest

* test: Add tests for notifications
This commit is contained in:
Tom Moor
2020-11-01 10:26:39 -08:00
committed by GitHub
parent 7735aa12d7
commit 3d09c8f655
20 changed files with 487 additions and 246 deletions

View File

@@ -64,7 +64,11 @@ class DataLoader extends React.Component<Props> {
// Also need to load the revision if it changes
const { revisionId } = this.props.match.params;
if (prevProps.match.params.revisionId !== revisionId && revisionId) {
if (
prevProps.match.params.revisionId !== revisionId &&
revisionId &&
revisionId !== "latest"
) {
this.loadRevision();
}
}
@@ -152,7 +156,7 @@ class DataLoader extends React.Component<Props> {
shareId,
});
if (revisionId) {
if (revisionId && revisionId !== "latest") {
await this.loadRevision();
} else {
this.revision = undefined;

View File

@@ -16,7 +16,31 @@ export default class RevisionsStore extends BaseStore<Revision> {
}
getDocumentRevisions(documentId: string): Revision[] {
return filter(this.orderedData, { documentId });
let revisions = filter(this.orderedData, { documentId });
const latestRevision = revisions[0];
const document = this.rootStore.documents.get(documentId);
// There is no guarantee that we have a revision that represents the latest
// state of the document. This pushes a fake revision in at the top if there
// isn't one
if (
latestRevision &&
document &&
latestRevision.createdAt !== document.updatedAt
) {
revisions.unshift(
new Revision({
id: "latest",
documentId: document.id,
title: document.title,
text: document.text,
createdAt: document.updatedAt,
createdBy: document.createdBy,
})
);
}
return revisions;
}
@action