canValidate method

int canValidate(
  1. DnaIdentityResponse dnaIdentityResponse
)

Implementation

int canValidate(DnaIdentityResponse dnaIdentityResponse) {
  if (dnaIdentityResponse == null) {
    return WRONG_STATUS;
  }
  var identityStatus1 = [
    IdentityStatus.Human,
    IdentityStatus.Verified,
    IdentityStatus.Newbie
  ];

  var identityStatus2 = [
    IdentityStatus.Candidate,
    IdentityStatus.Suspended,
    IdentityStatus.Zombie
  ];

  var identityStatus3 = [
    IdentityStatus.Terminating,
    IdentityStatus.Undefined,
    IdentityStatus.Invite,
  ];

  if (identityStatus3.contains(dnaIdentityResponse.result.state)) {
    return WRONG_STATUS;
  }

  if (identityStatus2.contains(dnaIdentityResponse.result.state)) {
    return CAN_VALIDATE;
  } else {
    bool shouldSendFlips = true;
    if (identityStatus1.contains(dnaIdentityResponse.result.state)) {
      try {
        if (dnaIdentityResponse.result.flips != null) {
          int numOfFlipsToSubmit = dnaIdentityResponse.result.requiredFlips -
              dnaIdentityResponse.result.flips.length;
          shouldSendFlips = numOfFlipsToSubmit > 0;
        } else {
          shouldSendFlips = false;
        }
      } catch (e) {}
    }

    if (identityStatus1.contains(dnaIdentityResponse.result.state) &&
        !shouldSendFlips) {
      return CAN_VALIDATE;
    } else {
      if (shouldSendFlips == false) {
        return WRONG_STATUS;
      } else {
        return FLIPS_REQUIRED;
      }
    }
  }
}