Once the token transfer is initiated, the API will return a order_id, which can be used to track the status of the transfer along with other order details.
Fetch Order Details
We will be using the orderHistory method to fetch all the order details for the user. Then we can use the order_id to check our current order details.
We will create a new screen named order-details.tsx and fetch all the orders and filter the order details using the order_id.
But before that we need to register the screen in the navigation.tsx file with orderId as parameter
export type RootStackParamList = {
...
OrderDetails: {
order_id: string
};
}
export default function Navigation(){
return (
<Stack.Navigator initialRouteName="Login">
...
<Stack.Screen name="OrderDetails" component={OrderDetailsScreen} />
</Stack.Navigator>
)
}Now we can accept the order_id as a parameter in the order-details.tsx screen.
import React, { useState } from 'react';
import { RootStackParamList } from "../navigtion";
import { useOkto, type OktoContextType, type Order} from 'okto-sdk-react-native';
const OrderDetailsScreen = ({ route }: { route: RouteProp<RootStackParamList, "OrderDetails"> }) => {
const { orderHistory } = useOkto() as OktoContextType;
const { orderId } = route.params;
const [order, setOrder] = React.useState<Order | null>(null);
React.useEffect(() => {
orderHistory({order_id: orderId})
.then((orders) => {
const order = orders.find((order: any) => order.order_id === orderId);
if(order) setOrder(order);
})
.catch((error) => {
console.error(`error:`, error);
});
}, [])
}Display Order Details
We will now display the order details on the screen. We will use the order state to display the details.
import { RootStackParamList } from "../navigtion";
import { View, TextInput, Button } from 'react-native';
const OrderDetailsScreen = ({ route }: { route: RouteProp<RootStackParamList, "OrderDetails"> }) => {
...
return (
<View style={{ flex: 1, backgroundColor: '#fff' }}>
<Text>Order Details</Text>
{order && <View>
<Text>Order ID: {order.order_id}</Text>
<Text>Order Type: {order.order_type}</Text>
<Text>Order Status: {order.status}</Text>
<Text>Order Transaction Hash: {order.transaction_hash}</Text>
<Text>Order Network Name: {order.network_name}</Text>
</View>}
</View>
)
}Add Navigation
Now, let's add a automatic navigation from transfer-tokens.tsx to take the user to order-details.tsx for checking the order details.
const TransferTokensScreen = ({ navigation }: { navigation: any }) => {
const handleSubmit = () => {
transferTokens(
networkName,
tokenAddress,
recipientAddress,
quantity
).then((result) => {
navigation.navigate('OrderDetails', { order_id: result.order_id })
})
.catch((error) => {
console.log('Transfer error', error);
});
}
return (
...
)
}