feat: Show drafts in sidebar when viewing (#2820)

This commit is contained in:
Tom Moor
2021-12-11 09:34:36 -08:00
committed by GitHub
parent e5b4186faa
commit 7aa4709e69
39 changed files with 445 additions and 246 deletions

View File

@@ -1,9 +1,10 @@
import { pick, trim } from "lodash";
import { trim } from "lodash";
import { action, computed, observable } from "mobx";
import BaseModel from "~/models/BaseModel";
import Document from "~/models/Document";
import { NavigationNode } from "~/types";
import { client } from "~/utils/ApiClient";
import Field from "./decorators/Field";
export default class Collection extends BaseModel {
@observable
@@ -12,22 +13,45 @@ export default class Collection extends BaseModel {
@observable
isLoadingUsers: boolean;
@Field
@observable
id: string;
@Field
@observable
name: string;
@Field
@observable
description: string;
@Field
@observable
icon: string;
@Field
@observable
color: string;
@Field
@observable
permission: "read" | "read_write" | void;
@Field
@observable
sharing: boolean;
@Field
@observable
index: string;
@Field
@observable
sort: {
field: string;
direction: "asc" | "desc";
};
documents: NavigationNode[];
createdAt: string;
@@ -36,11 +60,6 @@ export default class Collection extends BaseModel {
deletedAt: string | null | undefined;
sort: {
field: string;
direction: "asc" | "desc";
};
url: string;
urlId: string;
@@ -112,6 +131,7 @@ export default class Collection extends BaseModel {
pathToDocument(documentId: string) {
let path: NavigationNode[] | undefined;
const document = this.store.rootStore.documents.get(documentId);
const travelNodes = (
nodes: NavigationNode[],
@@ -125,6 +145,14 @@ export default class Collection extends BaseModel {
return;
}
if (
document?.parentDocumentId &&
node?.id === document?.parentDocumentId
) {
path = [...newPath, document.asNavigationNode];
return;
}
return travelNodes(node.children, newPath);
});
};
@@ -136,20 +164,6 @@ export default class Collection extends BaseModel {
return path || [];
}
toJS = () => {
return pick(this, [
"id",
"name",
"color",
"description",
"sharing",
"icon",
"permission",
"sort",
"index",
]);
};
export = () => {
return client.get("/collections.export", {
id: this.id,