From 7fc3004468ba13c228f7eb613401cd35d04cf40a Mon Sep 17 00:00:00 2001 From: Ansh Nanda Date: Sun, 9 Apr 2023 13:17:33 -0700 Subject: [PATCH] fix profile tabs switching on android --- src/view/com/util/Selector.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/view/com/util/Selector.tsx b/src/view/com/util/Selector.tsx index 5b331dc8dd..03db13bd19 100644 --- a/src/view/com/util/Selector.tsx +++ b/src/view/com/util/Selector.tsx @@ -1,4 +1,4 @@ -import React, {createRef, useState, useMemo} from 'react' +import React, {createRef, useState, useMemo, useRef} from 'react' import { Animated, StyleSheet, @@ -24,6 +24,7 @@ export function Selector({ panX: Animated.Value onSelect?: (index: number) => void }) { + const containerRef = useRef(null) const pal = usePalette('default') const [itemLayouts, setItemLayouts] = useState( undefined, @@ -68,7 +69,11 @@ export function Selector({ for (let i = 0; i < items.length; i++) { promises.push( new Promise(resolve => { - itemRefs[i].current?.measure( + if (!containerRef.current || !itemRefs[i].current) { + return resolve({x: 0, width: 0}) + } + itemRefs[i].current?.measureLayout( + containerRef.current, (x: number, _y: number, width: number) => { resolve({x, width}) }, @@ -86,7 +91,10 @@ export function Selector({ } return ( - + {items.map((item, i) => { const selected = i === selectedIndex