From 5e22d4aa9eefb8c92859fc0d1adb508429af2106 Mon Sep 17 00:00:00 2001
From: Bob Zeleznik <zzzman@gmail.com>
Date: Fri, 10 Jul 2020 10:58:38 -0400
Subject: not sure if these changes are needed, but I had to add them to get
 Hypothesis links to work.

---
 src/client/views/nodes/DocumentLinksButton.tsx | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

(limited to 'src/client/views/nodes/DocumentLinksButton.tsx')

diff --git a/src/client/views/nodes/DocumentLinksButton.tsx b/src/client/views/nodes/DocumentLinksButton.tsx
index 32c344304..223d9fbf8 100644
--- a/src/client/views/nodes/DocumentLinksButton.tsx
+++ b/src/client/views/nodes/DocumentLinksButton.tsx
@@ -35,6 +35,7 @@ export class DocumentLinksButton extends React.Component<DocumentLinksButtonProp
 
     @observable public static StartLink: DocumentView | undefined;
     @observable public static AnnotationId: string | undefined;
+    @observable public static AnnotationUri: string | undefined;
 
     componentDidMount() {
         // window.addEventListener("annotationCreated", (e: any) => { // event used by Hypothes.is plugin to tell Dash when an unlinked annotation has been created
@@ -47,12 +48,15 @@ export class DocumentLinksButton extends React.Component<DocumentLinksButtonProp
         // });
         console.log("window", window);
         window.addEventListener("fakeAnnotationCreated", async (e: any) => { // event used by Hypothes.is plugin to tell Dash when an unlinked annotation has been created
+            if (e.handled) return;
+            e.handled = true;
             console.log("Helo fake annotation make");
             // const id = e.detail;
-            const id = await Hypothesis.getPlaceholderId("melissaz", "placeholder"); // delete once eventListening between client & Dash works
+            const response = await Hypothesis.getPlaceholderId("bobzel", "placeholder"); // delete once eventListening between client & Dash works
             const source = SelectionManager.SelectedDocuments()[0];
-            runInAction(() => {
-                DocumentLinksButton.AnnotationId = id;
+            response && runInAction(() => {
+                DocumentLinksButton.AnnotationId = response.id;
+                DocumentLinksButton.AnnotationUri = response.uri;
                 DocumentLinksButton.StartLink = source;
             });
         });
@@ -127,8 +131,8 @@ export class DocumentLinksButton extends React.Component<DocumentLinksButtonProp
                         const linkDoc = DocUtils.MakeLink({ doc: sourceDoc }, { doc: targetDoc }, DocumentLinksButton.AnnotationId ? "hypothes.is annotation" : "long drag");
 
                         // if the link's source is a Hypothes.is annotation
-                        if (DocumentLinksButton.AnnotationId) {
-                            const sourceUrl = StrCast(sourceDoc.data.url); // the URL of the annotation's source web page
+                        if (DocumentLinksButton.AnnotationId && DocumentLinksButton.AnnotationUri) {
+                            const sourceUrl = DocumentLinksButton.AnnotationUri;
                             Doc.GetProto(linkDoc as Doc).linksToAnnotation = true;
                             Doc.GetProto(linkDoc as Doc).annotationUrl = Hypothesis.makeAnnotationUrl(DocumentLinksButton.AnnotationId, sourceUrl); // redirect web doc to this URL when following link
                             Hypothesis.dispatchLinkRequest(StrCast(targetDoc.title), Utils.prepend("/doc/" + targetDoc[Id]), DocumentLinksButton.AnnotationId); // update and link placeholder annotation
@@ -168,8 +172,8 @@ export class DocumentLinksButton extends React.Component<DocumentLinksButtonProp
                 const linkDoc = DocUtils.MakeLink({ doc: sourceDoc }, { doc: targetDoc }, DocumentLinksButton.AnnotationId ? "hypothes.is annotation" : "long drag");
 
                 // if the link is to a Hypothes.is annotation
-                if (DocumentLinksButton.AnnotationId) {
-                    const sourceUrl = StrCast(sourceDoc.data.url); // the URL of the annotation's source web page
+                if (DocumentLinksButton.AnnotationId && DocumentLinksButton.AnnotationUri) {
+                    const sourceUrl = DocumentLinksButton.AnnotationUri; // the URL of the annotation's source web page
                     console.log("sourceAnnotationId, url", DocumentLinksButton.AnnotationId, sourceUrl);
                     Doc.GetProto(linkDoc as Doc).linksToAnnotation = true;
                     Doc.GetProto(linkDoc as Doc).annotationUrl = Hypothesis.makeAnnotationUrl(DocumentLinksButton.AnnotationId, sourceUrl); // redirect web doc to this URL when following link
-- 
cgit v1.2.3-70-g09d2

