From 15cbdd42a86e83cccf64df9f9f57a2f5e7cd3cae Mon Sep 17 00:00:00 2001 From: btzr-io Date: Sun, 14 Oct 2018 18:27:09 -0600 Subject: [PATCH] fix more flow errors for document viewers --- .../component/common/markdown-preview.jsx | 33 ++++++++++++------- src/renderer/component/fileRender/view.jsx | 4 +-- src/renderer/component/viewers/codeViewer.jsx | 6 ++-- .../component/viewers/documentViewer.jsx | 23 ++++++++----- src/renderer/component/viewers/docxViewer.jsx | 14 +++++--- src/renderer/component/viewers/pdfViewer.jsx | 4 ++- 6 files changed, 55 insertions(+), 29 deletions(-) diff --git a/src/renderer/component/common/markdown-preview.jsx b/src/renderer/component/common/markdown-preview.jsx index b00ae7025..78af2273d 100644 --- a/src/renderer/component/common/markdown-preview.jsx +++ b/src/renderer/component/common/markdown-preview.jsx @@ -6,25 +6,34 @@ import remarkEmoji from 'remark-emoji'; import ExternalLink from 'component/externalLink'; import defaultSchema from 'hast-util-sanitize/lib/github.json'; +type MarkdownProps = { + content: ?string, + promptLinks?: boolean, +}; + +type SimpleLinkProps = { + href?: string, + title?: string, + children?: React.Node, +}; + +const SimpleLink = (props: SimpleLinkProps) => { + const { href, title, children } = props; + return ( + + {children} + + ); +}; + // Use github sanitation schema const schema = { ...defaultSchema }; // Extend sanitation schema to support lbry protocol schema.protocols.href[3] = 'lbry'; -type MarkdownProps = { - content: string, - promptLinks?: boolean, -}; - -const SimpleLink = ({ href, title, children }) => ( - - {children} - -); - const MarkdownPreview = (props: MarkdownProps) => { - const { content, externalLinks, promptLinks } = props; + const { content, promptLinks } = props; const remarkOptions = { sanitize: schema, remarkReactComponents: { diff --git a/src/renderer/component/fileRender/view.jsx b/src/renderer/component/fileRender/view.jsx index b9901564e..80a3236a5 100644 --- a/src/renderer/component/fileRender/view.jsx +++ b/src/renderer/component/fileRender/view.jsx @@ -10,11 +10,11 @@ import HtmlViewer from 'component/viewers/htmlViewer'; type Props = { mediaType: string, source: { + stream: string => void, fileName: string, fileType: string, + contentType: string, downloadPath: string, - stream: opts => void, - blob: callback => void, }, currentTheme: string, }; diff --git a/src/renderer/component/viewers/codeViewer.jsx b/src/renderer/component/viewers/codeViewer.jsx index 1d5164468..af6ea8fc0 100644 --- a/src/renderer/component/viewers/codeViewer.jsx +++ b/src/renderer/component/viewers/codeViewer.jsx @@ -22,12 +22,12 @@ import 'codemirror/mode/javascript/javascript'; type Props = { theme: string, - value: string, + value: ?string, contentType: string, }; class CodeViewer extends React.PureComponent { - constructor(props) { + constructor(props: Props) { super(props); this.codeMirror = null; this.textarea = React.createRef(); @@ -54,6 +54,8 @@ class CodeViewer extends React.PureComponent { this.codeMirror.on('contextmenu', openSnippetMenu); } + codeMirror: any; + render() { const { value } = this.props; return ( diff --git a/src/renderer/component/viewers/documentViewer.jsx b/src/renderer/component/viewers/documentViewer.jsx index 608d34873..ed309236d 100644 --- a/src/renderer/component/viewers/documentViewer.jsx +++ b/src/renderer/component/viewers/documentViewer.jsx @@ -8,19 +8,25 @@ import MarkdownPreview from 'component/common/markdown-preview'; type Props = { theme: string, source: { - stream: opts => void, + stream: string => any, fileType: string, contentType: string, }, }; -class DocumentViewer extends React.PureComponent { - constructor(props) { +type State = { + error: boolean, + loading: boolean, + content: ?string, +}; + +class DocumentViewer extends React.PureComponent { + constructor(props: Props) { super(props); this.state = { - error: null, - content: null, + error: false, loading: true, + content: null, }; } @@ -38,13 +44,14 @@ class DocumentViewer extends React.PureComponent { this.setState({ content: data, loading: false }); }); - stream.on('error', error => { + stream.on('error', () => { this.setState({ error: true, loading: false }); }); } - renderDocument(content = null) { + renderDocument() { let viewer = null; + const { content } = this.state; const { source, theme } = this.props; const { fileType, contentType } = source; const markdownType = ['md', 'markdown']; @@ -70,7 +77,7 @@ class DocumentViewer extends React.PureComponent {
{loading && !error && } {error && } - {isReady && this.renderDocument(content)} + {isReady && this.renderDocument()}
); } diff --git a/src/renderer/component/viewers/docxViewer.jsx b/src/renderer/component/viewers/docxViewer.jsx index 9959678c5..790269fe6 100644 --- a/src/renderer/component/viewers/docxViewer.jsx +++ b/src/renderer/component/viewers/docxViewer.jsx @@ -10,11 +10,17 @@ type Props = { source: string, }; -class DocxViewer extends React.PureComponent { - constructor(props) { +type State = { + error: boolean, + loading: boolean, + content: ?string, +}; + +class DocxViewer extends React.PureComponent { + constructor(props: Props) { super(props); this.state = { - error: null, + error: false, content: null, loading: true, }; @@ -46,7 +52,7 @@ class DocxViewer extends React.PureComponent { const markdown = breakdance.render(result.value); this.setState({ content: markdown, loading: false }); }) - .catch(error => { + .catch(() => { this.setState({ error: true, loading: false }); }) .done(); diff --git a/src/renderer/component/viewers/pdfViewer.jsx b/src/renderer/component/viewers/pdfViewer.jsx index ce0a2095a..4f15ec315 100644 --- a/src/renderer/component/viewers/pdfViewer.jsx +++ b/src/renderer/component/viewers/pdfViewer.jsx @@ -7,11 +7,13 @@ type Props = { }; class PdfViewer extends React.PureComponent { - constructor(props) { + constructor(props: Props) { super(props); this.viewer = React.createRef(); } + viewer: { current: any }; + render() { const { source } = this.props; return (