From 1f42bac078fc96d2d63c54f62281941d19abf1be Mon Sep 17 00:00:00 2001
From: bobzel <zzzman@gmail.com>
Date: Tue, 9 Aug 2022 09:33:43 -0400
Subject: fixed presbox pinning from crashing/failing by making it a
 prefetchproxy.  update user cache when switching active page.

---
 src/client/views/collections/TabDocView.tsx | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

(limited to 'src/client/views/collections/TabDocView.tsx')

diff --git a/src/client/views/collections/TabDocView.tsx b/src/client/views/collections/TabDocView.tsx
index 2d08b1c09..ec291e72c 100644
--- a/src/client/views/collections/TabDocView.tsx
+++ b/src/client/views/collections/TabDocView.tsx
@@ -212,11 +212,11 @@ export class TabDocView extends React.Component<TabDocViewProps> {
     @action
     public static PinDoc(docs: Doc | Doc[], pinProps?: PinProps) {
         const docList = docs instanceof Doc ? [docs] : docs;
-        const batch = UndoManager.StartBatch('pinning doc');
 
         // all docs will be added to the ActivePresentation as stored on CurrentUserUtils
         const curPres = Doc.ActivePresentation;
-        curPres &&
+        if (curPres) {
+            const batch = UndoManager.StartBatch('pinning doc');
             docList.forEach(doc => {
                 // Edge Case 1: Cannot pin document to itself
                 if (doc === curPres) {
@@ -301,18 +301,19 @@ export class TabDocView extends React.Component<TabDocViewProps> {
                 PresBox.Instance?._selectedArray.clear();
                 pinDoc && PresBox.Instance?._selectedArray.set(pinDoc, undefined); //Update selected array
             });
-        if (
-            CollectionDockingView.Instance &&
-            !Array.from(CollectionDockingView.Instance.tabMap)
-                .map(d => d.DashDoc)
-                .includes(curPres)
-        ) {
-            const docs = Cast(Doc.MyOverlayDocs.data, listSpec(Doc), []);
-            if (docs.includes(curPres)) docs.splice(docs.indexOf(curPres), 1);
-            CollectionDockingView.AddSplit(curPres, 'right');
-            setTimeout(() => DocumentManager.Instance.jumpToDocument(docList.lastElement(), false, undefined, []), 100); // keeps the pinned doc in view since the sidebar shifts things
+            if (
+                CollectionDockingView.Instance &&
+                !Array.from(CollectionDockingView.Instance.tabMap)
+                    .map(d => d.DashDoc)
+                    .includes(curPres)
+            ) {
+                const docs = Cast(Doc.MyOverlayDocs.data, listSpec(Doc), []);
+                if (docs.includes(curPres)) docs.splice(docs.indexOf(curPres), 1);
+                CollectionDockingView.AddSplit(curPres, 'right');
+                setTimeout(() => DocumentManager.Instance.jumpToDocument(docList.lastElement(), false, undefined, []), 100); // keeps the pinned doc in view since the sidebar shifts things
+            }
+            setTimeout(batch.end, 500); // need to wait until dockingview (goldenlayout) updates all its structurs
         }
-        setTimeout(batch.end, 500); // need to wait until dockingview (goldenlayout) updates all its structurs
     }
 
     componentDidMount() {
-- 
cgit v1.2.3-70-g09d2

