Source: components/instant-search/others/instant-search-result-redirect.js

/**
 * InstantSearchResultRedirect module
 * @module InstantSearchResultRedirect
 */

import Globals from "../../../helpers/globals";
import Utils from "../../../helpers/utils";

/**
 * Get search redirect url
 */
const getSearchRedirectUrl = () => {
	if (typeof Globals.currentTerm !== 'string'){
		Globals.currentTerm = Globals.currentTerm.toString();
	}
	Globals.currentTerm = Globals.currentTerm.trim();

	var redirectUrl = '';
	if (Globals.suggestionCache.hasOwnProperty(Globals.currentTerm)) {
		var cachedResult = Globals.suggestionCache[Globals.currentTerm];
		cachedResult.forEach((result) => {
			if (result.key == 'redirect' && result.values) {
				// Check is there is a redirect
				redirectUrl = result.values;
				redirectUrl = redirectUrl.replace('https://' + Globals.shopDomain, '');
				redirectUrl = redirectUrl.replace('http://' + Globals.shopDomain, '');
			}
		});
	}
	return redirectUrl;
}

/**
 * Check the search redirect after trigger submit
 * @param {String} $element The jQuery object of search inout element
 */
const checkForSearchRedirect = ($element) => {
	if ($element.data('search-submit')) {
		$element.removeData('search-submit');
		var redirectUrl = getSearchRedirectUrl();
		if (redirectUrl) {
			Utils.setWindowLocation(redirectUrl);
		} else {
			$element.closest('form').trigger('submit', [true]);
		}
	}
}

const InstantSearchResultRedirect = {
	getSearchRedirectUrl: getSearchRedirectUrl,
	checkForSearchRedirect: checkForSearchRedirect
}

export default InstantSearchResultRedirect;