mw.libs.ve.targetLoader.addPlugin( function () {

	ve.init.mw.SpamBlacklistSaveErrorHandler = function () {};

	OO.inheritClass( ve.init.mw.SpamBlacklistSaveErrorHandler, ve.init.mw.SaveErrorHandler );

	ve.init.mw.SpamBlacklistSaveErrorHandler.static.name = 'spamBlacklist';

	ve.init.mw.SpamBlacklistSaveErrorHandler.static.matchFunction = function ( data ) {
		return data.errors && data.errors.some( function ( err ) {
			return err.code === 'spamblacklist';
		} );
	};

	ve.init.mw.SpamBlacklistSaveErrorHandler.static.process = function ( data, target ) {
		// Handle spam blacklist error from Extension:SpamBlacklist
		target.showSaveError(
			target.extractErrorMessages( data ),
			false // prevents reapply
		);
		// Emit event for tracking. TODO: This is a bad design
		target.emit( 'saveErrorSpamBlacklist' );
	};

	ve.init.mw.saveErrorHandlerFactory.register( ve.init.mw.SpamBlacklistSaveErrorHandler );

} );
