import { SegmentedControl, View } from "react-native-ui-lib"; import React, { memo, useCallback, useEffect, useRef, useState } from "react"; import { StyleSheet } from "react-native"; import { NavigationProp, useNavigationState } from "@react-navigation/native"; const ViewSwitch = memo(function ViewSwitch({ navigation, }: { navigation: any; }) { const isNavigating = useRef(false); const navigationState = useNavigationState((state) => state); const [selectedIndex, setSelectedIndex] = useState( navigationState.index === 6 ? 1 : 0 ); // Sync the selected index with navigation state useEffect(() => { const newIndex = navigationState.index === 6 ? 1 : 0; if (selectedIndex !== newIndex) { setSelectedIndex(newIndex); } isNavigating.current = false; }, [navigationState.index]); const handleSegmentChange = useCallback( (index: number) => { if (isNavigating.current) return; if (index === selectedIndex) return; isNavigating.current = true; setSelectedIndex(index); // Delay navigation slightly to allow the segment control to update requestAnimationFrame(() => { navigation.navigate(index === 0 ? "calendar" : "todos"); }); console.log(selectedIndex) }, [navigation, selectedIndex] ); return ( ); }); export default ViewSwitch; const styles = StyleSheet.create({ container: { borderRadius: 30, backgroundColor: "#ebebeb", shadowColor: "#000", shadowOffset: { width: 0, height: 0 }, shadowOpacity: 0, shadowRadius: 0, elevation: 0, }, segmentContainer: { height: 44, width: 220, }, segment: { borderRadius: 50, borderWidth: 0, height: 44, }, labelStyle: { fontSize: 16, fontFamily: "Manrope_600SemiBold", }, });