blob: f046e720e982e31f940b08f9c6049b3cef2416a1 [file] [log] [blame]
package io.v.baku.toolkit;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import io.v.android.v23.services.blessing.BlessingService;
import io.v.v23.security.Blessings;
import lombok.Getter;
import lombok.experimental.Accessors;
import rx.subjects.ReplaySubject;
/**
* Utility fragment for seeking blessings from the Vanadium Account Manager. This fragment is
* short-lived, starting the account manager activity in {@link #onCreate(Bundle)} and removing
* itself in {@link #onActivityResult(int, int, Intent)}.
*/
@Accessors(prefix = "m")
public class BlessingRequestFragment extends Fragment {
private static final int BLESSING_REQUEST = 0;
@Getter
private final ReplaySubject<Blessings> mObservable = ReplaySubject.createWithSize(1);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent intent = BlessingService.newBlessingIntent(getActivity());
startActivityForResult(intent, BLESSING_REQUEST);
}
@Override
public void onDestroy() {
mObservable.onCompleted();
super.onDestroy();
}
@Override
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case BLESSING_REQUEST:
try {
mObservable.onNext(BlessingsUtils.fromActivityResult(resultCode, data));
mObservable.onCompleted();
} catch (final Exception e) {
mObservable.onError(e);
}
getFragmentManager().beginTransaction()
.remove(this)
.commit();
break;
default:
}
}
}