aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMelissa Zhang <mzhang19096@gmail.com>2020-07-24 17:49:47 -0700
committerMelissa Zhang <mzhang19096@gmail.com>2020-07-24 17:49:47 -0700
commit5ca85299fc42e5881b313053cf6c6fd2df572e12 (patch)
tree683c0e93efc7ff56bb4fb036b8f605a5593c90f7
parent38b264599af2dca710b6c54d76cf30aade5e2f49 (diff)
fix listeners for annotation listening
-rw-r--r--src/client/views/MainView.tsx29
-rw-r--r--src/client/views/nodes/DocumentLinksButton.tsx39
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) {