use of co.krypt.krypton.team.onboarding.join.JoinTeamProgress in project krypton-android by kryptco.
the class TeamOnboardingActivity method onNewIntent.
@Override
protected void onNewIntent(Intent intent) {
try {
if (TeamDataProvider.getTeamHomeData(this).success != null) {
Toast.makeText(getApplicationContext(), "You must leave your current team before joining another.", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
}
} catch (Native.NotLinked notLinked) {
notLinked.printStackTrace();
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
return;
}
if (intent.getAction() != null && intent.getAction().equals("android.intent.action.VIEW") && intent.getData() != null) {
Uri data = intent.getData();
if ((data.getScheme().equals("krypton") && data.getHost().equals("verify_email")) || (data.getScheme().equals("https") && data.getHost().equals("krypt.co") && data.getPath().equals("/app/verify_email.html"))) {
final String nonce;
// Handle https:// link
String queryParam = data.getQueryParameter("nonce");
if (queryParam != null) {
nonce = queryParam;
} else {
// Handle krypton:// link
nonce = data.getLastPathSegment();
}
Log.i(TAG, "received VERIFY_EMAIL intent");
CreateTeamProgress createTeamProgress = new CreateTeamProgress(this);
JoinTeamProgress joinTeamProgress = new JoinTeamProgress(this);
if (createTeamProgress.inProgress()) {
createTeamProgress.updateTeamData((s, d) -> {
d.emailChallengeNonce = nonce;
return CreateStage.LOAD_TEAM;
});
getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_right, R.anim.exit_to_left).replace(R.id.fragment_teams, new OnboardingLoadTeamFragment()).commitAllowingStateLoss();
} else if (joinTeamProgress.inProgress()) {
joinTeamProgress.updateTeamData((s, d) -> {
d.emailChallengeNonce = nonce;
if (s.equals(JoinStage.CHALLENGE_EMAIL_SENT)) {
return s;
} else if (s.equals(JoinStage.INPERSON_CHALLENGE_EMAIL_SENT)) {
return s;
} else if (s.equals(JoinStage.VERIFY_EMAIL)) {
// Allows clicking on an old verification link before sending a new challenge in case email is rate limited
return JoinStage.CHALLENGE_EMAIL_SENT;
}
return JoinStage.NONE;
});
getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_right, R.anim.exit_to_left).replace(R.id.fragment_teams, joinTeamProgress.currentStage().getFragment()).commitAllowingStateLoss();
} else {
Toast.makeText(getApplicationContext(), "Begin joining a team before verifying your email.", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
return;
}
} else if (data.getScheme().equals("krypton") && data.getHost().equals("join_team")) {
Log.i(TAG, "received JOIN_TEAM intent");
new CreateTeamProgress(this).reset();
JoinTeamProgress progress = new JoinTeamProgress(getApplicationContext());
progress.updateTeamData((s, d) -> {
try {
Sigchain.NativeResult<Sigchain.TeamHomeData> teamData = TeamDataProvider.getTeamHomeData(getApplicationContext());
if (s.equals(JoinStage.NONE)) {
s = JoinStage.DECRYPT_INVITE;
d.inviteLink = data.toString();
} else {
// continue current onboarding
}
} catch (Native.NotLinked notLinked) {
notLinked.printStackTrace();
return s;
}
Profile me = Silo.shared(getBaseContext()).meStorage().load();
if (me == null) {
Toast.makeText(getApplicationContext(), "Welcome to Krypton! Let's generate your key pair before joining the team.", Toast.LENGTH_LONG).show();
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
return s;
}
getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_right, R.anim.exit_to_left).replace(R.id.fragment_teams, s.getFragment()).commitAllowingStateLoss();
return s;
});
}
}
}
Aggregations