40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import * as React from "react";
|
|
import { sortNavigationNodes } from "@shared/utils/collections";
|
|
import Collection from "~/models/Collection";
|
|
import Document from "~/models/Document";
|
|
|
|
export default function useCollectionDocuments(
|
|
collection: Collection | undefined,
|
|
activeDocument: Document | undefined
|
|
) {
|
|
return React.useMemo(() => {
|
|
if (!collection) {
|
|
return [];
|
|
}
|
|
|
|
const insertDraftDocument =
|
|
activeDocument?.isActive &&
|
|
activeDocument?.isDraft &&
|
|
activeDocument?.collectionId === collection.id &&
|
|
!activeDocument?.parentDocumentId;
|
|
|
|
return insertDraftDocument
|
|
? sortNavigationNodes(
|
|
[activeDocument.asNavigationNode, ...collection.sortedDocuments],
|
|
collection.sort,
|
|
false
|
|
)
|
|
: collection.sortedDocuments;
|
|
}, [
|
|
activeDocument?.isActive,
|
|
activeDocument?.isDraft,
|
|
activeDocument?.collectionId,
|
|
activeDocument?.parentDocumentId,
|
|
activeDocument?.asNavigationNode,
|
|
collection,
|
|
collection?.sortedDocuments,
|
|
collection?.id,
|
|
collection?.sort,
|
|
]);
|
|
}
|