Skip to content

Commit ec891ce

Browse files
committed
feat: add stubs to get Android compile
1 parent e23ad00 commit ec891ce

3 files changed

Lines changed: 35 additions & 13 deletions

File tree

packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,8 @@ function translateFunctionParamToJavaType(
268268
imports.add('com.facebook.react.bridge.Callback');
269269
return wrapOptional('Callback', isRequired);
270270
case 'ArrayBufferTypeAnnotation':
271-
throw new Error(
272-
`${createErrorMessage(realTypeAnnotation.type)} ArrayBuffer is only supported for C++ TurboModules.`,
273-
);
271+
imports.add('java.nio.ByteBuffer');
272+
return wrapOptional('ByteBuffer', isRequired);
274273
default:
275274
realTypeAnnotation.type as 'MixedTypeAnnotation';
276275
throw new Error(createErrorMessage(realTypeAnnotation.type));
@@ -366,9 +365,8 @@ function translateFunctionReturnTypeToJavaType(
366365
imports.add('com.facebook.react.bridge.WritableArray');
367366
return wrapOptional('WritableArray', isRequired);
368367
case 'ArrayBufferTypeAnnotation':
369-
throw new Error(
370-
`${createErrorMessage(realTypeAnnotation.type)} ArrayBuffer is only supported for C++ TurboModules.`,
371-
);
368+
imports.add('java.nio.ByteBuffer');
369+
return wrapOptional('ByteBuffer', isRequired);
372370
default:
373371
realTypeAnnotation.type as 'MixedTypeAnnotation';
374372
throw new Error(createErrorMessage(realTypeAnnotation.type));
@@ -452,9 +450,7 @@ function getFalsyReturnStatementFromReturnType(
452450
case 'ArrayTypeAnnotation':
453451
return 'return null;';
454452
case 'ArrayBufferTypeAnnotation':
455-
throw new Error(
456-
`${createErrorMessage(realTypeAnnotation.type)} ArrayBuffer is only supported for C++ TurboModules.`,
457-
);
453+
return 'return null;';
458454
default:
459455
realTypeAnnotation.type as 'MixedTypeAnnotation';
460456
throw new Error(createErrorMessage(realTypeAnnotation.type));

packages/react-native-codegen/src/generators/modules/GenerateModuleJniCpp.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ type JSReturnType =
3535
| 'NumberKind'
3636
| 'PromiseKind'
3737
| 'ObjectKind'
38-
| 'ArrayKind';
38+
| 'ArrayKind'
39+
| 'ArrayBufferKind';
3940

4041
const HostFunctionTemplate = ({
4142
hasteModuleName,
@@ -217,7 +218,7 @@ function translateReturnTypeToKind(
217218
case 'ArrayTypeAnnotation':
218219
return 'ArrayKind';
219220
case 'ArrayBufferTypeAnnotation':
220-
throw new Error('ArrayBuffer is only supported for C++ TurboModules.');
221+
return 'ArrayBufferKind';
221222
default:
222223
realTypeAnnotation.type as 'MixedTypeAnnotation';
223224
throw new Error(
@@ -306,7 +307,7 @@ function translateParamTypeToJniType(
306307
case 'FunctionTypeAnnotation':
307308
return 'Lcom/facebook/react/bridge/Callback;';
308309
case 'ArrayBufferTypeAnnotation':
309-
throw new Error('ArrayBuffer is only supported for C++ TurboModules.');
310+
return 'Ljava/nio/ByteBuffer;';
310311
default:
311312
realTypeAnnotation.type as 'MixedTypeAnnotation';
312313
throw new Error(
@@ -392,7 +393,7 @@ function translateReturnTypeToJniType(
392393
case 'ArrayTypeAnnotation':
393394
return 'Lcom/facebook/react/bridge/WritableArray;';
394395
case 'ArrayBufferTypeAnnotation':
395-
throw new Error('ArrayBuffer is only supported for C++ TurboModules.');
396+
return 'Ljava/nio/ByteBuffer;';
396397
default:
397398
realTypeAnnotation.type as 'MixedTypeAnnotation';
398399
throw new Error(

packages/react-native/ReactCommon/react/nativemodule/samples/platform/android/SampleTurboModule.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.facebook.react.bridge.WritableNativeMap
2727
import com.facebook.react.module.annotations.ReactModule
2828
import com.facebook.react.turbomodule.core.interfaces.BindingsInstallerHolder
2929
import com.facebook.react.turbomodule.core.interfaces.TurboModuleWithJSIBindings
30+
import java.nio.ByteBuffer
3031
import java.util.UUID
3132

3233
@DoNotStrip
@@ -264,6 +265,30 @@ public class SampleTurboModule(private val context: ReactApplicationContext) :
264265

265266
override fun invalidate(): Unit = Unit
266267

268+
@DoNotStrip
269+
@Suppress("unused")
270+
override fun getArrayBuffer(buffer: ByteBuffer) : ByteBuffer {
271+
error("ArrayBuffer is not yet supported in Java TurboModules")
272+
}
273+
274+
@DoNotStrip
275+
@Suppress("unused")
276+
override fun createNativeBuffer(size: Double) : ByteBuffer {
277+
error("ArrayBuffer is not yet supported in Java TurboModules")
278+
}
279+
280+
@DoNotStrip
281+
@Suppress("unused")
282+
override fun processAsyncBuffer(payload: ByteBuffer, promise: Promise) {
283+
promise.reject("UNSUPPORTED", "ArrayBuffer is not yet supported in Java TurboModules")
284+
}
285+
286+
@DoNotStrip
287+
@Suppress("unused")
288+
override fun getAsyncBuffer(size: Double, promise: Promise) {
289+
promise.reject("UNSUPPORTED", "ArrayBuffer is not yet supported in Java TurboModules")
290+
}
291+
267292
override fun getName(): String {
268293
return NAME
269294
}

0 commit comments

Comments
 (0)