🍦 Vanilla JavaScript

Projects for the Vanilla JS Academy

Day 13

Random Ron

Goal

Display random quotes using the Ron Swanson Quotes API.

Project

View Source
(function() {
	let apiURL = "//ron-swanson-quotes.herokuapp.com/v2/quotes";
	let elError = document.querySelector( "#error-message" );

	let displayError = message =>
	{
		elError.innerText = message;
		elError.classList.remove( "hidden" );
	};

	let fetchQuote = () =>
	{
		return fetch( apiURL )
			.then( response => response.json() )
			.then( json =>
			{
				if( json[0] )
				{
					elError.classList.add( "hidden" );
					return json[0];
				}

				throw new Error( "The server returned an unexpected response." );
			})
			.catch( error =>
			{
				displayError( error.message );
			});
	}

	let renderQuote = quote =>
	{
		if( quote )
		{
			document.querySelector( "blockquote" ).innerHTML = `“${quote}”`;
		}
	};

	let getQuote = () =>
	{
		fetchQuote()
			.then( quote => renderQuote( quote ) )
			.catch( error => console.error( error ) );
	}

	getQuote();
	document.querySelector( "button" ).addEventListener( "click", getQuote );
})();