139 lines
3.5 KiB
TypeScript
139 lines
3.5 KiB
TypeScript
import {TextInputProps, TouchableOpacityProps} from "react-native";
|
|
|
|
declare interface Driver {
|
|
driver_id: number;
|
|
first_name: string;
|
|
last_name: string;
|
|
profile_image_url: string;
|
|
car_image_url: string;
|
|
car_seats: number;
|
|
rating: number;
|
|
}
|
|
|
|
declare interface MarkerData {
|
|
latitude: number;
|
|
longitude: number;
|
|
id: number;
|
|
title: string;
|
|
profile_image_url: string;
|
|
car_image_url: string;
|
|
car_seats: number;
|
|
rating: number;
|
|
first_name: string;
|
|
last_name: string;
|
|
time?: number;
|
|
price?: string;
|
|
}
|
|
|
|
declare interface MapProps {
|
|
destinationLatitude?: number;
|
|
destinationLongitude?: number;
|
|
onDriverTimesCalculated?: (driversWithTimes: MarkerData[]) => void;
|
|
selectedDriver?: number | null;
|
|
onMapReady?: () => void;
|
|
}
|
|
|
|
declare interface Ride {
|
|
origin_address: string;
|
|
destination_address: string;
|
|
origin_latitude: number;
|
|
origin_longitude: number;
|
|
destination_latitude: number;
|
|
destination_longitude: number;
|
|
ride_time: number;
|
|
fare_price: number;
|
|
payment_status: string;
|
|
driver_id: number;
|
|
user_email: string;
|
|
created_at: string;
|
|
driver: {
|
|
first_name: string;
|
|
last_name: string;
|
|
car_seats: number;
|
|
};
|
|
}
|
|
|
|
declare interface ButtonProps extends TouchableOpacityProps {
|
|
title: string;
|
|
bgVariant?: "primary" | "secondary" | "danger" | "outline" | "success";
|
|
textVariant?: "primary" | "default" | "secondary" | "danger" | "success";
|
|
IconLeft?: React.ComponentType<any>;
|
|
IconRight?: React.ComponentType<any>;
|
|
className?: string;
|
|
}
|
|
|
|
declare interface GoogleInputProps {
|
|
icon?: string;
|
|
initialLocation?: string;
|
|
containerStyle?: string;
|
|
textInputBackgroundColor?: string;
|
|
handlePress: ({
|
|
latitude,
|
|
longitude,
|
|
address,
|
|
}: {
|
|
latitude: number;
|
|
longitude: number;
|
|
address: string;
|
|
}) => void;
|
|
}
|
|
|
|
declare interface InputFieldProps extends TextInputProps {
|
|
label: string;
|
|
icon?: any;
|
|
secureTextEntry?: boolean;
|
|
labelStyle?: string;
|
|
containerStyle?: string;
|
|
inputStyle?: string;
|
|
iconStyle?: string;
|
|
className?: string;
|
|
}
|
|
|
|
declare interface PaymentProps {
|
|
fullName: string;
|
|
email: string;
|
|
amount: string;
|
|
driverId: number;
|
|
rideTime: number;
|
|
}
|
|
|
|
declare interface LocationStore {
|
|
userLatitude: number | null;
|
|
userLongitude: number | null;
|
|
userAddress: string | null;
|
|
destinationLatitude: number | null;
|
|
destinationLongitude: number | null;
|
|
destinationAddress: string | null;
|
|
setUserLocation: ({
|
|
latitude,
|
|
longitude,
|
|
address,
|
|
}: {
|
|
latitude: number;
|
|
longitude: number;
|
|
address: string;
|
|
}) => void;
|
|
setDestinationLocation: ({
|
|
latitude,
|
|
longitude,
|
|
address,
|
|
}: {
|
|
latitude: number;
|
|
longitude: number;
|
|
address: string;
|
|
}) => void;
|
|
}
|
|
|
|
declare interface DriverStore {
|
|
drivers: MarkerData[];
|
|
selectedDriver: number | null;
|
|
setSelectedDriver: (driverId: number) => void;
|
|
setDrivers: (drivers: MarkerData[]) => void;
|
|
clearSelectedDriver: () => void;
|
|
}
|
|
|
|
declare interface DriverCardProps {
|
|
item: MarkerData;
|
|
selected: number;
|
|
setSelected: () => void;
|
|
} |