SumOfUs/Champaign

View on GitHub
app/javascript/legacy/member-facing/redirectors.js

Summary

Maintainability
A
0 mins
Test Coverage
import uri from 'urijs';

const RegisterMemberRedirector = {
  attemptRedirect(followUpUrl, member) {
    if (typeof member !== 'object') {
      member = window.champaign.personalization.member;
    }

    if (shouldMemberRegister()) {
      redirectToRegistration();
      return true;
    } else {
      return false;
    }

    function shouldMemberRegister() {
      return !member.registered;
    }

    function redirectToRegistration() {
      redirectTo(registrationUrl(followUpUrl, member.email));
    }

    function registrationUrl(url, email) {
      return uri('/member_authentication/new')
        .query({ follow_up_url: url, email: email })
        .toString();
    }
  },
};

const AfterDonationRedirector = {
  attemptRedirect(followUpUrl, donationFormData) {
    if (
      !(
        donationFormData.storeInVault &&
        RegisterMemberRedirector.attemptRedirect(
          followUpUrl,
          donationFormData.member
        )
      )
    ) {
      redirectTo(followUpUrl);
    }

    return true;
  },
};

function redirectTo(url) {
  window.location.href = url;
}

export default {
  RegisterMemberRedirector,
  AfterDonationRedirector,
};