From 30382d088b3b0a5b21ef94d1eb7b7f042dca0fd7 Mon Sep 17 00:00:00 2001
From: Lim Chee Aun <cheeaun@gmail.com>
Date: Thu, 4 Apr 2024 14:34:04 +0800
Subject: [PATCH] Possible fix for menus again

---
 src/components/nav-menu.jsx | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/src/components/nav-menu.jsx b/src/components/nav-menu.jsx
index 9952d0dd..e5659838 100644
--- a/src/components/nav-menu.jsx
+++ b/src/components/nav-menu.jsx
@@ -209,7 +209,7 @@ function NavMenu(props) {
                 </MenuLink>
               )}
               {lists?.length > 0 ? (
-                <SubMenu
+                <SubMenu2
                   menuClassName="nav-submenu"
                   overflow="auto"
                   gap={-8}
@@ -234,7 +234,7 @@ function NavMenu(props) {
                       ))}
                     </>
                   )}
-                </SubMenu>
+                </SubMenu2>
               ) : (
                 <MenuLink to="/l">
                   <Icon icon="list" size="l" />
@@ -244,7 +244,7 @@ function NavMenu(props) {
               <MenuLink to="/b">
                 <Icon icon="bookmark" size="l" /> <span>Bookmarks</span>
               </MenuLink>
-              <SubMenu
+              <SubMenu2
                 menuClassName="nav-submenu"
                 overflow="auto"
                 gap={-8}
@@ -293,7 +293,7 @@ function NavMenu(props) {
                   <Icon icon="block" size="l" />
                   Blocked users&hellip;
                 </MenuItem>{' '}
-              </SubMenu>
+              </SubMenu2>
               <MenuDivider />
               <MenuItem
                 onClick={() => {
@@ -371,4 +371,27 @@ function NavMenu(props) {
   );
 }
 
+function SubMenu2(props) {
+  const menuRef = useRef();
+  return (
+    <SubMenu
+      {...props}
+      instanceRef={menuRef}
+      // Test fix for bug; submenus not opening on Android
+      itemProps={{
+        onPointerMove: (e) => {
+          if (e.pointerType === 'touch') {
+            menuRef.current?.openMenu?.();
+          }
+        },
+        onPointerLeave: (e) => {
+          if (e.pointerType === 'touch') {
+            menuRef.current?.openMenu?.();
+          }
+        },
+      }}
+    />
+  );
+}
+
 export default memo(NavMenu);