import ImmutablePureComponent from 'react-immutable-pure-component'; import { defineMessages, injectIntl } from 'react-intl'; import api from '../../api' const messages = defineMessages({ embed: { id: 'status.embed', defaultMessage: 'Embed' }, instructions: { id: 'embed.instructions', defaultMessage: 'Embed this status on your website by copying the code below.' }, preview: { id: 'embed.preview', defaultMessage: 'Here is what it will look like:' }, }); export default @injectIntl class EmbedModal extends ImmutablePureComponent { static propTypes = { url: PropTypes.string.isRequired, onClose: PropTypes.func.isRequired, onError: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, } state = { loading: false, oembed: null, }; componentDidMount () { const { url } = this.props; this.setState({ loading: true }); api().post('/api/web/embed', { url }).then(res => { this.setState({ loading: false, oembed: res.data }); const iframeDocument = this.iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(res.data.html); iframeDocument.close(); iframeDocument.body.style.margin = 0; this.iframe.width = iframeDocument.body.scrollWidth; this.iframe.height = iframeDocument.body.scrollHeight; }).catch(error => { this.props.onError(error); }); } setIframeRef = c => { this.iframe = c; } handleTextareaClick = (e) => { e.target.select(); } render () { const { oembed, intl } = this.state; return (

{intl.formatMessage(messages.embed)}

{intl.formatMessage(messages.instructions)}

{intl.formatMessage(messages.preview)}