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