1 // Copyright © 2021-present 650 Industries, Inc. (aka Expo) 2 3 #include "JavaCallback.h" 4 5 namespace expo { 6 7 JavaCallback::JavaCallback(Callback callback) 8 : callback(std::move(callback)) {} 9 10 11 void JavaCallback::registerNatives() { 12 registerHybrid({ 13 makeNativeMethod("invoke", JavaCallback::invoke), 14 makeNativeMethod("invoke", JavaCallback::invokeBool), 15 makeNativeMethod("invoke", JavaCallback::invokeInt), 16 makeNativeMethod("invoke", JavaCallback::invokeDouble), 17 makeNativeMethod("invoke", JavaCallback::invokeFloat), 18 makeNativeMethod("invoke", JavaCallback::invokeString), 19 makeNativeMethod("invoke", JavaCallback::invokeArray), 20 makeNativeMethod("invoke", JavaCallback::invokeMap), 21 }); 22 } 23 24 25 void JavaCallback::invoke() { 26 callback(nullptr); 27 } 28 29 void JavaCallback::invokeBool(bool result) { 30 callback(result); 31 } 32 33 void JavaCallback::invokeInt(int result) { 34 callback(result); 35 } 36 37 void JavaCallback::invokeDouble(double result) { 38 callback(result); 39 } 40 41 void JavaCallback::invokeFloat(float result) { 42 callback(result); 43 } 44 45 void JavaCallback::invokeString(jni::alias_ref<jstring> result) { 46 callback(result->toStdString()); 47 } 48 49 void JavaCallback::invokeArray(jni::alias_ref<react::WritableNativeArray::javaobject> result) { 50 callback(result->cthis()->consume()); 51 } 52 53 void JavaCallback::invokeMap(jni::alias_ref<react::WritableNativeMap::javaobject> result) { 54 callback(result->cthis()->consume()); 55 } 56 } // namespace expo 57