enh
This commit is contained in:
parent
e447ab0205
commit
4d70717fb0
13 changed files with 40 additions and 40 deletions
|
|
@ -246,7 +246,7 @@ export default function OrderDetails() {
|
|||
<View style={tw`flex-row items-center bg-gray-50 p-3 rounded-xl mb-2 ${order.isFlashDelivery ? 'bg-amber-50' : 'bg-brand50'}`}>
|
||||
<MaterialIcons name="access-time" size={20} color={order.isFlashDelivery ? "#D97706" : theme.colors.brand800} />
|
||||
<MyText style={tw`ml-2 font-medium ${order.isFlashDelivery ? 'text-amber-800' : 'text-brand800'}`}>
|
||||
{order.isFlashDelivery ? "Flash Delivery:" : "Delivery at:"} {order.isFlashDelivery
|
||||
{order.isFlashDelivery ? "1 Hr Delivery:" : "Delivery at:"} {order.isFlashDelivery
|
||||
? dayjs(order.createdAt).add(30, 'minutes').format("MMM DD, YYYY • h:mm A")
|
||||
: order.slotInfo?.time ? dayjs(order.slotInfo.time).format("MMM DD, YYYY • h:mm A") : 'Not scheduled'}
|
||||
</MyText>
|
||||
|
|
@ -255,7 +255,7 @@ export default function OrderDetails() {
|
|||
<View style={tw`flex-row items-center bg-amber-50 p-3 rounded-xl border border-amber-200`}>
|
||||
<MaterialIcons name="bolt" size={18} color="#D97706" />
|
||||
<MyText style={tw`ml-2 text-amber-800 font-bold text-sm`}>
|
||||
⚡ 30-Minute Flash Delivery • High Priority
|
||||
⚡ 1 Hr Delivery • High Priority
|
||||
</MyText>
|
||||
</View>
|
||||
)}
|
||||
|
|
@ -505,7 +505,7 @@ export default function OrderDetails() {
|
|||
</View>
|
||||
</View>
|
||||
|
||||
{/* Flash Delivery Priority Notice */}
|
||||
{/* 1 Hr Delivery Priority Notice */}
|
||||
{order.isFlashDelivery && (
|
||||
<View
|
||||
style={tw`bg-gradient-to-r from-amber-50 to-yellow-50 p-5 rounded-2xl border border-amber-200 mb-4`}
|
||||
|
|
@ -513,11 +513,11 @@ export default function OrderDetails() {
|
|||
<View style={tw`flex-row items-center mb-2`}>
|
||||
<MaterialIcons name="bolt" size={24} color="#D97706" />
|
||||
<MyText style={tw`text-amber-900 font-bold text-lg ml-3`}>
|
||||
Flash Delivery Order
|
||||
1 Hr Delivery Order
|
||||
</MyText>
|
||||
</View>
|
||||
<MyText style={tw`text-amber-800 text-sm leading-5`}>
|
||||
⚡ This is a high-priority flash delivery order that must be delivered within 30 minutes of placement.
|
||||
⚡ This is a high-priority flash delivery order that must be delivered within 1 hr of placement.
|
||||
</MyText>
|
||||
<View style={tw`mt-3 p-3 bg-amber-100 rounded-lg border border-amber-300`}>
|
||||
<MyText style={tw`text-amber-900 font-semibold text-sm`}>
|
||||
|
|
|
|||
|
|
@ -249,14 +249,14 @@ const OrderItem = ({ order, refetch }: { order: OrderType; refetch: () => void }
|
|||
<View style={tw`flex-row items-center mt-2`}>
|
||||
<MaterialIcons name="event" size={14} color="#6B7280" />
|
||||
<MyText style={tw`text-xs text-gray-600 ml-1`}>
|
||||
{order.isFlashDelivery ? "Flash Delivery:" : "Slot:"} {order.isFlashDelivery ? dayjs(order.createdAt).add(30, 'minutes').format('MMM D, h:mm A') : order.deliveryTime ? dayjs(order.deliveryTime).format("ddd, MMM D • h:mm A") : 'Not scheduled'}
|
||||
{order.isFlashDelivery ? "1 Hr Delivery:" : "Slot:"} {order.isFlashDelivery ? dayjs(order.createdAt).add(30, 'minutes').format('MMM D, h:mm A') : order.deliveryTime ? dayjs(order.deliveryTime).format("ddd, MMM D • h:mm A") : 'Not scheduled'}
|
||||
</MyText>
|
||||
</View>
|
||||
{order.isFlashDelivery && (
|
||||
<View style={tw`flex-row items-center mt-1 bg-amber-50 px-2 py-1 rounded`}>
|
||||
<MaterialIcons name="bolt" size={12} color="#D97706" />
|
||||
<MyText style={tw`text-xs text-amber-700 ml-1 font-medium`}>
|
||||
30-Minute Delivery • High Priority
|
||||
1 Hour Delivery • High Priority
|
||||
</MyText>
|
||||
</View>
|
||||
)}
|
||||
|
|
@ -761,7 +761,7 @@ export default function Orders() {
|
|||
}
|
||||
}}
|
||||
/>
|
||||
<MyText style={tw`ml-2`}>⚡ Flash Delivery</MyText>
|
||||
<MyText style={tw`ml-2`}>⚡ 1 Hr Delivery</MyText>
|
||||
</View>
|
||||
<View style={tw`flex-row items-center`}>
|
||||
<Checkbox
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@ export default function FlashDeliveryBaseLayout() {
|
|||
<MaterialIcons name="flash-off" size={64} color="#9ca3af" />
|
||||
</View>
|
||||
<MyText style={tw`text-2xl font-bold text-gray-800 mb-4 text-center`}>
|
||||
Flash Delivery Unavailable
|
||||
1 Hr Delivery Unavailable
|
||||
</MyText>
|
||||
<MyText style={tw`text-base text-gray-600 text-center mb-8`}>
|
||||
Flash Delivery is not available at the moment. Please opt for a scheduled delivery.
|
||||
1 Hr Delivery is not available at the moment. Please opt for a scheduled delivery.
|
||||
</MyText>
|
||||
<MyTouchableOpacity
|
||||
onPress={() => router.replace('/(drawer)/(tabs)/home')}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ export default function FlashDeliveryOrderSuccess() {
|
|||
weight="bold"
|
||||
style={tw`text-3xl mb-4 text-center text-gray-900`}
|
||||
>
|
||||
Flash Order Placed!
|
||||
1 Hr Order Placed!
|
||||
</MyText>
|
||||
|
||||
<MyText style={tw`text-lg text-center text-gray-600 mb-2`}>
|
||||
|
|
@ -35,14 +35,14 @@ export default function FlashDeliveryOrderSuccess() {
|
|||
</MyText>
|
||||
|
||||
<MyText style={tw`text-base text-center text-gray-500 mb-8`}>
|
||||
Your order will be delivered in just 30 minutes
|
||||
Your order will be delivered in just within 1 hour
|
||||
</MyText>
|
||||
|
||||
{/* Order Details (if available) */}
|
||||
{orderId && (
|
||||
<View style={tw`bg-gray-50 px-4 py-3 rounded-lg mb-8`}>
|
||||
<MyText style={tw`text-sm text-gray-600 text-center`}>
|
||||
Flash Order #{orderId}
|
||||
1 Hr Order #{orderId}
|
||||
</MyText>
|
||||
{totalAmount && (
|
||||
<MyText weight="semibold" style={tw`text-lg text-gray-900 text-center mt-1`}>
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ export default function OrderDetails() {
|
|||
<MyText style={tw`text-slate-900 font-bold text-lg`}>Order #{order.orderId}</MyText>
|
||||
<MyText style={tw`text-slate-400 text-xs`}>{dayjs(order.orderDate).format("DD MMM, h:mm A")}</MyText>
|
||||
{order.isFlashDelivery && (
|
||||
<MyText style={tw`text-amber-600 text-xs font-bold mt-1`}>⚡ 30-Minute Flash Delivery</MyText>
|
||||
<MyText style={tw`text-amber-600 text-xs font-bold mt-1`}>⚡ 1 Hr Delivery</MyText>
|
||||
)}
|
||||
</View>
|
||||
</View>
|
||||
|
|
@ -157,15 +157,15 @@ export default function OrderDetails() {
|
|||
</View>
|
||||
|
||||
<ScrollView showsVerticalScrollIndicator={false} contentContainerStyle={tw`p-4 pb-12`}>
|
||||
{/* Flash Delivery Banner */}
|
||||
{/* 1 Hr Delivery Banner */}
|
||||
{order.isFlashDelivery && (
|
||||
<View style={tw`bg-gradient-to-r from-amber-50 to-yellow-50 border border-amber-200 rounded-2xl p-4 mb-4`}>
|
||||
<View style={tw`flex-row items-center`}>
|
||||
<MaterialIcons name="bolt" size={24} color="#D97706" />
|
||||
<View style={tw`ml-3 flex-1`}>
|
||||
<MyText style={tw`text-amber-900 font-bold text-sm`}>Flash Delivery Order</MyText>
|
||||
<MyText style={tw`text-amber-900 font-bold text-sm`}>1 Hr Delivery Order</MyText>
|
||||
<MyText style={tw`text-amber-700 text-xs mt-1`}>
|
||||
Your order will be delivered within 30 minutes of placement
|
||||
Your order will be delivered within 1 hr of placement
|
||||
</MyText>
|
||||
</View>
|
||||
</View>
|
||||
|
|
@ -208,12 +208,12 @@ export default function OrderDetails() {
|
|||
</View>
|
||||
)}
|
||||
|
||||
{/* Flash Delivery Info */}
|
||||
{/* 1 Hr Delivery Info */}
|
||||
{order.isFlashDelivery && !["delivered", "success"].includes(order.deliveryStatus?.toLowerCase() || "") && (
|
||||
<View style={tw`flex-row items-center pt-4 border-t border-slate-50`}>
|
||||
<MaterialIcons name="bolt" size={18} color="#D97706" />
|
||||
<MyText style={tw`text-amber-700 text-xs ml-2 font-medium`}>
|
||||
Flash Delivery: {dayjs(order.createdAt || order.orderDate).add(30, 'minutes').format("DD MMM YYYY, h:mm A")}
|
||||
1 Hr Delivery: {dayjs(order.createdAt || order.orderDate).add(30, 'minutes').format("DD MMM YYYY, h:mm A")}
|
||||
</MyText>
|
||||
</View>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ const OrderItem: React.FC<OrderItemProps> = ({
|
|||
</View>
|
||||
<View>
|
||||
<MyText style={[tw`text-[10px] font-bold uppercase`, item.isFlashDelivery ? tw`text-amber-700` : tw`text-brand700`]}>
|
||||
{item.isFlashDelivery ? "Flash Delivery" : "Delivery Time"}
|
||||
{item.isFlashDelivery ? "1 Hr Delivery" : "Delivery Time"}
|
||||
</MyText>
|
||||
<MyText style={[tw`text-sm font-extrabold`, item.isFlashDelivery ? tw`text-amber-900` : tw`text-brand900`]}>
|
||||
{item.isFlashDelivery
|
||||
|
|
@ -262,7 +262,7 @@ const OrderItem: React.FC<OrderItemProps> = ({
|
|||
)}
|
||||
</View>
|
||||
<MyText style={tw`text-[10px] font-bold text-slate-400 uppercase mr-2`}>
|
||||
{item.isFlashDelivery ? "Flash Delivery:" : "Shipping Status:"}
|
||||
{item.isFlashDelivery ? "1 Hr Delivery:" : "Shipping Status:"}
|
||||
</MyText>
|
||||
<MyText style={[tw`text-xs font-bold`, item.isFlashDelivery ? tw`text-amber-700` : { color: deliveryStatus.color }]} numberOfLines={1}>
|
||||
{item.deliveryStatus}
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ export default function Layout() {
|
|||
>
|
||||
<Ionicons name="flash" size={28} color="white" />
|
||||
</LinearGradient>
|
||||
<MyText numberOfLines={1} style={tw`text-[10px] font-bold mt-0.5 ${props.accessibilityState?.selected ? 'text-brand600' : 'text-gray-500'}`}>Flash Delivery</MyText>
|
||||
<MyText numberOfLines={1} style={tw`text-[10px] font-bold mt-0.5 ${props.accessibilityState?.selected ? 'text-brand600' : 'text-gray-500'}`}>1 Hr Delivery</MyText>
|
||||
</View>
|
||||
</MyTouchableOpacity>
|
||||
),
|
||||
|
|
|
|||
|
|
@ -45,10 +45,10 @@ const FlashDeliveryNote: React.FC<FlashDeliveryNoteProps> = ({
|
|||
</View>
|
||||
<View style={tw`flex-1`}>
|
||||
<MyText style={tw`text-amber-900 font-bold text-sm mb-1`}>
|
||||
Flash Delivery Notice
|
||||
1 Hr Delivery Notice
|
||||
</MyText>
|
||||
<MyText style={tw`text-amber-800 text-sm leading-5`}>
|
||||
Prices may differ for Flash Delivery and not all products are available for flash delivery
|
||||
Prices may differ for 1 Hr Delivery and not all products are available for flash delivery
|
||||
</MyText>
|
||||
</View>
|
||||
</View>
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ const ProductDetail: React.FC<ProductDetailProps> = ({ productId, isFlashDeliver
|
|||
{productDetail.isFlashAvailable && (
|
||||
<View style={tw`bg-pink-100 px-3 py-1 rounded-full flex-row items-center`}>
|
||||
<MaterialIcons name="bolt" size={12} color="#EC4899" style={tw`mr-1`} />
|
||||
<MyText style={tw`text-pink-700 text-xs font-bold`}>Flash Delivery</MyText>
|
||||
<MyText style={tw`text-pink-700 text-xs font-bold`}>1 Hr Delivery</MyText>
|
||||
</View>
|
||||
)}
|
||||
{productDetail.isOutOfStock && (
|
||||
|
|
@ -272,7 +272,7 @@ const ProductDetail: React.FC<ProductDetailProps> = ({ productId, isFlashDeliver
|
|||
{productDetail.isFlashAvailable && productDetail.flashPrice && productDetail.flashPrice !== productDetail.price && (
|
||||
<View style={tw`mt-1`}>
|
||||
<MyText style={tw`text-pink-600 text-lg font-bold`}>
|
||||
Flash Delivery: ₹{productDetail.flashPrice} / {formatQuantity(productDetail.productQuantity || 1, productDetail.unitNotation).display}
|
||||
1 Hr Delivery: ₹{productDetail.flashPrice} / {formatQuantity(productDetail.productQuantity || 1, productDetail.unitNotation).display}
|
||||
</MyText>
|
||||
</View>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ const QuickDeliveryAddressSelector: React.FC<QuickDeliveryAddressSelectorProps>
|
|||
|
||||
// Get current selected slot display
|
||||
const getCurrentSlotDisplay = () => {
|
||||
if (isForFlashDelivery) return '30 minutes';
|
||||
if (isForFlashDelivery) return 'within 1 hour';
|
||||
if (slotId) {
|
||||
const slot = slotsData?.slots?.find(s => s.id === slotId);
|
||||
return slot ? formatTimeRange(slot.deliveryTime) : 'Select time';
|
||||
|
|
@ -115,7 +115,7 @@ const QuickDeliveryAddressSelector: React.FC<QuickDeliveryAddressSelectorProps>
|
|||
<MaterialIcons name="chevron-left" size={24} color="#f81260" />
|
||||
</MyTouchableOpacity>
|
||||
<MyText style={[tw`text-lg font-bold ml-2`, { color: '#f81260' }]}>
|
||||
Delivery in 30 minutes
|
||||
Delivery in within 1 hour
|
||||
</MyText>
|
||||
</View>
|
||||
)}
|
||||
|
|
@ -196,7 +196,7 @@ const QuickDeliveryAddressSelector: React.FC<QuickDeliveryAddressSelectorProps>
|
|||
<View style={tw`flex-row items-center`}>
|
||||
<MaterialIcons name="bolt" size={20} color="#16a34a" />
|
||||
<MyText style={tw`text-green-800 font-medium ml-2`}>
|
||||
Flash Delivery - 30 minutes
|
||||
1 Hr Delivery - within 1 hour
|
||||
</MyText>
|
||||
</View>
|
||||
<MyText style={tw`text-green-700 text-xs mt-1`}>
|
||||
|
|
|
|||
|
|
@ -449,7 +449,7 @@ export function FlashDeliveryProducts({ storeId:storeIdParent, baseUrl, onProduc
|
|||
return (
|
||||
<AppContainer>
|
||||
<View style={tw`flex-1 justify-center items-center bg-gray-50`}>
|
||||
<MyText style={tw`text-gray-500 font-medium`}>Loading Flash Delivery...</MyText>
|
||||
<MyText style={tw`text-gray-500 font-medium`}>Loading 1 Hr Delivery...</MyText>
|
||||
</View>
|
||||
</AppContainer>
|
||||
);
|
||||
|
|
@ -461,7 +461,7 @@ export function FlashDeliveryProducts({ storeId:storeIdParent, baseUrl, onProduc
|
|||
<View style={tw`flex-1 justify-center items-center bg-gray-50`}>
|
||||
<MaterialIcons name="error-outline" size={48} color="#D84343" />
|
||||
<MyText style={tw`text-gray-900 text-lg font-bold mt-4`}>Oops!</MyText>
|
||||
<MyText style={tw`text-gray-500 mt-2`}>Failed to load Flash Delivery</MyText>
|
||||
<MyText style={tw`text-gray-500 mt-2`}>Failed to load 1 Hr Delivery</MyText>
|
||||
</View>
|
||||
</AppContainer>
|
||||
);
|
||||
|
|
@ -502,7 +502,7 @@ export function FlashDeliveryProducts({ storeId:storeIdParent, baseUrl, onProduc
|
|||
onRefresh={() => productsQuery.refetch()}
|
||||
ListEmptyComponent={
|
||||
<View style={tw`items-center justify-center py-10`}>
|
||||
<MyText style={tw`text-gray-400 font-medium`}>No Flash Delivery products available.</MyText>
|
||||
<MyText style={tw`text-gray-400 font-medium`}>No 1 Hr Delivery products available.</MyText>
|
||||
</View>
|
||||
}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -359,7 +359,7 @@ export default function CartPage({ isFlashDelivery = false }: CartPageProps) {
|
|||
tw`text-lg font-bold ml-2`,
|
||||
{ color: isFlashDelivery ? '#f81260' : '#374151' }
|
||||
]}>
|
||||
{isFlashDelivery ? "Flash Delivery Cart" : "Scheduled Delivery Cart"}
|
||||
{isFlashDelivery ? "1 Hr Delivery Cart" : "Scheduled Delivery Cart"}
|
||||
</MyText>
|
||||
</View>
|
||||
</View>
|
||||
|
|
@ -508,7 +508,7 @@ export default function CartPage({ isFlashDelivery = false }: CartPageProps) {
|
|||
</View>
|
||||
</View>
|
||||
|
||||
{/* Delivery Slot Selection per Product - Hidden for Flash Delivery */}
|
||||
{/* Delivery Slot Selection per Product - Hidden for 1 Hr Delivery */}
|
||||
{!isFlashDelivery && (
|
||||
<View style={tw`flex flex-row items-center justify-between mt-2`}>
|
||||
<View style={tw`flex-1 mr-4`}>
|
||||
|
|
@ -608,7 +608,7 @@ export default function CartPage({ isFlashDelivery = false }: CartPageProps) {
|
|||
</View>
|
||||
)}
|
||||
|
||||
{/* Price for Flash Delivery (already in same row as slot) */}
|
||||
{/* Price for 1 Hr Delivery (already in same row as slot) */}
|
||||
{isFlashDelivery && (
|
||||
<View style={tw`flex-row justify-end mt-2`}>
|
||||
<View style={tw`flex-row items-center gap-2`}>
|
||||
|
|
@ -699,11 +699,11 @@ export default function CartPage({ isFlashDelivery = false }: CartPageProps) {
|
|||
</View>
|
||||
<View style={tw`flex-1`}>
|
||||
<MyText style={tw`text-base font-bold text-gray-900`}>
|
||||
{isFlashDelivery ? "Flash Delivery" : "Scheduled Delivery"}
|
||||
{isFlashDelivery ? "1 Hr Delivery" : "Scheduled Delivery"}
|
||||
</MyText>
|
||||
<MyText style={tw`text-sm text-gray-500 mt-0.5`}>
|
||||
{isFlashDelivery
|
||||
? "30 min delivery • Immediate pickup"
|
||||
? "within 1 hour delivery • Immediate pickup"
|
||||
: "Choose your preferred delivery time"
|
||||
}
|
||||
</MyText>
|
||||
|
|
@ -725,7 +725,7 @@ export default function CartPage({ isFlashDelivery = false }: CartPageProps) {
|
|||
activeOpacity={0.8}
|
||||
>
|
||||
<MyText style={tw`text-gray-700 font-medium mr-1`}>
|
||||
{isFlashDelivery ? "Go to Scheduled Delivery" : "Go to Flash Delivery"}
|
||||
{isFlashDelivery ? "Go to Scheduled Delivery" : "Go to 1 Hr Delivery"}
|
||||
</MyText>
|
||||
<MaterialIcons
|
||||
name="arrow-forward"
|
||||
|
|
@ -914,7 +914,7 @@ export default function CartPage({ isFlashDelivery = false }: CartPageProps) {
|
|||
flashEligibleProductIds.has(item.productId)
|
||||
);
|
||||
if (flashEligibleItems.length === 0) {
|
||||
errorTitle = "Flash Delivery Unavailable";
|
||||
errorTitle = "1 Hr Delivery Unavailable";
|
||||
errorMessage = "None of the items in your cart are available for flash delivery. Please remove ineligible items or switch to regular delivery.";
|
||||
} else {
|
||||
errorTitle = "Some Items Not Available";
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ const CheckoutPage: React.FC<CheckoutPageProps> = ({ isFlashDelivery = false })
|
|||
tw`text-lg font-bold ml-2`,
|
||||
{ color: isFlashDelivery ? '#f81260' : '#374151' }
|
||||
]}>
|
||||
{isFlashDelivery ? "Flash Delivery Checkout" : "Scheduled Delivery Checkout"}
|
||||
{isFlashDelivery ? "1 Hr Delivery Checkout" : "Scheduled Delivery Checkout"}
|
||||
</MyText>
|
||||
</View>
|
||||
</View>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue