Skip to content

Commit ee3ffbb

Browse files
add new scenarios
1 parent a930b08 commit ee3ffbb

16 files changed

+647
-315
lines changed

examples/default/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"@react-native-community/netinfo": "^11.4.1",
1515
"@react-native-community/slider": "^4.5.5",
1616
"@react-navigation/bottom-tabs": "^6.5.7",
17+
"@react-navigation/material-top-tabs": "6.5.3",
1718
"@react-navigation/native": "^6.1.6",
1819
"@react-navigation/native-stack": "^6.9.12",
1920
"axios": "^1.7.4",
@@ -28,10 +29,12 @@
2829
"react-native-config": "^1.5.3",
2930
"react-native-gesture-handler": "^2.13.4",
3031
"react-native-maps": "1.10.3",
32+
"react-native-pager-view": "^6.9.1",
3133
"react-native-reanimated": "^3.16.1",
3234
"react-native-safe-area-context": "^4.12.0",
3335
"react-native-screens": "^3.35.0",
3436
"react-native-svg": "^15.8.0",
37+
"react-native-tab-view": "^3.5.2",
3538
"react-native-vector-icons": "^10.2.0",
3639
"react-native-webview": "^13.13.2",
3740
"react-query": "^3.39.3"

examples/default/src/App.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { nativeBaseTheme } from './theme/nativeBaseTheme';
2121
import { navigationTheme } from './theme/navigationTheme';
2222

2323
import { QueryClient, QueryClientProvider } from 'react-query';
24+
import { CallbackHandlersProvider } from './contexts/callbackContext';
2425

2526
const queryClient = new QueryClient();
2627

@@ -89,7 +90,9 @@ export const App: React.FC = () => {
8990
<NativeBaseProvider theme={nativeBaseTheme}>
9091
<QueryClientProvider client={queryClient}>
9192
<NavigationContainer onStateChange={Instabug.onStateChange} theme={navigationTheme}>
92-
<RootTabNavigator />
93+
<CallbackHandlersProvider>
94+
<RootTabNavigator />
95+
</CallbackHandlersProvider>
9396
</NavigationContainer>
9497
</QueryClientProvider>
9598
</NativeBaseProvider>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import React, { createContext, useContext, useState } from 'react';
2+
3+
// A single key/value pair
4+
export type KeyValuePair = { key: string; value: string };
5+
6+
// An item that contains multiple key/value pairs
7+
export type Item = {
8+
id: string;
9+
fields: KeyValuePair[]; // list of key/value pairs
10+
};
11+
12+
// CallbackHandlersType = { [title: string]: Item[] }
13+
export type CallbackHandlersType = Record<string, Item[]>;
14+
15+
type CallbackHandlersContextType = {
16+
callbackHandlers: CallbackHandlersType;
17+
clearList: (title: string) => void;
18+
addItem: (title: string, item: Item) => void;
19+
};
20+
21+
const CallbackHandlersContext = createContext<CallbackHandlersContextType | undefined>(undefined);
22+
23+
export const CallbackHandlersProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
24+
const [callbackHandlers, setCallbackHandlers] = useState<CallbackHandlersType>({});
25+
26+
// Clears all items under a specific title
27+
const clearList = (title: string) => {
28+
setCallbackHandlers((prev) => ({ ...prev, [title]: [] }));
29+
};
30+
31+
// Adds an item (with multiple key/value pairs) to a specific title list
32+
const addItem = (title: string, item: Item) => {
33+
setCallbackHandlers((prev) => {
34+
const existingList = prev[title] || [];
35+
return {
36+
...prev,
37+
[title]: [...existingList, item],
38+
};
39+
});
40+
};
41+
42+
return (
43+
<CallbackHandlersContext.Provider value={{ callbackHandlers, clearList, addItem }}>
44+
{children}
45+
</CallbackHandlersContext.Provider>
46+
);
47+
};
48+
49+
// Hook to use the context
50+
export const useCallbackHandlers = () => {
51+
const ctx = useContext(CallbackHandlersContext);
52+
if (!ctx) {
53+
throw new Error('useCallbackHandlers must be used within CallbackHandlersProvider');
54+
}
55+
return ctx;
56+
};

examples/default/src/navigation/HomeStack.tsx

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ import { GoogleMapsScreen } from '../screens/user-steps/GoogleMapsScreen';
5656
import { LargeImageListScreen } from '../screens/user-steps/LargeImageListScreen';
5757
import { APMScreen } from '../screens/apm/APMScreen';
5858
import { TracesScreen } from '../screens/apm/TracesScreen';
59-
import { NetworkScreen } from '../screens/apm/NetworkScreen';
59+
import { NetworkScreen } from '../screens/apm/network/NetworkScreen';
6060
import { FlowsScreen } from '../screens/apm/FlowsScreen';
6161
import { SessionReplayScreen } from '../screens/SessionReplayScreen';
6262
import { LegacyModeScreen } from '../screens/LegacyModeScreen';
@@ -78,6 +78,15 @@ import {
7878
} from '../screens/crash-reporting/NDKCrashesStateScreen';
7979
import { NonFatalCrashesScreen } from '../screens/crash-reporting/NonFatalCrashesScreen';
8080
import { FatalCrashesScreen } from '../screens/crash-reporting/FatalCrashesScreen';
81+
import CallbackScreen from '../screens/CallbackHandlersScreen';
82+
import {
83+
NetworkStateScreen,
84+
type NetworkStateScreenProp,
85+
} from '../screens/apm/network/NetworkStateScreen';
86+
import {
87+
UserStepsStateScreen,
88+
type UserStepsStateScreenProp,
89+
} from '../screens/settings/UserStepsStateScreen';
8190

8291
export type HomeStackParamList = {
8392
Home: undefined;
@@ -127,6 +136,10 @@ export type HomeStackParamList = {
127136
WebViews: undefined;
128137
FullWebViews: undefined;
129138
PartialWebViews: undefined;
139+
NetworkState: NetworkStateScreenProp;
140+
UserStepsState: UserStepsStateScreenProp;
141+
142+
CallbackScreen: undefined;
130143
};
131144

132145
const HomeStack = createNativeStackNavigator<HomeStackParamList>();
@@ -304,6 +317,22 @@ export const HomeStackNavigator: React.FC = () => {
304317
component={PartialWebViewsScreen}
305318
options={{ title: 'PartialWebViews' }}
306319
/>
320+
<HomeStack.Screen
321+
name="CallbackScreen"
322+
component={CallbackScreen}
323+
options={{ title: 'callbackHandler' }}
324+
/>
325+
326+
<HomeStack.Screen
327+
name="NetworkState"
328+
component={NetworkStateScreen}
329+
options={{ title: 'Network State' }}
330+
/>
331+
<HomeStack.Screen
332+
name="UserStepsState"
333+
component={UserStepsStateScreen}
334+
options={{ title: 'User Steps State' }}
335+
/>
307336
</HomeStack.Navigator>
308337
);
309338
};

examples/default/src/navigation/RootTab.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
} from '@react-navigation/bottom-tabs';
77
import Icon from 'react-native-vector-icons/Ionicons';
88

9-
import { SettingsScreen } from '../screens/SettingsScreen';
9+
import { SettingsScreen } from '../screens/settings/SettingsScreen';
1010
import { HomeStackNavigator } from './HomeStack';
1111
import { Platform } from 'react-native';
1212

0 commit comments

Comments
 (0)