diff --git a/app/scenes/Document/components/Header.js b/app/scenes/Document/components/Header.js index 8d7f315c6..9652512ca 100644 --- a/app/scenes/Document/components/Header.js +++ b/app/scenes/Document/components/Header.js @@ -12,6 +12,8 @@ import { documentEditUrl, documentNewUrl } from 'utils/routeHelpers'; import Flex from 'shared/components/Flex'; import Breadcrumb from './Breadcrumb'; import DocumentMenu from 'menus/DocumentMenu'; +import DocumentShare from 'scenes/DocumentShare'; +import Modal from 'components/Modal'; import Collaborators from 'components/Collaborators'; import { Action, Separator } from 'components/Actions'; @@ -34,6 +36,7 @@ type Props = { @observer class Header extends React.Component { @observable isScrolled = false; + @observable showShareModal = false; componentDidMount() { window.addEventListener('scroll', this.handleScroll); @@ -65,6 +68,16 @@ class Header extends React.Component { this.props.onSave({ done: true, publish: true }); }; + handleShareLink = async (ev: SyntheticEvent<*>) => { + const { document } = this.props; + if (!document.shareUrl) await document.share(); + this.showShareModal = true; + }; + + handleCloseShareModal = () => { + this.showShareModal = false; + }; + handleClickTitle = () => { window.scrollTo({ top: 0, @@ -89,6 +102,16 @@ class Header extends React.Component { readOnly={!isEditing} isCompact={this.isScrolled} > + + + {document.title} @@ -113,6 +136,14 @@ class Header extends React.Component<Props> { </Link> </Action> )} + {!isDraft && + !isEditing && ( + <Action> + <Link onClick={this.handleShareLink} title="Share document"> + Share + </Link> + </Action> + )} {isEditing && ( <React.Fragment> <Action> diff --git a/app/scenes/DocumentShare.js b/app/scenes/DocumentShare.js index 025e42580..2eea1d204 100644 --- a/app/scenes/DocumentShare.js +++ b/app/scenes/DocumentShare.js @@ -10,7 +10,7 @@ import HelpText from 'components/HelpText'; import Document from 'models/Document'; type Props = { - document?: Document, + document: Document, onSubmit: () => *, };