Skip to content

Commit be802f6

Browse files
fixing wrong types components
1 parent f6a696e commit be802f6

File tree

5 files changed

+25
-22
lines changed

5 files changed

+25
-22
lines changed

plugins/node/instrumentation-react-native-navigation/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"@types/sinon": "10.0.18",
6363
"amqplib": "0.8.0",
6464
"babel-plugin-react-native-web": "^0.19.12",
65+
"expo-router": "^3.5.23",
6566
"jsdom": "^15.2.1",
6667
"jsdom-global": "^3.0.2",
6768
"lodash": "4.17.21",
@@ -71,6 +72,7 @@
7172
"react": "~18.2.0",
7273
"react-dom": "~18.2.0",
7374
"react-native": "^0.74.0",
75+
"react-native-navigation": "^7.40.3",
7476
"react-native-web": "^0.19.12",
7577
"sinon": "15.2.0",
7678
"test-all-versions": "6.1.0",

plugins/node/instrumentation-react-native-navigation/src/components/NavigationTracker.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ const NavigationTracker = forwardRef<
4040

4141
return <>{children}</>;
4242
});
43+
4344
NavigationTracker.displayName = 'NavigationTracker';
4445

4546
export default NavigationTracker;

plugins/node/instrumentation-react-native-navigation/src/types/navigation.ts

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
* limitations under the License.
1515
*/
1616
import { Attributes, TracerOptions } from '@opentelemetry/api';
17+
import { useNavigationContainerRef as useReactNativeNavigationContainerRef } from '@react-navigation/native';
18+
import { useNavigationContainerRef as useReactNativeNavigationExpoContainerRef } from 'expo-router';
19+
import { Navigation } from 'react-native-navigation';
1720

1821
/*
1922
* Copyright The OpenTelemetry Authors
@@ -30,22 +33,12 @@ import { Attributes, TracerOptions } from '@opentelemetry/api';
3033
* See the License for the specific language governing permissions and
3134
* limitations under the License.
3235
*/
33-
export interface INavigationContainer {
34-
addListener: (
35-
event: 'state',
36-
callback: (args: { name: string }) => void
37-
) => void;
38-
getCurrentRoute: () => { name: string };
39-
}
4036

41-
export interface INativeNavigationContainer {
42-
registerComponentDidAppearListener: (
43-
cb: (args: { componentName: string }) => void
44-
) => void;
45-
registerComponentDidDisappearListener: (
46-
cb: (args: { componentName: string }) => void
47-
) => void;
48-
}
37+
export type INativeNavigationContainer = ReturnType<typeof Navigation.events>;
38+
39+
export type INavigationContainer =
40+
| ReturnType<typeof useReactNativeNavigationContainerRef>
41+
| ReturnType<typeof useReactNativeNavigationExpoContainerRef>['current'];
4942

5043
export interface NavigationTrackerConfig {
5144
attributes?: Attributes;

plugins/node/instrumentation-react-native-navigation/test/NativeNavigationTracker.test.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ import { NativeNavigationTracker } from '../src';
2222
import useProvider from './helpers/hooks/useProvider';
2323
import api from '@opentelemetry/api';
2424
import * as rnn from './helpers/react-native-navigation';
25-
import { NavigationTrackerConfig } from '../src/types/navigation';
25+
import {
26+
INativeNavigationContainer,
27+
NavigationTrackerConfig,
28+
} from '../src/types/navigation';
2629

2730
const AppWithProvider: FC<{
2831
shouldPassProvider: boolean;
@@ -60,7 +63,7 @@ describe('NativeNavigationTracker.tsx', function () {
6063
sandbox.stub(Navigation, 'events').returns({
6164
registerComponentDidAppearListener: mockDidAppearListener,
6265
registerComponentDidDisappearListener: mockDidDisappearListener,
63-
});
66+
} as unknown as INativeNavigationContainer);
6467

6568
mockAddEventListener = sandbox.spy(AppState, 'addEventListener');
6669
mockConsoleDir = sandbox.spy(console, 'dir');

plugins/node/instrumentation-react-native-navigation/test/helpers/react-native-navigation.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,14 @@
1414
* limitations under the License.
1515
*/
1616

17-
// referencing to `wix/react-native-navigation` package
17+
import { Navigation as WixNavigation } from 'react-native-navigation';
18+
19+
// referencing to `react-native-navigation` package.
20+
// hacky trick to mock implementation in order to be able to stub the methods in tests
1821
export const Navigation = {
19-
events: () => ({
20-
registerComponentDidAppearListener: () => {},
21-
registerComponentDidDisappearListener: () => {},
22-
}),
22+
events: () =>
23+
({
24+
registerComponentDidAppearListener: () => {},
25+
registerComponentDidDisappearListener: () => {},
26+
} as unknown as ReturnType<typeof WixNavigation.events>),
2327
};

0 commit comments

Comments
 (0)