* Migrations * New from template * fix: Don't allow public share of template * chore: Template badges * fix: Collection active * feat: New doc button on template list item * feat: New template menu * fix: Sorting * feat: Templates onboarding notice * fix: New doc button showing on archived/deleted templates
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
// @flow
|
||
import * as React from "react";
|
||
import { inject } from "mobx-react";
|
||
import queryString from "query-string";
|
||
import type { RouterHistory, Location } from "react-router-dom";
|
||
import Flex from "components/Flex";
|
||
import CenteredContent from "components/CenteredContent";
|
||
import LoadingPlaceholder from "components/LoadingPlaceholder";
|
||
import DocumentsStore from "stores/DocumentsStore";
|
||
import UiStore from "stores/UiStore";
|
||
import { editDocumentUrl } from "utils/routeHelpers";
|
||
|
||
type Props = {
|
||
history: RouterHistory,
|
||
location: Location,
|
||
documents: DocumentsStore,
|
||
ui: UiStore,
|
||
match: Object,
|
||
};
|
||
|
||
class DocumentNew extends React.Component<Props> {
|
||
async componentDidMount() {
|
||
const params = queryString.parse(this.props.location.search);
|
||
|
||
try {
|
||
const document = await this.props.documents.create({
|
||
collectionId: this.props.match.params.id,
|
||
parentDocumentId: params.parentDocumentId,
|
||
templateId: params.templateId,
|
||
template: params.template,
|
||
title: "",
|
||
text: "",
|
||
});
|
||
this.props.history.replace(editDocumentUrl(document));
|
||
} catch (err) {
|
||
this.props.ui.showToast("Couldn’t create the document, try again?");
|
||
this.props.history.goBack();
|
||
}
|
||
}
|
||
|
||
render() {
|
||
return (
|
||
<Flex column auto>
|
||
<CenteredContent>
|
||
<LoadingPlaceholder />
|
||
</CenteredContent>
|
||
</Flex>
|
||
);
|
||
}
|
||
}
|
||
|
||
export default inject("documents", "ui")(DocumentNew);
|