Skip to content

Commit edf68fb

Browse files
committed
Update settings screen to include user data, events, tags
1 parent 125e053 commit edf68fb

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed

examples/default/src/screens/settings/SettingsScreen.tsx

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Instabug, {
66
InvocationEvent,
77
Locale,
88
NetworkLogger,
9+
WelcomeMessageMode,
910
ReproStepsMode,
1011
} from 'instabug-reactnative';
1112
import { InputGroup, InputLeftAddon, useToast, VStack, Button } from 'native-base';
@@ -30,12 +31,19 @@ export const SettingsScreen: React.FC<NativeStackScreenProps<HomeStackParamList,
3031
const [userID, setUserID] = useState('');
3132
const [userAttributeKey, setUserAttributeKey] = useState('');
3233
const [userAttributeValue, setUserAttributeValue] = useState('');
34+
const [userData, setUserData] = useState('')
35+
const [userEvent, setUserEvent] = useState('')
36+
const [tag, setTag] = useState('')
3337
const [featureFlagName, setFeatureFlagName] = useState('');
3438
const [featureFlagVariant, setfeatureFlagVariant] = useState('');
3539
const [isUserStepEnabled, setIsUserStepEnabled] = useState<boolean>(true);
40+
const [isSessionProfilerEnabled, setIsSessionProfilerEnabled] = useState<boolean>(true);
3641

3742
const toast = useToast();
3843
const [userAttributesFormError, setUserAttributesFormError] = useState<any>({});
44+
const [userDataFormError, setUserDataFormError] = useState<any>({})
45+
const [userEventFormError, setUserEventFormError] = useState<any>({})
46+
const [tagFormError, setTagFormError] = useState<any>({})
3947
const [featureFlagFormError, setFeatureFlagFormError] = useState<any>({});
4048
const { addItem } = useCallbackHandlers();
4149

@@ -50,6 +58,30 @@ export const SettingsScreen: React.FC<NativeStackScreenProps<HomeStackParamList,
5058
setUserAttributesFormError(errors);
5159
return Object.keys(errors).length === 0;
5260
};
61+
const validateUserDataForm = () => {
62+
const errors: any = {};
63+
if (userData.length === 0) {
64+
errors.userDataValue = 'Value is required';
65+
}
66+
setUserDataFormError(errors);
67+
return Object.keys(errors).length === 0;
68+
};
69+
const validateUserEventForm = () => {
70+
const errors: any = {};
71+
if (userData.length === 0) {
72+
errors.userEventValue = 'Value is required';
73+
}
74+
setUserEventFormError(errors);
75+
return Object.keys(errors).length === 0;
76+
};
77+
const validateTagForm = () => {
78+
const errors: any = {};
79+
if (userData.length === 0) {
80+
errors.tagValue = 'Value is required';
81+
}
82+
setTagFormError(errors);
83+
return Object.keys(errors).length === 0;
84+
};
5385
const validateFeatureFlagForm = () => {
5486
const errors: any = {};
5587
if (featureFlagName.length === 0) {
@@ -89,6 +121,35 @@ export const SettingsScreen: React.FC<NativeStackScreenProps<HomeStackParamList,
89121
setUserAttributeValue('');
90122
}
91123
};
124+
125+
const saveUserData = () => {
126+
if (validateUserDataForm()) {
127+
Instabug.setUserData(userData);
128+
toast.show({
129+
description: 'User Data added successfully',
130+
});
131+
setUserData('')
132+
}
133+
};
134+
const saveUserEvent = () => {
135+
if (validateUserEventForm()) {
136+
Instabug.logUserEvent(userEvent);
137+
toast.show({
138+
description: 'User Event added successfully',
139+
});
140+
setUserData('')
141+
}
142+
};
143+
const saveTag = () => {
144+
if (validateTagForm()) {
145+
Instabug.appendTags([tag])
146+
toast.show({
147+
description: 'Tag added successfully',
148+
});
149+
setTag('')
150+
}
151+
};
152+
92153
const saveFeatureFlags = () => {
93154
if (validateFeatureFlagForm()) {
94155
Instabug.addFeatureFlag({
@@ -250,6 +311,31 @@ export const SettingsScreen: React.FC<NativeStackScreenProps<HomeStackParamList,
250311
Instabug.removeExperiments(['exp1', 'exp2']);
251312
}}
252313
/>
314+
315+
<ListTile
316+
title="Session Profiler"
317+
subtitle={isSessionProfilerEnabled ? 'Enabled' : 'Disabled'}
318+
onPress={() => {
319+
navigation.navigate('SessionProfiler', {
320+
isEnabled: isSessionProfilerEnabled,
321+
setIsEnabled: (enabled: boolean) => {
322+
setIsSessionProfilerEnabled(enabled);
323+
Instabug.setSessionProfilerEnabled(enabled);
324+
navigation.goBack();
325+
},
326+
});
327+
}}
328+
testID="id_session_profiler"
329+
/>
330+
331+
<ListTile
332+
title="Welcome message Beta"
333+
onPress={() => Instabug.showWelcomeMessage(WelcomeMessageMode.beta)}
334+
/>
335+
<ListTile
336+
title="Welcome message Live"
337+
onPress={() => Instabug.showWelcomeMessage(WelcomeMessageMode.live)}
338+
/>
253339

254340
<VerticalListTile title="User Identification">
255341
<VStack>
@@ -316,6 +402,60 @@ export const SettingsScreen: React.FC<NativeStackScreenProps<HomeStackParamList,
316402
</Button>
317403
</VStack>
318404
</VerticalListTile>
405+
<VerticalListTile title="User Data">
406+
<VStack>
407+
<View style={styles.formContainer}>
408+
<View style={styles.inputWrapper}>
409+
<InputField
410+
placeholder="User data"
411+
onChangeText={(userData) => setUserData(userData)}
412+
value={userData}
413+
errorText={userDataFormError.userDataValue}
414+
/>
415+
</View>
416+
</View>
417+
418+
<Button mt="4" onPress={saveUserData}>
419+
Save user data
420+
</Button>
421+
</VStack>
422+
</VerticalListTile>
423+
<VerticalListTile title="User Event">
424+
<VStack>
425+
<View style={styles.formContainer}>
426+
<View style={styles.inputWrapper}>
427+
<InputField
428+
placeholder="User event"
429+
onChangeText={(userEvent) => setUserEvent(userEvent)}
430+
value={userEvent}
431+
errorText={userEventFormError.userEventValue}
432+
/>
433+
</View>
434+
</View>
435+
436+
<Button mt="4" onPress={saveUserEvent}>
437+
Save user event
438+
</Button>
439+
</VStack>
440+
</VerticalListTile>
441+
<VerticalListTile title="Tags">
442+
<VStack>
443+
<View style={styles.formContainer}>
444+
<View style={styles.inputWrapper}>
445+
<InputField
446+
placeholder="tag"
447+
onChangeText={(tag) => setTag(tag)}
448+
value={tag}
449+
errorText={tagFormError.tagValue}
450+
/>
451+
</View>
452+
</View>
453+
454+
<Button mt="4" onPress={saveTag}>
455+
Save tag
456+
</Button>
457+
</VStack>
458+
</VerticalListTile>
319459
<VerticalListTile title="Support varient">
320460
<VStack>
321461
<View style={styles.formContainer}>

0 commit comments

Comments
 (0)