Files
menui_web/src/components/EditRestaurant/EditRestaurantLocation.js
2020-11-29 20:23:20 +01:00

98 lines
2.5 KiB
JavaScript

import React, { useState } from "react";
import InputGoogleMaps from "../Input/InputGoogleMaps";
import ButtonSecondary from "../Input/ButtonSecondary";
import { useDispatch, useSelector } from "react-redux";
import { notification } from "../../actions";
import { showBackdrop, hideBackdrop } from "../../actions/toggles.js";
import axios from "axios";
import { backend } from "../../config";
export default function EditRestaurantLocation(props) {
const {
imgUrl,
dishes,
categories,
lunchMenu,
name,
city,
adress,
placesId,
location,
workingHours,
description,
tags,
links,
phone,
hidden,
} = props.restaurant;
const initialState = {
coordinates: location.coordinates,
placesId: placesId,
};
const token = useSelector((state) => state.data.userData.jwt);
const dispatch = useDispatch();
const [state, setState] = useState(initialState);
const handleSave = () => {
dispatch(showBackdrop());
const data = {
restaurantId: props.restaurant._id,
dishes: dishes,
categories: categories,
lunchMenu: lunchMenu,
name: name,
city: city,
adress: adress,
coordinates: state.coordinates,
placesId: placesId,
imgUrl: imgUrl,
workingHours: workingHours,
description: description,
tags: tags,
links: links,
phone: phone,
hidden: hidden,
};
axios({
url: backend + "restaurant",
method: "PUT",
data: data,
headers: {
"x-auth-token": token,
},
})
.then((res) => {
dispatch(hideBackdrop());
dispatch(notification("Zmieniono lokalizację.", "success"));
})
.catch((e) => {
dispatch(hideBackdrop());
dispatch(notification("Nie udało się zmienić lokalizacji :(", "error"));
throw e;
});
};
const setCoordinatesAndPlacesID = (coordinates, placesID) => {
if (!placesID) {
setState({ ...state, coordinates: coordinates });
} else {
setState({ coordinates: coordinates, placesId: placesID });
}
};
return (
<div className="editRestaurant-tab">
<h3>Dane lokalizacyjne</h3>
<InputGoogleMaps
setCoordinates={(coordinates, placesID) =>
setCoordinatesAndPlacesID(coordinates, placesID)
}
coordinates={state.coordinates}
/>
<p>Google Places ID: {state.placesId}</p>
<div className="editRestaurant-bottom">
<ButtonSecondary onClick={handleSave} text="Zapisz" />
</div>
</div>
);
}