linked: move between fixed states

This commit is contained in:
Vincent Breitmoser 2015-09-08 15:53:05 +02:00
parent 0db1495ea1
commit 0ef929fb7f

View file

@ -73,11 +73,16 @@ import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
import org.sufficientlysecure.keychain.ui.ViewKeyActivity;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationFragment;
import org.sufficientlysecure.keychain.ui.widget.StatusIndicator;
import org.sufficientlysecure.keychain.ui.widget.StatusIndicator.Status;
import org.sufficientlysecure.keychain.util.Log;
public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKeyringParcel,EditKeyResult> {
enum State {
IDLE, AUTH_PROCESS, AUTH_ERROR, POST_PROCESS, POST_ERROR, LID_PROCESS, LID_ERROR, DONE
}
public static final String GITHUB_CLIENT_ID = "7a011b66275f244d3f21";
public static final String GITHUB_CLIENT_SECRET = "eaced8a6655719d8c6848396de97b3f5d7a89fec";
@ -148,9 +153,7 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe
private void step1GetOAuthCode() {
mStatus1.setDisplayedChild(1);
mStatus2.setDisplayedChild(0);
mStatus3.setDisplayedChild(0);
setState(State.AUTH_PROCESS);
mButtonContainer.setDisplayedChild(1);
@ -210,11 +213,10 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe
Log.d(Constants.TAG, "response: " + result);
if (result == null || !result.has("access_token")) {
mStatus1.setDisplayedChild(3);
setState(State.AUTH_ERROR);
return;
}
mStatus1.setDisplayedChild(2);
step2PostGist(result.optString("access_token"), gistText);
}
@ -224,7 +226,7 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe
private void step2PostGist(final String accessToken, final String gistText) {
mStatus2.setDisplayedChild(1);
setState(State.POST_PROCESS);
new AsyncTask<Void,Void,JSONObject>() {
@Override
@ -291,11 +293,10 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe
// we only need authorization for this one operation, drop it afterwards
revokeToken(accessToken);
mStatus2.setDisplayedChild(2);
step3EditKey(resource);
} catch (JSONException e) {
mStatus2.setDisplayedChild(3);
setState(State.POST_ERROR);
e.printStackTrace();
}
@ -333,7 +334,7 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe
mLinkedIdComment.setText(resource.getDisplayComment(context));
}
mStatus3.setDisplayedChild(1);
setState(State.LID_PROCESS);
new Handler().postDelayed(new Runnable() {
@Override
@ -359,7 +360,8 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe
@Override
public void onCryptoOperationSuccess(EditKeyResult result) {
mStatus3.setDisplayedChild(2);
setState(State.DONE);
mButtonContainer.getInAnimation().setDuration(750);
mButtonContainer.setDisplayedChild(2);
@ -479,6 +481,50 @@ public class LinkedIdCreateGithubFragment extends CryptoOperationFragment<SaveKe
}
public void setState(State state) {
switch (state) {
case IDLE:
mStatus1.setDisplayedChild(Status.IDLE);
mStatus2.setDisplayedChild(Status.IDLE);
mStatus3.setDisplayedChild(Status.IDLE);
break;
case AUTH_PROCESS:
mStatus1.setDisplayedChild(Status.PROGRESS);
mStatus2.setDisplayedChild(Status.IDLE);
mStatus3.setDisplayedChild(Status.IDLE);
break;
case AUTH_ERROR:
mStatus1.setDisplayedChild(Status.ERROR);
mStatus2.setDisplayedChild(Status.IDLE);
mStatus3.setDisplayedChild(Status.IDLE);
break;
case POST_PROCESS:
mStatus1.setDisplayedChild(Status.OK);
mStatus2.setDisplayedChild(Status.PROGRESS);
mStatus3.setDisplayedChild(Status.IDLE);
break;
case POST_ERROR:
mStatus1.setDisplayedChild(Status.OK);
mStatus2.setDisplayedChild(Status.ERROR);
mStatus3.setDisplayedChild(Status.IDLE);
break;
case LID_PROCESS:
mStatus1.setDisplayedChild(Status.OK);
mStatus2.setDisplayedChild(Status.OK);
mStatus3.setDisplayedChild(Status.PROGRESS);
break;
case LID_ERROR:
mStatus1.setDisplayedChild(Status.OK);
mStatus2.setDisplayedChild(Status.OK);
mStatus3.setDisplayedChild(Status.ERROR);
break;
case DONE:
mStatus1.setDisplayedChild(Status.OK);
mStatus2.setDisplayedChild(Status.OK);
mStatus3.setDisplayedChild(Status.OK);
}
}
private static JSONObject jsonHttpRequest(String url, JSONObject params, String accessToken)
throws IOException {