import React, { useState, useEffect, useCallback, useMemo } from "react"; import { View, Text, FlatList, TouchableOpacity, StyleSheet, TextInput as RNTextInput, } from "react-native"; import { useNavigation, useFocusEffect } from "@react-navigation/native"; import type { NativeStackNavigationProp } from "@react-navigation/native-stack"; import { Ionicons } from "@expo/vector-icons"; import { getMyOrders, getOrderTracking, getOrderETA, confirmReception, cancelCommand, respondToAddressProposal, updateOwnCommandAddress, formatOrderDate, formatPrice, calculateOrderTotal, getPublicSettings, } from "../../api/api"; import type { OrderDetail, TrackingResponse, ETAResponse, CancelCommandResponse, } from "../../api/api_types"; import type { ClientStackParamList } from "../../navigation/types"; import StatusBadge from "../../components/StatusBadge"; import LoadingSpinner from "../../components/ui/LoadingSpinner"; import Button from "../../components/ui/Button"; import Modal from "../../components/ui/Modal"; import Toast from "../../components/ui/Toast"; import { useTheme } from "../../context/ThemeContext"; import { spacing, borderRadius, fontSize, fontWeight, shadows, } from "../../theme"; type Nav = NativeStackNavigationProp; const STATUS_PROGRESS: Record = { pending: 15, assigned: 25, en_route: 60, arrived: 85, livre: 95, approved: 100, cancelled: 0, }; export default function OrderTrackingScreen() { const navigation = useNavigation