keepyourmouthshut/Customer App/src/components/Menu/StatusCard/StatusCard.js

116 lines
3.4 KiB
JavaScript
Raw Normal View History

2023-03-13 11:03:39 +00:00
import { useNavigation, useTheme } from "@react-navigation/native";
import React, { useContext } from "react";
import { FlatList, TouchableOpacity, View } from "react-native";
import ConfigurationContext from "../../../context/Configuration";
import UserContext from "../../../context/User";
import { alignment } from "../../../utils/alignment";
import { NAVIGATION_SCREEN } from "../../../utils/constant";
import Spinner from "../../Spinner/Spinner";
import TextDefault from "../../Text/TextDefault/TextDefault";
import TextError from "../../Text/TextError/TextError";
import useStyle from "./styles";
2022-12-21 09:56:47 +00:00
export const orderStatuses = [
{
2023-03-13 11:03:39 +00:00
key: "PENDING",
2022-12-21 09:56:47 +00:00
status: 1,
2023-03-13 11:03:39 +00:00
statusText: "Your order is still pending.",
2022-12-21 09:56:47 +00:00
},
{
2023-03-13 11:03:39 +00:00
key: "ACCEPTED",
2022-12-21 09:56:47 +00:00
status: 2,
2023-03-13 11:03:39 +00:00
statusText: "Restaurant is preparing Food.",
2022-12-21 09:56:47 +00:00
},
{
2023-03-13 11:03:39 +00:00
key: "PICKED",
2022-12-21 09:56:47 +00:00
status: 3,
2023-03-13 11:03:39 +00:00
statusText: "Rider is on the way.",
2022-12-21 09:56:47 +00:00
},
{
2023-03-13 11:03:39 +00:00
key: "DELIVERED",
2022-12-21 09:56:47 +00:00
status: 4,
2023-03-13 11:03:39 +00:00
statusText: "Order is delivered.",
2022-12-21 09:56:47 +00:00
},
{
2023-03-13 11:03:39 +00:00
key: "COMPLETED",
2022-12-21 09:56:47 +00:00
status: 5,
2023-03-13 11:03:39 +00:00
statusText: "Order is completed.",
},
];
2022-12-21 09:56:47 +00:00
2023-03-13 11:03:39 +00:00
const orderStatusActive = ["PENDING", "PICKED", "ACCEPTED"];
2022-12-21 09:56:47 +00:00
const StatusCard = () => {
2023-03-13 11:03:39 +00:00
const { colors } = useTheme();
const styles = useStyle();
const navigation = useNavigation();
2022-12-21 09:56:47 +00:00
const {
loadingOrders,
errorOrders,
orders,
networkStatusOrders,
2023-03-13 11:03:39 +00:00
fetchOrders,
} = useContext(UserContext);
const configuration = useContext(ConfigurationContext);
2022-12-21 09:56:47 +00:00
2023-03-13 11:03:39 +00:00
const checkStatus = (status) => {
const obj = orderStatuses.filter((x) => {
return x.key === status;
});
return obj[0];
};
2022-12-21 09:56:47 +00:00
2023-03-13 11:03:39 +00:00
if (loadingOrders) return <Spinner />;
if (errorOrders) return <TextError>{errorOrders.message}</TextError>;
2022-12-21 09:56:47 +00:00
return (
<FlatList
contentContainerStyle={styles.mainContainer}
showsVerticalScrollIndicator={false}
showsHorizontalScrollIndicator={false}
horizontal={true}
refreshing={networkStatusOrders === 4}
onRefresh={() => networkStatusOrders === 7 && fetchOrders()}
2023-03-13 11:03:39 +00:00
data={orders.filter((o) => orderStatusActive.includes(o.order_status))}
//keyExtractor={(item) => item._id}
keyExtractor={(item, index) => String(index)}
2022-12-21 09:56:47 +00:00
renderItem={({ item, index }) => (
<TouchableOpacity
activeOpacity={0.8}
style={{ flex: 1, paddingHorizontal: 10 }}
onPress={() =>
navigation.navigate(NAVIGATION_SCREEN.OrderDetail, {
_id: item._id,
2023-03-13 11:03:39 +00:00
currency_symbol: configuration.currency_symbol,
2022-12-21 09:56:47 +00:00
})
2023-03-13 11:03:39 +00:00
}
>
2022-12-21 09:56:47 +00:00
<View key={index} style={styles.statusContainer}>
<View style={styles.textContainer}>
<TextDefault H5 medium textColor={styles.lightText.color}>
Your order ID
</TextDefault>
<TextDefault style={{ ...alignment.PBlarge }} H4 bolder>
{item.order_id}
</TextDefault>
<TextDefault H5 textColor={colors.placeHolderColor} medium>
Status
</TextDefault>
2023-03-13 11:03:39 +00:00
<TextDefault textColor={"#00b9c6"} H5 medium>
{item.order_status}{" "}
2022-12-21 09:56:47 +00:00
<TextDefault numberOfLines={2} medium>
{/* {checkStatus(item.order_status).status}.{' '} */}(
{checkStatus(item.order_status).statusText})
</TextDefault>
</TextDefault>
</View>
</View>
</TouchableOpacity>
)}
/>
2023-03-13 11:03:39 +00:00
);
};
2022-12-21 09:56:47 +00:00
2023-03-13 11:03:39 +00:00
export default StatusCard;