aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/FormattedTextBox.tsx
diff options
context:
space:
mode:
authorSam Wilkins <samwilkins333@gmail.com>2019-08-13 22:15:47 -0400
committerSam Wilkins <samwilkins333@gmail.com>2019-08-13 22:15:47 -0400
commit2b829d1028a61869858ecd48e2f1801819e17488 (patch)
tree2140fff63d1308d7672b7fec173aa053ae44787a /src/client/views/nodes/FormattedTextBox.tsx
parent2ed0c3e1203794ddaa0b17ed908432582d0198d1 (diff)
robust google doc export api and cleanup
Diffstat (limited to 'src/client/views/nodes/FormattedTextBox.tsx')
-rw-r--r--src/client/views/nodes/FormattedTextBox.tsx24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/client/views/nodes/FormattedTextBox.tsx b/src/client/views/nodes/FormattedTextBox.tsx
index 44b5d2c21..8c2af7c9e 100644
--- a/src/client/views/nodes/FormattedTextBox.tsx
+++ b/src/client/views/nodes/FormattedTextBox.tsx
@@ -1,5 +1,5 @@
import { library } from '@fortawesome/fontawesome-svg-core';
-import { faEdit, faSmile, faTextHeight } from '@fortawesome/free-solid-svg-icons';
+import { faEdit, faSmile, faTextHeight, faUpload } from '@fortawesome/free-solid-svg-icons';
import { action, IReactionDisposer, observable, reaction, runInAction, computed, Lambda, trace } from "mobx";
import { observer } from "mobx-react";
import { baseKeymap } from "prosemirror-commands";
@@ -38,9 +38,10 @@ import { For } from 'babel-types';
import { DateField } from '../../../new_fields/DateField';
import { Utils } from '../../../Utils';
import { MainOverlayTextBox } from '../MainOverlayTextBox';
+import { GoogleApiClientUtils } from '../../apis/google_docs/GoogleApiClientUtils';
library.add(faEdit);
-library.add(faSmile, faTextHeight);
+library.add(faSmile, faTextHeight, faUpload);
// FormattedTextBox: Displays an editable plain text node that maps to a specified Key of a Document
//
@@ -58,6 +59,8 @@ const richTextSchema = createSchema({
documentText: "string"
});
+const googleDocKey = "googleDocId";
+
type RichTextDocument = makeInterface<[typeof richTextSchema]>;
const RichTextDocument = makeInterface(richTextSchema);
@@ -661,7 +664,24 @@ export class FormattedTextBox extends DocComponent<(FieldViewProps & FormattedTe
event: action(() => Doc.GetProto(this.props.Document).autoHeight = !BoolCast(this.props.Document.autoHeight)), icon: "expand-arrows-alt"
});
ContextMenu.Instance.addItem({ description: "Text Funcs...", subitems: subitems, icon: "text-height" });
+ if (!(googleDocKey in Doc.GetProto(this.props.Document))) {
+ ContextMenu.Instance.addItem({ description: "Export to Google Doc...", event: this.exportToGoogleDoc, icon: "upload" });
+ }
}
+
+ exportToGoogleDoc = () => {
+ let dataDoc = Doc.GetProto(this.props.Document);
+ let data = Cast(dataDoc.data, RichTextField);
+ let content: string | undefined;
+ if (data && (content = data.plainText())) {
+ GoogleApiClientUtils.Docs.Write({
+ title: StrCast(dataDoc.title),
+ store: { receiver: dataDoc, key: googleDocKey },
+ content
+ });
+ }
+ }
+
render() {
let self = this;
let style = this.props.isOverlay ? "scroll" : "hidden";