import React, { useCallback, useEffect, useState } from 'react';
import { RefreshControl } from 'react-native';
import ScreenLayout from '../components/ScreenLayout';
import StyledButton from '../../StyledButton';
import { useNavigation, useRoute } from '@react-navigation/native';
import OrderDetail from '../components/OrderDetails';
import { strings } from '../../../../../locales/i18n';
import {
makeOrderIdSelector,
updateFiatOrder,
} from '../../../../reducers/fiatOrders';
import { useDispatch, useSelector } from 'react-redux';
import { getFiatOnRampAggNavbar } from '../../Navbar';
import { useTheme } from '../../../../util/theme';
import { ScrollView } from 'react-native-gesture-handler';
import Routes from '../../../../constants/navigation/Routes';
import { FiatOrder, processFiatOrder } from '../../FiatOrders';
import useAnalytics from '../hooks/useAnalytics';
import { Order } from '@consensys/on-ramp-sdk';
import Logger from '../../../../util/Logger';
const OrderDetails = () => {
const trackEvent = useAnalytics();
const provider = useSelector(
(state: any) => state.engine.backgroundState.NetworkController.provider,
);
const frequentRpcList = useSelector(
(state: any) =>
state.engine.backgroundState.PreferencesController.frequentRpcList,
);
const routes = useRoute();
const order: FiatOrder = useSelector(
// @ts-expect-error expect params error
makeOrderIdSelector(routes?.params?.orderId),
);
const { colors } = useTheme();
const navigation = useNavigation();
const dispatch = useDispatch();
const [isRefreshing, setIsRefreshing] = useState(false);
useEffect(() => {
navigation.setOptions(
getFiatOnRampAggNavbar(
navigation,
{
title: strings('fiat_on_ramp_aggregator.order_details.details_main'),
showBack: false,
},
colors,
),
);
}, [colors, navigation]);
useEffect(() => {
if (order) {
trackEvent('ONRAMP_PURCHASE_DETAILS_VIEWED', {
purchase_status: order.state,
provider_onramp: (order.data as Order)?.provider.name,
payment_method_id: (order.data as Order)?.paymentMethod?.id,
currency_destination: order.cryptocurrency,
currency_source: order.currency,
chain_id_destination: order.network,
});
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [trackEvent]);
const dispatchUpdateFiatOrder = useCallback(
(updatedOrder) => {
dispatch(updateFiatOrder(updatedOrder));
},
[dispatch],
);
const handleOnRefresh = useCallback(async () => {
try {
setIsRefreshing(true);
await processFiatOrder(order, dispatchUpdateFiatOrder);
} catch (error) {
Logger.error(error as Error, {
message: 'FiatOrders::OrderDetails error while processing order',
order,
});
} finally {
setIsRefreshing(false);
}
}, [dispatchUpdateFiatOrder, order]);
const handleMakeAnotherPurchase = useCallback(() => {
navigation.goBack();
navigation.navigate(Routes.FIAT_ON_RAMP_AGGREGATOR.ID);
}, [navigation]);
if (!order) {
return ;
}
return (
}
>
{strings(
'fiat_on_ramp_aggregator.order_details.another_purchase',
)}
);
};
export default OrderDetails;