'use strict';

( function ( $ ) {
	$.fn.blogPosts = function ( options ) {
		const settings = $.extend(
			{
				api: '',
				action: 'blog_posts',
				loading_text: 'Loading',
				list_type: 'ul',
			},
			options
		);

		if ( '' === settings.api ) {
			return this;
		}

		function generateList( data ) {
			let output = '';

			if ( 0 === data.length ) {
				return output;
			}

			data.forEach( function ( item ) {
				output +=
					'<li><a href="' + item.url + '" target="_blank">' + item.title + '</a></li>';
			} );
			return $( '<' + settings.list_type + '/>' ).append( output );
		}

		return this.each( function () {
			if ( $( this ).length < 1 ) {
				return;
			}

			const $wrapper = $( this );
			$.ajax( {
				url: settings.api,
				type: 'GET',
				dataType: 'json',
				data: {
					action: settings.action,
				},

				beforeSend() {
					$wrapper.html( settings.loading_text );
				},

				complete( jqXHR ) {
					const response = JSON.parse( jqXHR.responseText );
					$wrapper.html( '' );

					if ( true === response.success ) {
						const listMarkup = generateList( response.data );
						$wrapper.append( listMarkup );
					}
				},
			} );
		} );
	};

	$( document ).ready( function () {
		$( '.ns-blog-list' ).blogPosts( {
			api: ajaxurl,
			action: 'nsfp_nsbl_get_posts',
		} );
	} );
} )( jQuery );
