@@ -6,6 +6,7 @@ import Instabug, {
66 InvocationEvent ,
77 Locale ,
88 NetworkLogger ,
9+ WelcomeMessageMode ,
910 ReproStepsMode ,
1011} from 'instabug-reactnative' ;
1112import { 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