feat: Add ability to create docs from link editor (#1303)
* feat: Add ability to create docs from link editor * fix: Handling of paste and click events * fix: Filter untitled documents from search results * refactor: Move onCreateLink to DataLoader * bump rme
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
// @flow
|
||||
import * as React from 'react';
|
||||
import invariant from 'invariant';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
import type { Location, RouterHistory } from 'react-router-dom';
|
||||
import { observable } from 'mobx';
|
||||
@@ -73,10 +74,26 @@ class DataLoader extends React.Component<Props> {
|
||||
onSearchLink = async (term: string) => {
|
||||
const results = await this.props.documents.search(term);
|
||||
|
||||
return results.map((result, index) => ({
|
||||
title: result.document.title,
|
||||
url: result.document.url,
|
||||
}));
|
||||
return results
|
||||
.filter(result => result.document.title)
|
||||
.map((result, index) => ({
|
||||
title: result.document.title,
|
||||
url: result.document.url,
|
||||
}));
|
||||
};
|
||||
|
||||
onCreateLink = async (title: string) => {
|
||||
const document = this.document;
|
||||
invariant(document, 'document must be loaded to create link');
|
||||
|
||||
const newDocument = await this.props.documents.create({
|
||||
collectionId: document.collectionId,
|
||||
parentDocumentId: document.parentDocumentId,
|
||||
title,
|
||||
text: '',
|
||||
});
|
||||
|
||||
return newDocument.url;
|
||||
};
|
||||
|
||||
loadRevision = async () => {
|
||||
@@ -165,6 +182,7 @@ class DataLoader extends React.Component<Props> {
|
||||
location={location}
|
||||
readOnly={!this.isEditing}
|
||||
onSearchLink={this.onSearchLink}
|
||||
onCreateLink={this.onCreateLink}
|
||||
/>
|
||||
</SocketPresence>
|
||||
);
|
||||
|
||||
@@ -58,7 +58,8 @@ type Props = {
|
||||
document: Document,
|
||||
revision: Revision,
|
||||
readOnly: boolean,
|
||||
onSearchLink: (term: string) => mixed,
|
||||
onCreateLink: (title: string) => string,
|
||||
onSearchLink: (term: string) => any,
|
||||
theme: Object,
|
||||
auth: AuthStore,
|
||||
ui: UiStore,
|
||||
@@ -435,6 +436,7 @@ class DocumentScene extends React.Component<Props> {
|
||||
onImageUploadStart={this.onImageUploadStart}
|
||||
onImageUploadStop={this.onImageUploadStop}
|
||||
onSearchLink={this.props.onSearchLink}
|
||||
onCreateLink={this.props.onCreateLink}
|
||||
onChangeTitle={this.onChangeTitle}
|
||||
onChange={this.onChange}
|
||||
onSave={this.onSave}
|
||||
@@ -491,7 +493,5 @@ const MaxWidth = styled(Flex)`
|
||||
`;
|
||||
|
||||
export default withRouter(
|
||||
inject('ui', 'auth', 'documents', 'policies', 'revisions')(
|
||||
withTheme(DocumentScene)
|
||||
)
|
||||
inject('ui', 'auth', 'policies', 'revisions')(withTheme(DocumentScene))
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user