diff options
author | Melissa Zhang <mzhang19096@gmail.com> | 2020-07-24 17:49:47 -0700 |
---|---|---|
committer | Melissa Zhang <mzhang19096@gmail.com> | 2020-07-24 17:49:47 -0700 |
commit | 5ca85299fc42e5881b313053cf6c6fd2df572e12 (patch) | |
tree | 683c0e93efc7ff56bb4fb036b8f605a5593c90f7 | |
parent | 38b264599af2dca710b6c54d76cf30aade5e2f49 (diff) |
fix listeners for annotation listening
-rw-r--r-- | src/client/views/MainView.tsx | 29 | ||||
-rw-r--r-- | src/client/views/nodes/DocumentLinksButton.tsx | 39 |
2 files changed, 29 insertions, 39 deletions
diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 225fb2e8e..6d18b3177 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -66,6 +66,8 @@ import { LinkDescriptionPopup } from './nodes/LinkDescriptionPopup'; import FormatShapePane from "./collections/collectionFreeForm/FormatShapePane"; import HypothesisAuthenticationManager from '../apis/HypothesisAuthenticationManager'; import CollectionMenu from './collections/CollectionMenu'; +import { Hypothesis } from '../apis/hypothesis/HypothesisApiUtils'; +import { SelectionManager } from '../util/SelectionManager'; @observer export class MainView extends React.Component { @@ -113,6 +115,33 @@ export class MainView extends React.Component { } }); }); + window.addEventListener("message", async (e: any) => { // listen for a new Hypothes.is annotation from an iframe inside Dash + // start link from new Hypothes.is annotation + // TODO: pass in placeholderId directly from client, move + if (e.origin === "http://localhost:1050" && e.data.message === "annotation created") { + console.log("DASH received message: annotation created"); + const response = await Hypothesis.getPlaceholderId("placeholder"); + const source = SelectionManager.SelectedDocuments()[0]; + response && runInAction(() => { + DocumentLinksButton.AnnotationId = response.id; + DocumentLinksButton.AnnotationUri = response.uri; + DocumentLinksButton.StartLink = source; + }); + } + }); + document.addEventListener("linkAnnotationToDash", async (e: any) => { // listen for event from Hypothes.is plugin to to link an existing annotation to Dash + const annotationId = e.detail.id; + const annotationUri = e.detail.uri; + console.log(annotationId, annotationUri); + // const source = await Hypothesis.getWebDoc(annotationUri); + + const source = SelectionManager.SelectedDocuments()[0]; // TO BE FIXED, currently link just starts from whichever doc is selected + runInAction(() => { + DocumentLinksButton.AnnotationId = annotationId; + DocumentLinksButton.AnnotationUri = annotationUri; + DocumentLinksButton.StartLink = source; + }); + }); } componentWillUnMount() { diff --git a/src/client/views/nodes/DocumentLinksButton.tsx b/src/client/views/nodes/DocumentLinksButton.tsx index 57fa26b80..8b4dc2957 100644 --- a/src/client/views/nodes/DocumentLinksButton.tsx +++ b/src/client/views/nodes/DocumentLinksButton.tsx @@ -39,43 +39,6 @@ export class DocumentLinksButton extends React.Component<DocumentLinksButtonProp @observable public static AnnotationId: string | undefined; @observable public static AnnotationUri: string | undefined; - componentDidMount() { - window.addEventListener("message", this.newAnnotation); // listen for a new Hypothes.is annotation from an iframe inside Dash - document.addEventListener("linkAnnotationToDash", this.linkAnnotation); // listen for event from Hypothes.is extension to link an existing annotation - } - - // start link from new Hypothes.is annotation - // TODO: pass in placeholderId directly from client - @action - newAnnotation = async (e: any) => { - if (e.origin === "http://localhost:1050" && e.data.message === "annotation created") { - console.log("DASH received message: annotation created"); - window.removeEventListener("message", this.newAnnotation); - const response = await Hypothesis.getPlaceholderId("placeholder"); - const source = SelectionManager.SelectedDocuments()[0]; - response && runInAction(() => { - DocumentLinksButton.AnnotationId = response.id; - DocumentLinksButton.AnnotationUri = response.uri; - DocumentLinksButton.StartLink = source; - }); - } - } - - @action - linkAnnotation = async (e: any) => { // event sent by hypothes.is plugin to tell Dash which annotation we're linking from - const annotationId = e.detail.id; - const annotationUri = e.detail.uri; - console.log(annotationId, annotationUri); - // const source = await Hypothesis.getWebDoc(annotationUri); - - const source = SelectionManager.SelectedDocuments()[0]; // TO BE FIXED, currently link just starts from whichever doc is selected - runInAction(() => { - DocumentLinksButton.AnnotationId = annotationId; - DocumentLinksButton.AnnotationUri = annotationUri; - DocumentLinksButton.StartLink = source; - }); - } - @action @undoBatch onLinkButtonMoved = (e: PointerEvent) => { if (this.props.InMenu && this.props.StartLink) { @@ -179,8 +142,6 @@ export class DocumentLinksButton extends React.Component<DocumentLinksButtonProp if (DocumentLinksButton.StartLink === this.props.View) { DocumentLinksButton.StartLink = undefined; DocumentLinksButton.AnnotationId = undefined; - window.removeEventListener("message", this.newAnnotation); - window.addEventListener("message", this.newAnnotation); } else { if (this.props.InMenu && !!!this.props.StartLink) { if (DocumentLinksButton.StartLink && DocumentLinksButton.StartLink !== this.props.View) { |