Make price filtering work

This commit is contained in:
Edin Dazdarevic
2017-04-04 04:36:52 +02:00
parent 0af6337132
commit 49e9e2fdfb
6 changed files with 179 additions and 112 deletions

View File

@@ -1,9 +1,19 @@
import fetch from 'isomorphic-fetch';
export const loadProperties = ({bounds, minPrice = 0}) => {
export const loadProperties = ({
bounds,
minPrice = '',
maxPrice = '',
rooms
}) => {
const allRooms = Object
.keys(rooms)
.filter((v) => rooms[v])
.join(',');
// TODO: handle errors
//return fetch(process.env.API_URL + '/api/search', {
return fetch(`http://localhost:3001/api/search?bounds=${bounds}&minPrice=${minPrice}`, {
return fetch(`http://localhost:3001/api/search?bounds=${bounds}&minPrice=${minPrice}&maxPrice=${maxPrice}&rooms=${allRooms}`, {
//credentials: 'include'
});

View File

@@ -1,8 +1,19 @@
const setMaxPrice = ({type, action}, component) => {
component.setState({
filters: {
...component.state.filters,
maxPrice: parseFloat(action.maxPrice),
dirty: true
}
})
}
const setMinPrice = ({type, action}, component) => {
component.setState({
filters: {
...component.state.filters,
minPrice: parseFloat(action.minPrice) || 0
minPrice: parseFloat(action.minPrice),
dirty: true
}
})
}
@@ -73,11 +84,26 @@ const setRooms = ({type, action}, component) => {
[action.rooms]: !prevRooms[action.rooms]
}
}
}, () => {
component.refreshListings();
});
}
const updateSearch = ({type, action}, component) => {
console.log('updating search');
component.setState({
filters: {
...component.state.filters,
dirty: false
}
}, () => {
component.refreshListings();
});
}
const handlers = {
'SET_MIN_PRICE': setMinPrice,
'SET_MAX_PRICE': setMaxPrice,
'LISTINGS_LOADED': listingsLoaded,
'EXPAND_DESCRIPTION': expandDescription,
'PREV_IMAGE': prevImage,
@@ -85,7 +111,8 @@ const handlers = {
'VIEW_IMAGE': viewImage,
'SEARCH_PLACE_CHANGED': searchPlaceChanged,
'SET_ROOMS': setRooms,
'VIEW_LISTING_DETAILS': viewListingDetails
'VIEW_LISTING_DETAILS': viewListingDetails,
'UPDATE_SEARCH': updateSearch
}
export const handleMessage = ({type, action}, component) => {