Skip to content

Commit bb3c5aa

Browse files
committed
fix(types): use root type imports from react-native WIP - events delayed by one event?
1 parent d41be35 commit bb3c5aa

10 files changed

Lines changed: 66 additions & 34 deletions

src/ads/native-ad/NativeAd.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
*/
1717

1818
import { EventSubscription, NativeEventEmitter, Platform } from 'react-native';
19-
import EventEmitter from 'react-native/Libraries/vendor/emitter/EventEmitter';
2019

2120
import { NativeAdEventType } from '../../NativeAdEventType';
2221
import { isFunction, isOneOf, isString } from '../../common';
@@ -52,7 +51,8 @@ export class NativeAd {
5251
readonly extras: Record<string, unknown> | null;
5352

5453
private nativeEventSubscription: EventSubscription;
55-
private eventEmitter: EventEmitter;
54+
private eventEmitter: NativeEventEmitter;
55+
private readonly eventEmitterTypes: string[];
5656

5757
private constructor(adUnitId: string, props: NativeAdProps) {
5858
this.adUnitId = adUnitId;
@@ -68,6 +68,7 @@ export class NativeAd {
6868
this.images = props.images;
6969
this.mediaContent = props.mediaContent;
7070
this.extras = props.extras as Record<string, unknown>;
71+
this.eventEmitterTypes = [];
7172

7273
if ('onAdEvent' in NativeGoogleMobileAdsNativeModule) {
7374
this.nativeEventSubscription = NativeGoogleMobileAdsNativeModule.onAdEvent(
@@ -84,8 +85,9 @@ export class NativeAd {
8485
'RNGMANativeAdEvent',
8586
this.onNativeAdEvent.bind(this),
8687
);
88+
this.eventEmitterTypes.push('RNGMANativeAdEvent');
8789
}
88-
this.eventEmitter = new EventEmitter();
90+
this.eventEmitter = new NativeEventEmitter();
8991
}
9092

9193
private onNativeAdEvent({ responseId, type, ...data }: NativeAdEventPayload) {
@@ -106,11 +108,16 @@ export class NativeAd {
106108
throw new Error(`NativeAd.addAdEventListener(_, *) 'listener' expected a function.`);
107109
}
108110

111+
this.eventEmitterTypes.push(type);
109112
return this.eventEmitter.addListener(type, listener);
110113
}
111114

112115
removeAllAdEventListeners() {
113-
this.eventEmitter.removeAllListeners();
116+
this.eventEmitterTypes.forEach(type => {
117+
this.eventEmitter.removeAllListeners(type);
118+
});
119+
// we want the array to be read-only, but also want to clear it.
120+
this.eventEmitterTypes.splice(0, this.eventEmitterTypes.length);
114121
}
115122

116123
destroy() {

src/internal/SharedEventEmitter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
*
1616
*/
1717

18-
import EventEmitter from 'react-native/Libraries/vendor/emitter/EventEmitter';
18+
import { NativeEventEmitter } from 'react-native';
1919

20-
export const SharedEventEmitter: EventEmitter = new EventEmitter();
20+
export const SharedEventEmitter: NativeEventEmitter = new NativeEventEmitter();

src/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,27 @@
1717

1818
import type * as React from 'react';
1919
import type { HostComponent, ViewProps } from 'react-native';
20-
import type { BubblingEventHandler, Float } from 'react-native/Libraries/Types/CodegenTypes';
21-
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
22-
import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
20+
import { codegenNativeCommands, codegenNativeComponent, CodegenTypes } from 'react-native';
2321

2422
export type NativeEvent = {
2523
type: string;
26-
width?: Float;
27-
height?: Float;
24+
width?: CodegenTypes.Float;
25+
height?: CodegenTypes.Float;
2826
code?: string;
2927
message?: string;
3028
name?: string;
3129
data?: string;
3230
currency?: string;
33-
precision?: Float;
34-
value?: Float;
31+
precision?: CodegenTypes.Float;
32+
value?: CodegenTypes.Float;
3533
};
3634

3735
export interface NativeProps extends ViewProps {
38-
sizeConfig: { sizes: string[]; maxHeight?: Float; width?: Float };
36+
sizeConfig: { sizes: string[]; maxHeight?: CodegenTypes.Float; width?: CodegenTypes.Float };
3937
unitId: string;
4038
request: string;
4139
manualImpressionsEnabled: boolean;
42-
onNativeEvent: BubblingEventHandler<NativeEvent>;
40+
onNativeEvent: CodegenTypes.BubblingEventHandler<NativeEvent>;
4341
}
4442

4543
export type ComponentType = HostComponent<NativeProps>;

src/specs/components/GoogleMobileAdsMediaViewNativeComponent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717

1818
import type { HostComponent, ViewProps } from 'react-native';
19-
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
19+
import { codegenNativeComponent } from 'react-native';
2020

2121
export interface NativeProps extends ViewProps {
2222
responseId: string;

src/specs/components/GoogleMobileAdsNativeViewNativeComponent.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717

1818
import type * as React from 'react';
1919
import type { HostComponent, ViewProps } from 'react-native';
20-
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
21-
import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
22-
import type { Int32 } from 'react-native/Libraries/Types/CodegenTypes';
20+
import { codegenNativeComponent, codegenNativeCommands, CodegenTypes } from 'react-native';
2321

2422
export interface NativeProps extends ViewProps {
2523
responseId: string;
@@ -29,10 +27,11 @@ type NativeViewComponentType = HostComponent<NativeProps>;
2927

3028
interface NativeCommands {
3129
registerAsset: (
30+
// TODO - we may remove this deprecation and shift to React.ComponentRef when RN0.84 is our minimum
3231
// eslint-disable-next-line @typescript-eslint/no-deprecated -- https://github.com/facebook/react-native/issues/54272
3332
viewRef: React.ElementRef<NativeViewComponentType>,
3433
assetType: string,
35-
reactTag: Int32,
34+
reactTag: CodegenTypes.Int32,
3635
) => void;
3736
}
3837

src/specs/modules/NativeAppOpenModule.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,19 @@
1616
*/
1717

1818
import { TurboModule, TurboModuleRegistry } from 'react-native';
19-
import { Double, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
19+
import { CodegenTypes } from 'react-native';
2020

2121
export interface Spec extends TurboModule {
22-
appOpenLoad(requestId: Double, adUnitId: string, requestOptions: UnsafeObject): void;
23-
appOpenShow(requestId: Double, adUnitId: string, showOptions?: UnsafeObject): Promise<void>;
22+
appOpenLoad(
23+
requestId: CodegenTypes.Double,
24+
adUnitId: string,
25+
requestOptions: CodegenTypes.UnsafeObject,
26+
): void;
27+
appOpenShow(
28+
requestId: CodegenTypes.Double,
29+
adUnitId: string,
30+
showOptions?: CodegenTypes.UnsafeObject,
31+
): Promise<void>;
2432
}
2533

2634
export default TurboModuleRegistry.getEnforcing<Spec>('RNGoogleMobileAdsAppOpenModule');

src/specs/modules/NativeGoogleMobileAdsModule.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717

1818
import type { TurboModule } from 'react-native';
1919
import { TurboModuleRegistry } from 'react-native';
20-
import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
20+
import type { CodegenTypes } from 'react-native';
2121

2222
import { AdapterStatus } from '../../types';
2323

2424
export interface Spec extends TurboModule {
2525
initialize(): Promise<AdapterStatus[]>;
26-
setRequestConfiguration(requestConfiguration?: UnsafeObject): Promise<void>;
26+
setRequestConfiguration(requestConfiguration?: CodegenTypes.UnsafeObject): Promise<void>;
2727
openAdInspector(): Promise<void>;
2828
openDebugMenu(adUnit: string): void;
2929
setAppVolume(volume: number): void;

src/specs/modules/NativeInterstitialModule.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,19 @@
1616
*/
1717

1818
import { TurboModule, TurboModuleRegistry } from 'react-native';
19-
import { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
19+
import { CodegenTypes } from 'react-native';
2020

2121
export interface Spec extends TurboModule {
22-
interstitialLoad(requestId: number, adUnitId: string, requestOptions: UnsafeObject): void;
23-
interstitialShow(requestId: number, adUnitId: string, showOptions?: UnsafeObject): Promise<void>;
22+
interstitialLoad(
23+
requestId: number,
24+
adUnitId: string,
25+
requestOptions: CodegenTypes.UnsafeObject,
26+
): void;
27+
interstitialShow(
28+
requestId: number,
29+
adUnitId: string,
30+
showOptions?: CodegenTypes.UnsafeObject,
31+
): Promise<void>;
2432
}
2533

2634
export default TurboModuleRegistry.getEnforcing<Spec>('RNGoogleMobileAdsInterstitialModule');

src/specs/modules/NativeRewardedInterstitialModule.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,18 @@
1616
*/
1717

1818
import { TurboModule, TurboModuleRegistry } from 'react-native';
19-
import { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
19+
import { CodegenTypes } from 'react-native';
2020

2121
export interface Spec extends TurboModule {
22-
rewardedInterstitialLoad(requestId: number, adUnitId: string, requestOptions: UnsafeObject): void;
22+
rewardedInterstitialLoad(
23+
requestId: number,
24+
adUnitId: string,
25+
requestOptions: CodegenTypes.UnsafeObject,
26+
): void;
2327
rewardedInterstitialShow(
2428
requestId: number,
2529
adUnitId: string,
26-
showOptions?: UnsafeObject,
30+
showOptions?: CodegenTypes.UnsafeObject,
2731
): Promise<void>;
2832
}
2933

src/specs/modules/NativeRewardedModule.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,19 @@
1616
*/
1717

1818
import { TurboModule, TurboModuleRegistry } from 'react-native';
19-
import { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
19+
import { CodegenTypes } from 'react-native';
2020

2121
export interface Spec extends TurboModule {
22-
rewardedLoad(requestId: number, adUnitId: string, requestOptions: UnsafeObject): void;
23-
rewardedShow(requestId: number, adUnitId: string, showOptions?: UnsafeObject): Promise<void>;
22+
rewardedLoad(
23+
requestId: number,
24+
adUnitId: string,
25+
requestOptions: CodegenTypes.UnsafeObject,
26+
): void;
27+
rewardedShow(
28+
requestId: number,
29+
adUnitId: string,
30+
showOptions?: CodegenTypes.UnsafeObject,
31+
): Promise<void>;
2432
}
2533

2634
export default TurboModuleRegistry.getEnforcing<Spec>('RNGoogleMobileAdsRewardedModule');

0 commit comments

Comments
 (0)