use of com.facebook.react.bridge.Promise in project native-navigation by airbnb.
the class NativeFragment method onCreateView.
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_native, container, false);
final int count = getArguments().getInt(ARG_COUNT);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
toolbar.setTitle("Fragment " + count);
toolbar.setNavigationIcon(R.drawable.n2_ic_arrow_back_white);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().onBackPressed();
}
});
view.findViewById(R.id.push).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getScreenCoordinator().pushScreen(newInstance(count + 1));
}
});
view.findViewById(R.id.present).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Promise promise = new PromiseImpl(new Callback() {
@Override
public void invoke(Object... args) {
WritableMap map = (WritableMap) args[0];
ReadableMap payload = map.getMap("payload");
if (payload != null) {
String text = "Result: " + payload.getString(RESULT_TEXT);
Toast.makeText(getContext(), text, Toast.LENGTH_LONG).show();
}
}
}, new Callback() {
@Override
public void invoke(Object... args) {
Toast.makeText(getContext(), "Promise was rejected.", Toast.LENGTH_LONG).show();
}
});
getScreenCoordinator().presentScreen(newInstance(0), promise);
}
});
view.findViewById(R.id.push_rn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getScreenCoordinator().pushScreen("ScreenOne");
}
});
view.findViewById(R.id.present_rn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getScreenCoordinator().presentScreen("ScreenOne");
}
});
view.findViewById(R.id.pop).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getScreenCoordinator().pop();
}
});
final EditText editText = (EditText) view.findViewById(R.id.payload);
view.findViewById(R.id.dismiss).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> payload = new HashMap<>();
payload.put(RESULT_TEXT, editText.getText().toString());
getScreenCoordinator().dismiss(Activity.RESULT_OK, payload);
}
});
return view;
}
use of com.facebook.react.bridge.Promise in project native-navigation by airbnb.
the class ScreenCoordinator method dismiss.
private void dismiss(int resultCode, Map<String, Object> payload, boolean finishIfEmpty) {
BackStack bsi = backStacks.pop();
Promise promise = bsi.getPromise();
deliverPromise(promise, resultCode, payload);
// This is needed so we can override the pop exit animation to slide down.
PresentAnimation anim = bsi.getAnimation();
if (backStacks.isEmpty()) {
if (finishIfEmpty) {
activity.supportFinishAfterTransition();
return;
}
} else {
// This will be used when the fragment delegates its onCreateAnimation to this.
nextPopExitAnim = anim.popExit;
}
activity.getSupportFragmentManager().popBackStackImmediate(bsi.getTag(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
Log.d(TAG, toString());
}
use of com.facebook.react.bridge.Promise in project native-navigation by airbnb.
the class ReactInterfaceManager method getAndRemovePromise.
private Promise getAndRemovePromise(int requestCode) {
if (resultPromises.indexOfKey(requestCode) < 0) {
return null;
}
Promise promise = resultPromises.get(requestCode);
resultPromises.remove(requestCode);
return promise;
}
use of com.facebook.react.bridge.Promise in project native-navigation by airbnb.
the class ReactInterfaceManager method deliverPromise.
private void deliverPromise(int requestCode, int resultCode, Intent data) {
Promise promise = getAndRemovePromise(requestCode);
if (promise != null) {
Map<String, Object> payload = getPayloadFromIntent(data);
Map<String, Object> newPayload = MapBuilder.of(EXTRA_CODE, resultCode, EXTRA_PAYLOAD, payload);
promise.resolve(ConversionUtil.toWritableMap(newPayload));
}
}
Aggregations