diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index cd9719bd44d3e82af60b1e0c12a40a54e6f3ed38..cdeba570beddf6d56091e63e767f16cbef6019dd 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -3,7 +3,7 @@ <option name="myName" value="Project Default" /> <inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true"> <Languages> - <language minSize="73" name="JavaScript" /> + <language minSize="93" name="JavaScript" /> </Languages> </inspection_tool> </profile> diff --git a/driver/Driver_main.js b/driver/Driver_main.js index b76ec7e2673af0ad915ac68d8025fa57bd671729..f9425f4da6c7c170333c601fcdc6eab59ec22809 100644 --- a/driver/Driver_main.js +++ b/driver/Driver_main.js @@ -21,7 +21,6 @@ import { change_user_to_customer, serverIp, } from '../common_files/Texts' -import {compareDistKm} from './Orders' import SectionListCustomers from './SectionListCustomers' import {getToken} from '../common_files/ourFunctions' import {updateOrderList, updateUserType} from '../redux/actions' @@ -42,29 +41,34 @@ class Driver_main extends React.Component { } toggleSwitch = (value) => { + this.getLocationAsync() this.setState({isAvailable: value}) if (value) { + this.getOrders() this.interval = setInterval(() => this.getOrders(), 30000) } else { clearInterval(this.interval) } - this.sort() + //this.sort() } - sort = () => { - this.setState((prevState) => ({ + sort = (json) => { + let newOrderList = [...json] + for (let i = 0; i < json.length; i++) { + newOrderList[i].km = this.getDistanceBetweenCustomerAndDriver( + json[i] + ) + } + return newOrderList + /*this.setState((prevState) => ({ orders: prevState.orders.sort(compareDistKm), - })) + }))*/ } getLocationAsync = async () => { let {status} = await Permissions.askAsync(Permissions.LOCATION) - this.setState({errorMessage: 'granted', isGranted: true}) - if (status !== 'granted') { - this.setState({ - errorMessage: 'Du må slå på lokasjonen for å bruke appen', - isGranted: false, - }) + if (status === 'granted') { + this.props.updatePermission({location: 'granted'}) } let location = await Location.getCurrentPositionAsync({ @@ -92,7 +96,10 @@ class Driver_main extends React.Component { const {latitude, longitude} = location.coords await this.getGeocodeAsync({latitude, longitude}) - this.setState({location: {latitude, longitude}}) + this.props.updateCustomerLocation({ + latitude: latitude, + longitude: longitude, + }) } getGeocodeAsync = async (location) => { @@ -100,17 +107,18 @@ class Driver_main extends React.Component { this.setState({geocode}) } - getDistanceBetweenCustomerAndDriver = () => { + getDistanceBetweenCustomerAndDriver = (customerLocation) => { const distanceBetween = ( getPreciseDistance( { - latitude: this.state.latitude, - longitude: this.state.longitude, + latitude: customerLocation.latitude, + longitude: customerLocation.longitude, }, - this.state.secondLocation + this.props.customerLocation ) / 1000 ).toFixed(2) - this.setState({distanceBetween: distanceBetween}) + return distanceBetween + //this.setState({distanceBetween: distanceBetween}) } getOrders = async () => { @@ -125,7 +133,8 @@ class Driver_main extends React.Component { .then((response) => response.json()) .then((json) => { if (json.length) { - this.props.updateOrderList(json) + let sortedJson = this.sort(json) + this.props.updateOrderList(sortedJson) return json[0].object } else { console.log('Array was empty') diff --git a/driver/Order.js b/driver/Order.js index 4f533b9b67f73e75b60ec6ecd8b0631d1aeb43d6..30a47ea524a5ff23df78d0fcea53a68020969a01 100644 --- a/driver/Order.js +++ b/driver/Order.js @@ -13,6 +13,7 @@ import {connect} from 'react-redux' import {accept, km, serverIp} from '../common_files/Texts' import {getToken} from '../common_files/ourFunctions' import {updateMobNum} from '../redux/actions' + import store from '../redux/store' class Order extends React.Component { @@ -40,11 +41,7 @@ class Order extends React.Component { .then((response) => response.json()) .then((json) => { console.log('took Order, got Phone number:') - console.log(this.props.orderId) - console.log(this.props.deviceId) - console.log(json) - console.log(json[0].phoneNumber) - this.props.updateMobNum(json[0].phoneNumber) + this.props.updateMobNum(json[1][0].phoneNumber) }) .catch((error) => { console.error(error) @@ -60,11 +57,13 @@ class Order extends React.Component { <TouchableOpacity key={this.props.orderId} style={styles.row} - onPress={() => this.call(this.props.orderId.toString())} + onPress={() => + this.call(this.props.customerMobNum.toString()) + } > <Text style={styles.customerData}>{accept}</Text> <Text style={styles.customerData}> - {this.props.orderId} + {this.props.km} {km} </Text> </TouchableOpacity> @@ -93,6 +92,7 @@ const styles = StyleSheet.create({ const mapStateToProps = (state) => ({ deviceId: state.device_id, + customerMobNum: state.mobileNumber, }) const mapDispatchToProps = { diff --git a/driver/SectionListCustomers.js b/driver/SectionListCustomers.js index 05e1790633196ba4dde2d1ab1ec8f85a2f08f1f6..59e261bbade4539d92e0682f9646c5db0e782ac1 100644 --- a/driver/SectionListCustomers.js +++ b/driver/SectionListCustomers.js @@ -6,7 +6,7 @@ import Order from './Order' const renderItem = ({item}) => <Order {...item} /> -const FlatListCustomers = (props) => ( +const SectionListCustomers = (props) => ( <FlatList renderItem={renderItem} data={props.orders} @@ -15,7 +15,7 @@ const FlatListCustomers = (props) => ( /> ) -FlatListCustomers.propTypes = { +SectionListCustomers.propTypes = { orders: PropTypes.array, } @@ -26,4 +26,4 @@ const styles = StyleSheet.create({ }, }) -export default FlatListCustomers +export default SectionListCustomers diff --git a/driver/getOrderPhoneNumber.js b/driver/getOrderPhoneNumber.js index 0f5ac7f07b924344bdcbf1fed8845f90b3dbb678..decd054f583d6313c7117568d24b866b570ed415 100644 --- a/driver/getOrderPhoneNumber.js +++ b/driver/getOrderPhoneNumber.js @@ -1,7 +1,7 @@ import React from 'react' import {getToken} from '../common_files/ourFunctions' import {serverIp} from '../common_files/Texts' -import {updateMobNum} from '../redux/actions' +import {updateMobNum, updateOrder} from '../redux/actions' import store from '../redux/store' export const getOrderPhoneNumber = async () => { @@ -18,8 +18,8 @@ export const getOrderPhoneNumber = async () => { .then((response) => response.json()) .then((json) => { console.log('took Order, got Phone number:') - console.log(json[0].phoneNumber) - this.props.updateMobNum(json[0].phoneNumber) + console.log(json[1].phoneNumber) + this.props.updateMobNum(json[1].phoneNumber) }) .catch((error) => { console.error(error) @@ -31,4 +31,7 @@ const mapStateToProps = (state) => ({ mobileNumber: state.mobileNumber, }) +const mapDispatchToProps = { + updateMobNum, +} export default getOrderPhoneNumber