Search in sources :

Example 1 with Promise

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;
}
Also used : EditText(android.widget.EditText) WritableMap(com.facebook.react.bridge.WritableMap) AppCompatActivity(android.support.v7.app.AppCompatActivity) View(android.view.View) PromiseImpl(com.facebook.react.bridge.PromiseImpl) Promise(com.facebook.react.bridge.Promise) Callback(com.facebook.react.bridge.Callback) ReadableMap(com.facebook.react.bridge.ReadableMap) ReadableMap(com.facebook.react.bridge.ReadableMap) HashMap(java.util.HashMap) Map(java.util.Map) WritableMap(com.facebook.react.bridge.WritableMap) Toolbar(android.support.v7.widget.Toolbar) Nullable(android.support.annotation.Nullable)

Example 2 with Promise

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());
}
Also used : Promise(com.facebook.react.bridge.Promise)

Example 3 with Promise

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;
}
Also used : Promise(com.facebook.react.bridge.Promise)

Example 4 with 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));
    }
}
Also used : Promise(com.facebook.react.bridge.Promise)

Aggregations

Promise (com.facebook.react.bridge.Promise)4 Nullable (android.support.annotation.Nullable)1 AppCompatActivity (android.support.v7.app.AppCompatActivity)1 Toolbar (android.support.v7.widget.Toolbar)1 View (android.view.View)1 EditText (android.widget.EditText)1 Callback (com.facebook.react.bridge.Callback)1 PromiseImpl (com.facebook.react.bridge.PromiseImpl)1 ReadableMap (com.facebook.react.bridge.ReadableMap)1 WritableMap (com.facebook.react.bridge.WritableMap)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1