about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/api/feed-manip.ts17
-rw-r--r--src/lib/hooks/useAuxClick.ts2
-rw-r--r--src/lib/hooks/useAuxClick.web.ts43
-rw-r--r--src/lib/media/manip.web.ts3
4 files changed, 17 insertions, 48 deletions
diff --git a/src/lib/api/feed-manip.ts b/src/lib/api/feed-manip.ts
index c964693c4..227062592 100644
--- a/src/lib/api/feed-manip.ts
+++ b/src/lib/api/feed-manip.ts
@@ -168,14 +168,25 @@ export class FeedTuner {
 
         const selfReplyUri = getSelfReplyUri(item)
         if (selfReplyUri) {
-          const parent = slices.find(item2 =>
-            item2.isNextInThread(selfReplyUri),
+          const index = slices.findIndex(slice =>
+            slice.isNextInThread(selfReplyUri),
           )
-          if (parent) {
+
+          if (index !== -1) {
+            const parent = slices[index]
+
             parent.insert(item)
+
+            // If our slice isn't currently on the top, reinsert it to the top.
+            if (index !== 0) {
+              slices.splice(index, 1)
+              slices.unshift(parent)
+            }
+
             continue
           }
         }
+
         slices.unshift(new FeedViewPostsSlice([item]))
       }
     }
diff --git a/src/lib/hooks/useAuxClick.ts b/src/lib/hooks/useAuxClick.ts
deleted file mode 100644
index ab6fd4365..000000000
--- a/src/lib/hooks/useAuxClick.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// does nothing in native
-export const useAuxClick = () => {}
diff --git a/src/lib/hooks/useAuxClick.web.ts b/src/lib/hooks/useAuxClick.web.ts
deleted file mode 100644
index ca9811615..000000000
--- a/src/lib/hooks/useAuxClick.web.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import {useEffect} from 'react'
-
-// This is the handler for the middle mouse button click on the feed.
-// Normally, we would do this via `onAuxClick` handler on each link element
-// However, that handler is not supported on react-native-web and there are some
-// discrepancies between various browsers (i.e: safari doesn't trigger it and routes through click event)
-// So, this temporary alternative is meant to bridge the gap in an efficient way until the support improves.
-export const useAuxClick = () => {
-  const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)
-  useEffect(() => {
-    // On the web, it should always be there but in case it gets accidentally included in native builds
-    const wrapperEl = document?.body
-
-    // Safari already handles auxclick event as click+metaKey so we need to avoid doing this there in case it becomes recursive
-    if (wrapperEl && !isSafari) {
-      const handleAuxClick = (e: MouseEvent & {target: HTMLElement}) => {
-        // Only handle the middle mouse button click
-        // Only handle if the clicked element itself or one of its ancestors is a link
-        if (
-          e.button !== 1 ||
-          e.target.closest('a') ||
-          e.target.tagName === 'A'
-        ) {
-          return
-        }
-
-        // On the original element, trigger a click event with metaKey set to true so that it triggers
-        // the browser's default behavior of opening the link in a new tab
-        e.target.dispatchEvent(
-          new MouseEvent('click', {metaKey: true, bubbles: true}),
-        )
-      }
-
-      // @ts-ignore For web only
-      wrapperEl.addEventListener('auxclick', handleAuxClick)
-
-      return () => {
-        // @ts-ignore For web only
-        wrapperEl?.removeEventListener('auxclick', handleAuxClick)
-      }
-    }
-  }, [isSafari])
-}
diff --git a/src/lib/media/manip.web.ts b/src/lib/media/manip.web.ts
index bdf6836a1..522aa2e51 100644
--- a/src/lib/media/manip.web.ts
+++ b/src/lib/media/manip.web.ts
@@ -132,6 +132,9 @@ function createResizedImage(
       ctx.drawImage(img, 0, 0, w, h)
       resolve(canvas.toDataURL('image/jpeg', quality))
     })
+    img.addEventListener('error', ev => {
+      reject(ev.error)
+    })
     img.src = dataUri
   })
 }