Search in sources :

Example 1 with OnboardingLoadTeamFragment

use of co.krypt.krypton.team.onboarding.create.OnboardingLoadTeamFragment 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;
            });
        }
    }
}
Also used : Context(android.content.Context) Rect(android.graphics.Rect) Bundle(android.os.Bundle) Uri(android.net.Uri) CreateStage(co.krypt.krypton.team.onboarding.create.CreateStage) Intent(android.content.Intent) Services(co.krypt.krypton.utils.Services) InputMethodManager(android.view.inputmethod.InputMethodManager) MotionEvent(android.view.MotionEvent) Toast(android.widget.Toast) View(android.view.View) JoinStage(co.krypt.krypton.team.onboarding.join.JoinStage) R(co.krypt.krypton.R) Native(co.krypt.krypton.team.Native) Log(android.util.Log) TeamDataProvider(co.krypt.krypton.team.TeamDataProvider) Fragment(android.support.v4.app.Fragment) Silo(co.krypt.krypton.silo.Silo) JoinTeamProgress(co.krypt.krypton.team.onboarding.join.JoinTeamProgress) OnboardingCreateFragment(co.krypt.krypton.team.onboarding.create.OnboardingCreateFragment) CrashReporting(co.krypt.krypton.utils.CrashReporting) Sigchain(co.krypt.krypton.team.Sigchain) FragmentActivity(android.support.v4.app.FragmentActivity) OnboardingLoadTeamFragment(co.krypt.krypton.team.onboarding.create.OnboardingLoadTeamFragment) CreateTeamProgress(co.krypt.krypton.team.onboarding.create.CreateTeamProgress) MainActivity(co.krypt.kryptonite.MainActivity) Profile(co.krypt.krypton.protocol.Profile) EditText(android.widget.EditText) Sigchain(co.krypt.krypton.team.Sigchain) JoinTeamProgress(co.krypt.krypton.team.onboarding.join.JoinTeamProgress) Intent(android.content.Intent) MainActivity(co.krypt.kryptonite.MainActivity) Uri(android.net.Uri) Profile(co.krypt.krypton.protocol.Profile) Native(co.krypt.krypton.team.Native) OnboardingLoadTeamFragment(co.krypt.krypton.team.onboarding.create.OnboardingLoadTeamFragment) CreateTeamProgress(co.krypt.krypton.team.onboarding.create.CreateTeamProgress)

Aggregations

Context (android.content.Context)1 Intent (android.content.Intent)1 Rect (android.graphics.Rect)1 Uri (android.net.Uri)1 Bundle (android.os.Bundle)1 Fragment (android.support.v4.app.Fragment)1 FragmentActivity (android.support.v4.app.FragmentActivity)1 Log (android.util.Log)1 MotionEvent (android.view.MotionEvent)1 View (android.view.View)1 InputMethodManager (android.view.inputmethod.InputMethodManager)1 EditText (android.widget.EditText)1 Toast (android.widget.Toast)1 R (co.krypt.krypton.R)1 Profile (co.krypt.krypton.protocol.Profile)1 Silo (co.krypt.krypton.silo.Silo)1 Native (co.krypt.krypton.team.Native)1 Sigchain (co.krypt.krypton.team.Sigchain)1 TeamDataProvider (co.krypt.krypton.team.TeamDataProvider)1 CreateStage (co.krypt.krypton.team.onboarding.create.CreateStage)1