Guest User

Untitled

a guest
Dec 10th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. [UPDATE_PASSENGER](state, { id, form: passenger, fieldName }) {
  2. const hasBirthdayField = has('birthday', passenger.fields);
  3.  
  4. let updatedPassenger;
  5. let newState = evolve({
  6. fields: {
  7. passengers: map(
  8. (p) => {
  9. if (p.id === id) {
  10. updatedPassenger = mergeWithKey(
  11. (k, l, r) => (k === 'fields' ? merge(l, omit(SWAP_FIELDS, r)) : r),
  12. p,
  13. passenger
  14. );
  15.  
  16. if (hasBirthdayField) {
  17. updatedPassenger = resetDocuments(updatedPassenger);
  18. }
  19.  
  20. if (hasBirthdayField) {
  21. updatedPassenger = {
  22. ...updatedPassenger,
  23. isAdult: isAdult(passenger),
  24. };
  25. }
  26.  
  27. return resetChildCheckbox(updatedPassenger);
  28. }
  29. return p;
  30. }
  31. ),
  32. },
  33. }, state);
  34.  
  35. if (hasBirthdayField && (!fieldName || fieldName === 'birthday') &&
  36. isValidBirthday(updatedPassenger) &&
  37. needSwap(updatedPassenger)
  38. ) {
  39. const passengers = compose(
  40. filter(
  41. converge(
  42. or,
  43. [compose(not, isValidBirthday), needSwap]
  44. )
  45. ),
  46. getPassengers
  47. )(newState);
  48. const passengerAge = getPassengerAge(updatedPassenger);
  49. const groupedByAge = groupBy(
  50. compose(
  51. age => (isNil(age) ? -1 : age),
  52. getFormAge
  53. )
  54. )(passengers);
  55. const withSeats = getWithSeats(passengers);
  56.  
  57. let swapOnlyAge = false;
  58. let anotherPassenger;
  59.  
  60. if (DISABLE_AGE_VALIDATION || isAdult(updatedPassenger)) {
  61. swapOnlyAge = hasSeats(updatedPassenger);
  62. anotherPassenger = withSeats.shift();
  63. } else {
  64. anotherPassenger = groupedByAge[passengerAge].shift();
  65. swapOnlyAge = hasSeats(updatedPassenger) === hasSeats(anotherPassenger);
  66. }
  67.  
  68. if (anotherPassenger) {
  69. newState = evolve({
  70. fields: {
  71. passengers: map(
  72. cond([
  73. [propEq('id', anotherPassenger.id), evolve({
  74. fields: merge(__, getSwapFields(updatedPassenger, swapOnlyAge)),
  75. })],
  76. [propEq('id', updatedPassenger.id), evolve({
  77. fields: merge(__, getSwapFields(anotherPassenger, swapOnlyAge)),
  78. })],
  79. [T, identity],
  80. ])
  81. ),
  82. },
  83. })(newState);
  84. }
  85. }
  86.  
  87. return newState;
  88. },
Add Comment
Please, Sign In to add comment