import React from 'react'; import MovieObject from './MovieObject.jsx'; // StyleComponents import searchStyle from './styles/searchRequestStyle.jsx'; import URI from 'urijs'; // TODO add option for searching multi, movies or tv shows class SearchRequest extends React.Component { constructor(props){ super(props) // Constructor with states holding the search query and the element of reponse. this.state = { searchQuery: '', responseMovieList: null, movieFilter: true, showFilter: false, discoverType: '', page: 1 } this.allowedDiscoverTypes = [ 'discover', 'popular', 'nowplaying', 'upcoming' ] // this.baseUrl = 'https://apollo.kevinmidboe.com/api/v1/'; this.baseUrl = 'http://localhost:31459/api/v1/tmdb/'; this.URLs = { // request: 'https://apollo.kevinmidboe.com/api/v1/plex/request?page='+this.state.page+'&query=', request: 'http://localhost:31459/api/v1/plex/request?page='+this.state.page+'&query=', // upcoming: 'https://apollo.kevinmidboe.com/api/v1/tmdb/upcoming', upcoming: 'http://localhost:31459/api/v1/tmdb/upcoming', // sendRequest: 'https://apollo.kevinmidboe.com/api/v1/plex/request?query=' sendRequest: 'http://localhost:31459/api/v1/plex/request?query=' } } componentDidMount(){ var that = this; // this.setState({responseMovieList: null}) this.fetchDiscover('upcoming'); } // Handles all errors of the response of a fetch call handleErrors(response) { if (!response.ok) { throw Error(response.status); } return response; } fetchDiscover(queryDiscoverType) { if (this.allowedDiscoverTypes.indexOf(queryDiscoverType) === -1) throw Error('Invalid discover type: ' + queryDiscoverType); var uri = new URI(this.baseUrl); uri.segment(queryDiscoverType) uri = uri.setSearch('page', this.state.page); if (this.state.showFilter) uri = uri.addSearch('type', 'show'); console.log(uri) this.setState({ responseMovieList: 'Loading...' }); fetch(uri) // Check if the response is ok .then(response => this.handleErrors(response)) .then(response => response.json()) // Convert to json object and pass to next then .then(data => { // Parse the data of the JSON response // If it is something here it updates the state variable with the HTML list of all // movie objects that where returned by the search request if (data.results.length > 0) { this.setState({ responseMovieList: data.results.map(item => this.createMovieObjects(item)) }) } }) // If the -------- .catch(error => { console.log(error) this.setState({ responseMovieList: