Added predictive document title

This commit is contained in:
Jori Lallo
2017-10-22 11:02:05 -07:00
parent 91e139e2cc
commit ca46ca2f06
2 changed files with 18 additions and 6 deletions

View File

@@ -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)
);

View File

@@ -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<*> => {