JSFiddle - React, Tailwind, and code Playground

by nkovacs

JavaScript

var foo = function(origin, pathname, search, hash) {
  var transactionFinalStatus = 2;
	var splitString = 'valitorDialog=';
  var hash = decodeURIComponent(hash);
  var query = '?';
  if (hash.indexOf('?') != -1) {
    query = '&';
  }
  var beforeValidatorDialog = hash.slice(0, hash.indexOf(splitString) + splitString.length);
  var afterValidatorDialog = hash.slice(hash.indexOf(splitString) + splitString.length);

  var validatorDialogRest = '';
  if (afterValidatorDialog.indexOf('&') != -1) {
    validatorDialogRest = afterValidatorDialog.slice(afterValidatorDialog.indexOf('&'));
    afterValidatorDialog = afterValidatorDialog.slice(0, afterValidatorDialog.indexOf('&'));
  }
  afterValidatorDialog = encodeURIComponent(afterValidatorDialog);

  var replace = origin + pathname + search;
  if (hash.indexOf('valitorDialog=') == -1) {
    replace += hash + query + 'TransactionFinalStatus=' + transactionFinalStatus + validatorDialogRest;
  } else {
    replace += beforeValidatorDialog + afterValidatorDialog + encodeURIComponent(query + 'TransactionFinalStatus=') + transactionFinalStatus + validatorDialogRest;
  }

	return replace;
}

var test = function(actual, expected) {
	console.log("actual: " + actual);
  console.log("expected: " + expected);
  if (actual === expected) {
  	console.log("OK");
  } else {
  	console.log("NOK");
  }
}

// http://localhost:8081/game/lotto?lang=en#/checkout/overview?valitorDialog=%2Fdialog%2Fcredit-card-callback%3Ftype%3Dadd
test(foo("http://localhost:8081", "/game/lotto", "?lang=en", "#/checkout/overview?valitorDialog=%2Fdialog%2Fcredit-card-callback%3Ftype%3Dadd"), "http://localhost:8081/game/lotto?lang=en#/checkout/overview?valitorDialog=%2Fdialog%2Fcredit-card-callback%3Ftype%3Dadd%26TransactionFinalStatus%3D2");

// http://localhost:8081/game/lotto?lang=en#/checkout/overview?valitorDialog=%2Fdialog%2Fcredit-card-callback%3Ftype%3Dadd&kiszurokveled=true
test(foo("http://localhost:8081", "/game/lotto", "?lang=en",...