Added predictive document title
This commit is contained in:
@@ -22,6 +22,7 @@ import Document from 'models/Document';
|
||||
import DocumentMove from './components/DocumentMove';
|
||||
import UiStore from 'stores/UiStore';
|
||||
import DocumentsStore from 'stores/DocumentsStore';
|
||||
import CollectionsStore from 'stores/CollectionsStore';
|
||||
import DocumentMenu from 'menus/DocumentMenu';
|
||||
import SaveAction from './components/SaveAction';
|
||||
import LoadingPlaceholder from 'components/LoadingPlaceholder';
|
||||
@@ -45,6 +46,7 @@ type Props = {
|
||||
location: Object,
|
||||
keydown: Object,
|
||||
documents: DocumentsStore,
|
||||
collections: CollectionsStore,
|
||||
newDocument?: boolean,
|
||||
ui: UiStore,
|
||||
};
|
||||
@@ -213,7 +215,9 @@ type Props = {
|
||||
const isMoving = this.props.match.path === matchDocumentMove;
|
||||
const document = this.document;
|
||||
const isFetching = !document;
|
||||
const titleText = get(document, 'title', '');
|
||||
const titleText =
|
||||
get(document, 'title', '') ||
|
||||
this.props.collections.titleForDocument(this.props.location.pathname);
|
||||
|
||||
if (this.notFound) {
|
||||
return this.renderNotFound();
|
||||
@@ -362,4 +366,6 @@ const StyledDropToImport = styled(DropToImport)`
|
||||
flex: 1;
|
||||
`;
|
||||
|
||||
export default withRouter(inject('ui', 'user', 'documents')(DocumentScene));
|
||||
export default withRouter(
|
||||
inject('ui', 'user', 'documents', 'collections')(DocumentScene)
|
||||
);
|
||||
|
||||
@@ -25,6 +25,7 @@ type Options = {
|
||||
type DocumentPathItem = {
|
||||
id: string,
|
||||
title: string,
|
||||
url: string,
|
||||
type: 'document' | 'collection',
|
||||
};
|
||||
|
||||
@@ -59,16 +60,16 @@ class CollectionsStore {
|
||||
let results = [];
|
||||
const travelDocuments = (documentList, path) =>
|
||||
documentList.forEach(document => {
|
||||
const { id, title } = document;
|
||||
const node = { id, title, type: 'document' };
|
||||
const { id, title, url } = document;
|
||||
const node = { id, title, url, type: 'document' };
|
||||
results.push(_.concat(path, node));
|
||||
travelDocuments(document.children, _.concat(path, [node]));
|
||||
});
|
||||
|
||||
if (this.isLoaded) {
|
||||
this.data.forEach(collection => {
|
||||
const { id, name } = collection;
|
||||
const node = { id, title: name, type: 'collection' };
|
||||
const { id, name, url } = collection;
|
||||
const node = { id, title: name, url, type: 'collection' };
|
||||
results.push([node]);
|
||||
travelDocuments(collection.documents, [node]);
|
||||
});
|
||||
@@ -87,6 +88,11 @@ class CollectionsStore {
|
||||
return this.pathsToDocuments.find(path => path.id === documentId);
|
||||
}
|
||||
|
||||
titleForDocument(documentUrl: string): ?string {
|
||||
const path = this.pathsToDocuments.find(path => path.url === documentUrl);
|
||||
if (path) return path.title;
|
||||
}
|
||||
|
||||
/* Actions */
|
||||
|
||||
@action fetchAll = async (): Promise<*> => {
|
||||
|
||||
Reference in New Issue
Block a user