import React from "react"; import { View, Dimensions } from "react-native"; import MaterialIcons from "@expo/vector-icons/MaterialIcons"; import { BottomDropdown, MyTouchableOpacity, MyText, tw, theme, } from "common-ui"; import { useAuth } from "@/src/contexts/AuthContext"; import { trpc } from "@/src/trpc-client"; import { useAddressStore } from "@/src/store/addressStore"; const { width: screenWidth } = Dimensions.get("window"); interface AddressSelectorProps { mode?: "home"; deliveryTime?: string; } const AddressSelector: React.FC = ({ mode = "home", deliveryTime, }) => { const { isAuthenticated } = useAuth(); const { selectedAddressId, setSelectedAddressId } = useAddressStore(); const { data: defaultAddressData } = trpc.user.address.getDefaultAddress.useQuery(); const { data: addressesData } = trpc.user.address.getUserAddresses.useQuery( undefined, { enabled: isAuthenticated, } ); const defaultAddress = defaultAddressData?.data; const addresses = addressesData?.data || []; // Transform addresses for dropdown const addressOptions = addresses.map((address) => ({ label: `${address.name} - ${address.addressLine1}, ${address.city}`, value: address.id, })); const handleAddressChange = ( value: string | number | string[] | number[] ) => { const addressId = value as number; setSelectedAddressId(addressId); }; // Helper to get display parts const getDisplayParts = (displayText?: string) => { const fullText = displayText || (defaultAddress ? `${defaultAddress.name} - ${defaultAddress.addressLine1}, ${defaultAddress.city}` : ""); let name = defaultAddress ? defaultAddress.name : "Home"; let address = defaultAddress ? `${defaultAddress.addressLine1}, ${defaultAddress.city}` : "Add your delivery address"; if (fullText) { const parts = fullText.split(" - "); if (parts.length >= 1) name = parts[0]; if (parts.length > 1) address = parts.slice(1).join(" - "); } return { name, address }; }; const { name: defaultName, address: defaultAddr } = getDisplayParts(); if (!isAuthenticated) { // Static display for non-authenticated users (Home mode) return ( Delivery to {defaultName} {defaultAddr} ); } return ( { const { name, address } = getDisplayParts(displayText); // Home styling return ( to {name} {/* */} {address} ); }} /> ); }; export default AddressSelector;