shakebug-react-native 2.4.6 → 2.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shakebug-react-native",
3
3
  "title": "shakebug-react-native",
4
- "version": "2.4.6",
4
+ "version": "2.4.8",
5
5
  "description": "Shakebug allows users to report the bug from your mobile phone for your application. Here users just need to shake their mobile and all the data regarding bugs & crashes can be seen by developers through their log in panel easily",
6
6
  "main": "src/index.tsx",
7
7
  "types": "src/index.tsx",
@@ -316,6 +316,7 @@ const ShakeFunction = ({ children, themeColor, showTutorialScreen, SDKScreenTitl
316
316
  subscription.unsubscribe();
317
317
  global.IsBackground = false
318
318
  global.isShakebugSDKOpen = true
319
+ // navigate('TestScreen');
319
320
  navigate("FirstScreen", { img: `${ImgUrl}`, themeColor: `${themeColor}`, SDKScreenTitle: `${SDKScreenTitle}` })
320
321
  }
321
322
  else {
@@ -492,7 +493,8 @@ const ShakeFunction = ({ children, themeColor, showTutorialScreen, SDKScreenTitl
492
493
  return (
493
494
  <View
494
495
  style={{
495
- flex: 1,
496
+ width: '100%',
497
+ height: '100%'
496
498
  }}
497
499
  >
498
500
 
@@ -285,11 +285,16 @@ const AddDetailsScreen = ({ media, updateParent, mediaType, themeColor, SDKScree
285
285
  }
286
286
 
287
287
  return (
288
- <SafeAreaView style={{ width: "100%", height: "100%", backgroundColor: themeColor, paddingTop: Platform.OS == 'android' ? DeviceInfo?.getSystemVersion() > 14 && StatusBar.currentHeight : 0 , paddingBottom: Platform.OS == 'android' ? DeviceInfo?.getSystemVersion() > 14 && StatusBar.currentHeight : 0}}>
289
- <StatusBar backgroundColor={ThemeColor} hidden={false} />
290
- <KeyboardAvoidingWrapper>
291
- <>
292
- <View style={{ width: "100%", height: "100%", backgroundColor: "#ffffff" }}>
288
+ <SafeAreaView style={{ flex: 1, backgroundColor: ThemeColor }}>
289
+ <StatusBar backgroundColor={ThemeColor} hidden={false} barStyle="dark-content" />
290
+ <View style={{
291
+ flex: 1,
292
+ backgroundColor: "#fff",
293
+ paddingTop: Platform.OS === 'android' ? StatusBar.currentHeight : 0,
294
+ paddingBottom: Platform.OS === 'android' ? 48 : 0 // Standard bottom navigation bar height
295
+ }}>
296
+ <KeyboardAvoidingWrapper>
297
+ <>
293
298
  <View style={{ height: '6%', padding: 5, paddingHorizontal: 15, backgroundColor: ThemeColor, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' }}>
294
299
  <TouchableOpacity
295
300
  style={{
@@ -393,7 +398,7 @@ const AddDetailsScreen = ({ media, updateParent, mediaType, themeColor, SDKScree
393
398
  </View>
394
399
  <Text style={{ fontSize: 12, color: 'red', fontWeight: '500', marginRight: '6%', textAlign: 'right' }}>{EmailBorder == "red" ? Localization[global.ShakebugLanguage].EmailError : ""}</Text>
395
400
 
396
- <TouchableOpacity activeOpacity={1} onPress={Keyboard.dismiss} style={{ height: Platform.OS == 'ios' ? Dimensions.get('window').height * 0.50 : '52%', width: '100%', marginTop: '0%', justifyContent: 'center', alignItems: 'center' }}>
401
+ <TouchableOpacity activeOpacity={1} onPress={Keyboard.dismiss} style={{ height: Platform.OS == 'ios' ? Dimensions.get('window').height * 0.50 : '50%', width: '100%', marginTop: '0%', justifyContent: 'center', alignItems: 'center' }}>
397
402
  {type == "img" ?
398
403
  path != "" && <Image source={{ uri: path }} resizeMode='contain' style={{ width: '100%', height: '100%' }} />
399
404
  :
@@ -401,7 +406,8 @@ const AddDetailsScreen = ({ media, updateParent, mediaType, themeColor, SDKScree
401
406
  {poster != "" && <VideoPlayer videoUri={path} img={poster} themeColor={ThemeColor} goToScreenAtIndex={goToScreenAtIndex} goBack={goBack} SDKScreenTitle={SDKScreenTitle} UpdateStatusBar={UpdateStatusBar} />}
402
407
  </View>}
403
408
  </TouchableOpacity>
404
- <View style={{ marginTop: '2%', width: '100%', position: 'absolute', bottom: 10 }}>
409
+
410
+ <View style={{ marginTop: '2%', width: '100%'}}>
405
411
  <View style={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', marginHorizontal: 20 }}>
406
412
  <TouchableOpacity onPress={() => openImagePicker()}>
407
413
  <Text style={{ fontSize: 16, color: ThemeColor, fontWeight: '300' }}>{Localization[global.ShakebugLanguage].ReplaceImage}</Text>
@@ -426,46 +432,40 @@ const AddDetailsScreen = ({ media, updateParent, mediaType, themeColor, SDKScree
426
432
  </View>
427
433
 
428
434
  </View>
429
- </View>
430
-
431
- <CustomeAlert
432
- isVisible={isErrorInAPI || isBugReported}
433
- text={apiMessage}
434
- color={themeColor}
435
- OnPrees={() => {
436
- if (isBugReported) {
437
- global.isScreenShotDetected = false;
438
- setIsScreenShot(false)
439
- setIsRecordingStart(false)
440
- goToScreenAtIndex(0)
441
- }
442
- setIsBugReported(false)
443
- setErrorInAPI(false)
444
- setIsLoading(false)
445
- }}
446
- />
447
-
448
-
449
- {isLoading &&
450
- <View
451
- style={{
452
- ...StyleSheet.absoluteFillObject,
453
- backgroundColor: 'rgba(0, 0, 0, 0.4)',
435
+
436
+
437
+ <CustomeAlert
438
+ isVisible={isErrorInAPI || isBugReported}
439
+ text={apiMessage}
440
+ color={themeColor}
441
+ OnPrees={() => {
442
+ if (isBugReported) {
443
+ global.isScreenShotDetected = false;
444
+ setIsScreenShot(false)
445
+ setIsRecordingStart(false)
446
+ goToScreenAtIndex(0)
447
+ }
448
+ setIsBugReported(false)
449
+ setErrorInAPI(false)
450
+ setIsLoading(false)
454
451
  }}
455
452
  />
456
- }
457
453
 
458
- {isLoading &&
459
- <ActivityIndicator size={'large'} color={themeColor} collapsable={true} style={{ position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, elevation: 2 }} />}
460
- </>
461
- </KeyboardAvoidingWrapper>
462
-
463
- <View
464
- style={{
465
- backgroundColor: '#fff',
466
- height: Platform.OS == 'android' ? 0 : 40,
467
- }}
468
- />
454
+
455
+ {isLoading &&
456
+ <View
457
+ style={{
458
+ ...StyleSheet.absoluteFillObject,
459
+ backgroundColor: 'rgba(0, 0, 0, 0.4)',
460
+ }}
461
+ />
462
+ }
463
+
464
+ {isLoading &&
465
+ <ActivityIndicator size={'large'} color={themeColor} collapsable={true} style={{ position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, elevation: 2 }} />}
466
+ </>
467
+ </KeyboardAvoidingWrapper>
468
+ </View>
469
469
 
470
470
  </SafeAreaView>
471
471
  )
@@ -43,7 +43,7 @@ const FirstScreen = ({ img, themeColor, SDKScreenTitle }) => {
43
43
 
44
44
  useEffect(() => {
45
45
  StatusBar.setHidden(false, 'slide');
46
-
46
+
47
47
  global.isScreenShotDetected = true;
48
48
  const backAction = () => {
49
49
  global.isTrigger = false
@@ -60,6 +60,7 @@ const FirstScreen = ({ img, themeColor, SDKScreenTitle }) => {
60
60
  const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);
61
61
 
62
62
  return () => backHandler.remove(); // Clean up the event listener on unmount
63
+
63
64
  }, []);
64
65
 
65
66
  const { RNCameraPermission } = NativeModules
@@ -132,8 +133,8 @@ const FirstScreen = ({ img, themeColor, SDKScreenTitle }) => {
132
133
  }
133
134
  }
134
135
  });
135
- };
136
136
 
137
+ };
137
138
 
138
139
  // For update image while change from Add details screen
139
140
  const updateImage = (data) => {
@@ -142,7 +143,6 @@ const FirstScreen = ({ img, themeColor, SDKScreenTitle }) => {
142
143
  setImage(data)
143
144
  }
144
145
 
145
-
146
146
  useEffect(() => {
147
147
  global.IsBackground = 'false'
148
148
  Keyboard.addListener('keyboardDidShow', () => {
@@ -273,8 +273,8 @@ const FirstScreen = ({ img, themeColor, SDKScreenTitle }) => {
273
273
  }
274
274
  ]
275
275
  )
276
- }
277
276
 
277
+ }
278
278
 
279
279
  const pan = useRef(new Animated.ValueXY()).current;
280
280
 
@@ -304,272 +304,272 @@ const FirstScreen = ({ img, themeColor, SDKScreenTitle }) => {
304
304
  pan.setValue({ x: 0, y: 0 });
305
305
  }
306
306
  })
307
+
307
308
  ).current;
308
309
 
309
310
  // backgroundColor: "#181818"
310
311
 
311
312
  return (
312
- <SafeAreaView style={{ width: "100%", height: '100%', backgroundColor: themeColor, paddingTop: Platform.OS == 'android' ? DeviceInfo?.getSystemVersion() > 14 && StatusBar.currentHeight : 0 , paddingBottom: Platform.OS == 'android' ? DeviceInfo?.getSystemVersion() > 14 && StatusBar.currentHeight : 0}}>
313
- <StatusBar backgroundColor={ThemeColor} />
314
-
315
- <View style={{ width: "100%", height: "100%", backgroundColor: "#e4fdfd" }}>
316
- <View style={{ height: '6%', padding: 5, paddingHorizontal: 15, backgroundColor: ThemeColor, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' }}>
317
- <TouchableOpacity
318
- style={{
319
- width: '10%',
320
- alignItems: 'center'
321
- }}
322
- onPress={() => {
323
- global.isTrigger = false
324
- global.isShakebugOpen = false
325
- global.IsBackground = 'true'
326
- global.isScreeenShotTaken = false
327
- setIsScreenShot(false)
328
- setIsRecordingStart(false)
329
- goToScreenAtIndex(0)
330
- global.isScreenShotDetected = false
331
- global.isShakebugSDKOpen = false
332
- }}
333
- >
334
- <Image source={require('../Assets/images/close.png')} resizeMode='contain' style={{ width: 35, height: 35 }} />
335
- </TouchableOpacity>
336
- <Text style={{ width: '80%', height: '80%', fontSize: 18, fontWeight: '300', color: 'white', textAlign: 'center' }}>
337
- {title}
338
- </Text>
339
- <TouchableOpacity
340
- style={{
341
- width: '10%',
342
- alignItems: 'center'
343
- }}
344
- onPress={async () => {
345
- const ImgUrl = await ref.current.capture()
346
- if (ImgUrl != undefined || ImgUrl != null) {
313
+ <SafeAreaView style={{ flex: 1, backgroundColor: ThemeColor }}>
314
+ <StatusBar backgroundColor={ThemeColor} barStyle="dark-content" />
315
+
316
+ <View style={{
317
+ flex: 1,
318
+ backgroundColor: "#e4fdfd",
319
+ paddingTop: Platform.OS === 'android' ? StatusBar.currentHeight : 0,
320
+ paddingBottom: Platform.OS === 'android' ? 48 : 0 // Standard bottom navigation bar height
321
+ }}>
322
+
323
+ <View style={{ height: '6%', padding: 5, paddingHorizontal: 15, backgroundColor: ThemeColor, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' }}>
324
+ <TouchableOpacity
325
+ style={{
326
+ width: '10%',
327
+ alignItems: 'center'
328
+ }}
329
+ onPress={() => {
330
+ global.isTrigger = false
331
+ global.isShakebugOpen = false
347
332
  global.IsBackground = 'true'
348
- navigate("AddDetailsScreen", { media: `${ImgUrl}`, updateParent: updateImage, mediaType: 'img', themeColor: ThemeColor, SDKScreenTitle: `${SDKScreenTitle}` })
349
- }
333
+ global.isScreeenShotTaken = false
334
+ setIsScreenShot(false)
335
+ setIsRecordingStart(false)
336
+ goToScreenAtIndex(0)
337
+ global.isScreenShotDetected = false
338
+ global.isShakebugSDKOpen = false
339
+ }}
340
+ >
341
+ <Image source={require('../Assets/images/close.png')} resizeMode='contain' style={{ width: 35, height: 35 }} />
342
+ </TouchableOpacity>
343
+ <Text style={{ width: '80%', height: '80%', fontSize: 18, fontWeight: '300', color: 'white', textAlign: 'center' }}>
344
+ {title}
345
+ </Text>
346
+ <TouchableOpacity
347
+ style={{
348
+ width: '10%',
349
+ alignItems: 'center'
350
+ }}
351
+ onPress={async () => {
352
+ const ImgUrl = await ref.current.capture()
353
+ if (ImgUrl != undefined || ImgUrl != null) {
354
+ global.IsBackground = 'true'
355
+ navigate("AddDetailsScreen", { media: `${ImgUrl}`, updateParent: updateImage, mediaType: 'img', themeColor: ThemeColor, SDKScreenTitle: `${SDKScreenTitle}` })
356
+ }
350
357
 
351
- }}
352
- >
353
- <Image source={require('../Assets/images/next.png')} resizeMode='contain' style={{ width: 25, height: 25 }} />
354
- </TouchableOpacity>
355
- </View>
356
- <View style={{ position: 'relative', height: Platform.OS == 'android' ? '78%' : '79%', backgroundColor: '#e4fdfd', width: '100%', alignItems: 'center', paddingTop: 8 }}>
357
- <ShakebugCapture ref={ref} options={{ format: "png", quality: 1 }} collapsable={false} style={{ width: Platform.OS == 'android' ? "77%" : '73%', height: '100%' }}>
358
-
359
- {text.trim().length > 0 ?
360
- <Animated.View
361
- style={[
362
- styles.card,
363
- {
364
- transform: pan.getTranslateTransform(),
365
- opacity: 1,
366
- borderWidth: isShow ? 1 : 0
367
- },
368
- ]}
358
+ }}
359
+ >
360
+ <Image source={require('../Assets/images/next.png')} resizeMode='contain' style={{ width: 25, height: 25 }} />
361
+ </TouchableOpacity>
362
+ </View>
363
+ <View style={{ position: 'relative', height: Platform.OS == 'android' ? '78%' : '79%', backgroundColor: '#e4fdfd', width: '100%', alignItems: 'center', paddingTop: 8 }}>
364
+ <ShakebugCapture ref={ref} options={{ format: "png", quality: 1 }} collapsable={false} style={{ width: Platform.OS == 'android' ? "77%" : '73%', height: '100%' }}>
365
+
366
+ {text.trim().length > 0 ?
367
+ <Animated.View
368
+ style={[
369
+ styles.card,
370
+ {
371
+ transform: pan.getTranslateTransform(),
372
+ opacity: 1,
373
+ borderWidth: isShow ? 1 : 0
374
+ },
375
+ ]}
369
376
 
370
- >
371
- <TouchableOpacity
372
- style={{
373
- width: '100%',
374
- height: '100%'
375
- }}
376
- activeOpacity={1}
377
- onPress={() => setIsShow(!isShow)}
378
377
  >
379
- <Text
380
- onLongPress={() => {
381
- setIsShow(!isShow)
382
- }}
383
- {...panResponder.panHandlers}
378
+ <TouchableOpacity
384
379
  style={{
385
- fontSize: 20,
386
- fontWeight: 'bold',
387
- backgroundColor: 'white',
388
- borderRadius: 8,
389
- padding: 5,
390
- color: selectd == 1 ? "black" : selectd == 2 ? 'red' : selectd == 3 ? 'green' : selectd == 4 ? '#1dd3e3' : selectd == 5 ? "yellow" : 'black',
391
- }}>{text}</Text>
392
- </TouchableOpacity>
393
-
394
- {isShow ? <TouchableOpacity
395
- activeOpacity={1}
396
- onPress={() => setText("")}
397
- style={{ position: 'absolute', top: '-25%', left: '-15%', width: 20, height: 20, zIndex: 1 }}>
398
- <Image source={require("../Assets/images/RemoveTextView.png")} style={{ width: '100%', height: '100%' }} resizeMode='contain' />
399
- </TouchableOpacity> : null}
400
- </Animated.View>
401
- : null}
402
- <ImageBackground
403
- source={image ? { uri: image } : undefined}
404
- style={{
405
- alignItems: 'center',
406
- width: "100%",
407
- height: "100%"
380
+ width: '100%',
381
+ height: '100%'
382
+ }}
383
+ activeOpacity={1}
384
+ onPress={() => setIsShow(!isShow)}
385
+ >
386
+ <Text
387
+ onLongPress={() => {
388
+ setIsShow(!isShow)
389
+ }}
390
+ {...panResponder.panHandlers}
391
+ style={{
392
+ fontSize: 20,
393
+ fontWeight: 'bold',
394
+ backgroundColor: 'white',
395
+ borderRadius: 8,
396
+ padding: 5,
397
+ color: selectd == 1 ? "black" : selectd == 2 ? 'red' : selectd == 3 ? 'green' : selectd == 4 ? '#1dd3e3' : selectd == 5 ? "yellow" : 'black',
398
+ }}>{text}</Text>
399
+ </TouchableOpacity>
400
+
401
+ {isShow ? <TouchableOpacity
402
+ activeOpacity={1}
403
+ onPress={() => setText("")}
404
+ style={{ position: 'absolute', top: '-25%', left: '-15%', width: 20, height: 20, zIndex: 1 }}>
405
+ <Image source={require("../Assets/images/RemoveTextView.png")} style={{ width: '100%', height: '100%' }} resizeMode='contain' />
406
+ </TouchableOpacity> : null}
407
+ </Animated.View>
408
+ : null}
409
+ <ImageBackground
410
+ source={image ? { uri: image } : undefined}
411
+ style={{
412
+ alignItems: 'center',
413
+ width: "100%",
414
+ height: "100%"
415
+ }}
416
+ resizeMode='contain'
417
+ >
418
+
419
+ <RNDrawingView
420
+ ref={canvasRef}
421
+ style={{ width: '100%', height: '100%' }}
422
+ color={selectd == 1 ? "black" : selectd == 2 ? 'red' : selectd == 3 ? 'green' : selectd == 4 ? '#1dd3e3' : selectd == 5 ? "yellow" : 'black'}
423
+ strokeWidth={Platform.OS == 'android' ? 5 : 3}
424
+ />
425
+
426
+ </ImageBackground>
427
+ </ShakebugCapture>
428
+
429
+ </View>
430
+ <View style={{ margin: 10, marginHorizontal: 20, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', height: '5%', backgroundColor: "#e4fdfd" }}>
431
+ <TouchableOpacity
432
+ style={{ backgroundColor: ThemeColor, padding: 8, width: '45%', alignItems: 'center' }}
433
+ onPress={() => {
434
+ global.IsBackground = 'false'
435
+ if (global.AllowVideo == false) {
436
+ setIsAlertText(`You have reached your max video limitation. \n\n Used Videos: ${global.used_video} \nAllowed Videos: ${global.total_video}\n\nPlease visit https://www.shakebug.com website and upgrade your plan.`)
437
+ setIsAlert(true)
438
+ }
439
+ else {
440
+ DeviceInfo.isEmulator()
441
+ .then(res => {
442
+ if (res != true || Platform.OS != 'ios') {
443
+ RecordVideo()
444
+ }
445
+ else {
446
+ setIsAlertText("Only real device is supported for recording video")
447
+ setIsAlert(true)
448
+ }
449
+ })
450
+ }
451
+ }}
452
+ >
453
+ <Text style={{ color: 'white' }}>{Localization[global.ShakebugLanguage].RecordVideo}</Text>
454
+ </TouchableOpacity>
455
+ <TouchableOpacity
456
+ style={{ backgroundColor: ThemeColor, padding: 8, width: '45%', alignItems: 'center' }}
457
+ onPress={() => {
458
+ if (global.AllowVideo == false) {
459
+ setIsAlertText(`You have reached your max video limitation. \n\n Used Videos: ${global.used_video} \nAllowed Videos: ${global.total_video}\n\nPlease visit https://www.shakebug.com website and upgrade your plan.`)
460
+ setIsAlert(true)
461
+ }
462
+ else {
463
+ openVideoPicker()
464
+ }
408
465
  }}
409
- resizeMode='contain'
410
466
  >
467
+ <Text style={{ color: 'white' }}>{Localization[global.ShakebugLanguage].ChooseVideo}</Text>
468
+ </TouchableOpacity>
469
+ </View>
411
470
 
412
- <RNDrawingView
413
- ref={canvasRef}
414
- style={{ width: '100%', height: '100%' }}
415
- color={selectd == 1 ? "black" : selectd == 2 ? 'red' : selectd == 3 ? 'green' : selectd == 4 ? '#1dd3e3' : selectd == 5 ? "yellow" : 'black'}
416
- strokeWidth={Platform.OS == 'android' ? 5 : 3}
417
- />
471
+ <View style={{ width: "100%", flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', paddingHorizontal: 15, height: Platform.OS == 'ios' ? '7%' : '8.5%', paddingVertical: 12, backgroundColor: "#181818" }}>
472
+ <TouchableOpacity
473
+ onPress={() => {
474
+ setIsDraw(true)
475
+ setSelected(1)
476
+ }}
477
+ >
478
+ <Image source={selectd == 1 ? require('../Assets/images/borderdBlack.png') : require('../Assets/images/black.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
479
+ </TouchableOpacity>
480
+ <TouchableOpacity
481
+ onPress={() => setSelected(2)}
482
+ >
483
+ <Image source={selectd == 2 ? require('../Assets/images/borderdRed.png') : require('../Assets/images/red.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
484
+ </TouchableOpacity>
485
+ <TouchableOpacity
486
+ onPress={() => setSelected(3)}
487
+ >
488
+ <Image source={selectd == 3 ? require('../Assets/images/borderdGreen.png') : require('../Assets/images/green.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
489
+ </TouchableOpacity>
490
+ <TouchableOpacity
491
+ onPress={() => setSelected(4)}
492
+ >
493
+ <Image source={selectd == 4 ? require('../Assets/images/borderdBlue.png') : require('../Assets/images/blue.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
494
+ </TouchableOpacity>
495
+ <TouchableOpacity
496
+ onPress={() => setSelected(5)}
497
+ >
498
+ <Image source={selectd == 5 ? require('../Assets/images/borderdYellow.png') : require('../Assets/images/yellow.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
499
+ </TouchableOpacity>
500
+ <TouchableOpacity
501
+ onPress={() => setAddTextView(true)}
502
+ >
503
+ <Image source={require('../Assets/images/text_icon.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
504
+ </TouchableOpacity>
418
505
 
419
- </ImageBackground>
420
- </ShakebugCapture>
421
-
422
- </View>
423
- <View style={{ margin: 10, marginHorizontal: 20, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', height: '5%' }}>
424
- <TouchableOpacity
425
- style={{ backgroundColor: ThemeColor, padding: 8, width: '45%', alignItems: 'center' }}
426
- onPress={() => {
427
- global.IsBackground = 'false'
428
- if (global.AllowVideo == false) {
429
- setIsAlertText(`You have reached your max video limitation. \n\n Used Videos: ${global.used_video} \nAllowed Videos: ${global.total_video}\n\nPlease visit https://www.shakebug.com website and upgrade your plan.`)
430
- setIsAlert(true)
431
- }
432
- else {
433
- DeviceInfo.isEmulator()
434
- .then(res => {
435
- if (res != true || Platform.OS != 'ios') {
436
- RecordVideo()
437
- }
438
- else {
439
- setIsAlertText("Only real device is supported for recording video")
440
- setIsAlert(true)
441
- }
442
- })
443
- }
444
- }}
445
- >
446
- <Text style={{ color: 'white' }}>{Localization[global.ShakebugLanguage].RecordVideo}</Text>
447
- </TouchableOpacity>
448
- <TouchableOpacity
449
- style={{ backgroundColor: ThemeColor, padding: 8, width: '45%', alignItems: 'center' }}
450
- onPress={() => {
451
- if (global.AllowVideo == false) {
452
- setIsAlertText(`You have reached your max video limitation. \n\n Used Videos: ${global.used_video} \nAllowed Videos: ${global.total_video}\n\nPlease visit https://www.shakebug.com website and upgrade your plan.`)
453
- setIsAlert(true)
454
- }
455
- else {
456
- openVideoPicker()
457
- }
458
- }}
459
- >
460
- <Text style={{ color: 'white' }}>{Localization[global.ShakebugLanguage].ChooseVideo}</Text>
461
- </TouchableOpacity>
462
- </View>
463
-
464
- <View style={{ width: "100%", flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', paddingHorizontal: 15, height: Platform.OS == 'ios' ? '7%' : '8.5%', paddingVertical: 12, backgroundColor: "#181818" }}>
465
- <TouchableOpacity
466
- onPress={() => {
467
- setIsDraw(true)
468
- setSelected(1)
469
- }}
470
- >
471
- <Image source={selectd == 1 ? require('../Assets/images/borderdBlack.png') : require('../Assets/images/black.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
472
- </TouchableOpacity>
473
- <TouchableOpacity
474
- onPress={() => setSelected(2)}
475
- >
476
- <Image source={selectd == 2 ? require('../Assets/images/borderdRed.png') : require('../Assets/images/red.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
477
- </TouchableOpacity>
478
- <TouchableOpacity
479
- onPress={() => setSelected(3)}
480
- >
481
- <Image source={selectd == 3 ? require('../Assets/images/borderdGreen.png') : require('../Assets/images/green.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
482
- </TouchableOpacity>
483
- <TouchableOpacity
484
- onPress={() => setSelected(4)}
485
- >
486
- <Image source={selectd == 4 ? require('../Assets/images/borderdBlue.png') : require('../Assets/images/blue.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
487
- </TouchableOpacity>
488
- <TouchableOpacity
489
- onPress={() => setSelected(5)}
490
- >
491
- <Image source={selectd == 5 ? require('../Assets/images/borderdYellow.png') : require('../Assets/images/yellow.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
492
- </TouchableOpacity>
493
- <TouchableOpacity
494
- onPress={() => setAddTextView(true)}
506
+ <TouchableOpacity style={{ backgroundColor: ThemeColor, padding: 5 }} onPress={() => ClearCanvas(canvasRef)}>
507
+ <Image source={require('../Assets/images/clear.png')} resizeMode='contain' style={{ width: 30, height: 30 }} />
508
+ </TouchableOpacity>
509
+ </View>
510
+ </View >
511
+
512
+ {addTextView ? (<View style={{ flex: 1, position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, backgroundColor: 'black', opacity: 0.93, alignItems: 'center' }}>
513
+ <KeyboardAvoidingView
514
+ behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
515
+ style={styles.container}
495
516
  >
496
- <Image source={require('../Assets/images/text_icon.png')} resizeMode='contain' style={{ width: 40, height: 40 }} />
497
- </TouchableOpacity>
498
-
499
- <TouchableOpacity style={{ backgroundColor: ThemeColor, padding: 5 }} onPress={() => ClearCanvas(canvasRef)}>
500
- <Image source={require('../Assets/images/clear.png')} resizeMode='contain' style={{ width: 30, height: 30 }} />
501
- </TouchableOpacity>
502
- </View>
503
- </View >
504
-
505
- {addTextView ? (<View style={{ flex: 1, position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, backgroundColor: 'black', opacity: 0.93, alignItems: 'center' }}>
506
- <KeyboardAvoidingView
507
- behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
508
- style={styles.container}
509
- >
510
- <View style={styles.innerContainer}>
511
- <TextInput
512
- style={{
513
- width: '90%',
514
- alignSelf: 'center',
515
- height: '70%',
516
- paddingHorizontal: 10,
517
- textAlign: 'center',
518
- textAlignVertical: 'center',
519
- marginTop: 30,
520
- fontSize: 18,
521
- color: selectd == 1 ? "white" : selectd == 2 ? 'red' : selectd == 3 ? 'green' : selectd == 4 ? '#1dd3e3' : selectd == 5 ? "yellow" : 'black'
517
+ <View style={styles.innerContainer}>
518
+ <TextInput
519
+ style={{
520
+ width: '90%',
521
+ alignSelf: 'center',
522
+ height: '70%',
523
+ paddingHorizontal: 10,
524
+ textAlign: 'center',
525
+ textAlignVertical: 'center',
526
+ marginTop: 30,
527
+ fontSize: 18,
528
+ color: selectd == 1 ? "white" : selectd == 2 ? 'red' : selectd == 3 ? 'green' : selectd == 4 ? '#1dd3e3' : selectd == 5 ? "yellow" : 'black'
529
+ }}
530
+ autoFocus
531
+ multiline
532
+ placeholder="Type here..."
533
+ placeholderTextColor="#b2b2b2"
534
+ cursorColor={selectd == 1 ? "white" : selectd == 2 ? 'red' : selectd == 3 ? 'green' : selectd == 4 ? '#1dd3e3' : selectd == 5 ? "yellow" : 'black'}
535
+ value={text}
536
+ onChangeText={(e) => setText(e)}
537
+ />
538
+ </View>
539
+ <TouchableOpacity
540
+ style={keyboardOpen ? styles.buttonShifted : styles.button}
541
+ onPress={() => {
542
+ setIsShow(false)
543
+ setAddTextView(false)
522
544
  }}
523
- autoFocus
524
- multiline
525
- placeholder="Type here..."
526
- placeholderTextColor="#b2b2b2"
527
- cursorColor={selectd == 1 ? "white" : selectd == 2 ? 'red' : selectd == 3 ? 'green' : selectd == 4 ? '#1dd3e3' : selectd == 5 ? "yellow" : 'black'}
528
- value={text}
529
- onChangeText={(e) => setText(e)}
530
- />
531
- </View>
532
- <TouchableOpacity
533
- style={keyboardOpen ? styles.buttonShifted : styles.button}
534
- onPress={() => {
535
- setIsShow(false)
536
- setAddTextView(false)
545
+ >
546
+ <Text style={{ color: 'white' }}>{Localization[global.ShakebugLanguage].Done}</Text>
547
+ </TouchableOpacity>
548
+ </KeyboardAvoidingView>
549
+ </View>) : null}
550
+
551
+ {isLoading &&
552
+ <View
553
+ style={{
554
+ ...StyleSheet.absoluteFillObject,
555
+ backgroundColor: 'rgba(0, 0, 0, 0.4)',
537
556
  }}
538
- >
539
- <Text style={{ color: 'white' }}>{Localization[global.ShakebugLanguage].Done}</Text>
540
- </TouchableOpacity>
541
- </KeyboardAvoidingView>
542
- </View>) : null}
543
-
544
- <View
545
- style={{
546
- backgroundColor: '#e4fdfd',
547
- height: Platform.OS == 'android' ? 0 : 40,
548
- }}
549
- />
550
-
551
- {isLoading &&
552
- <View
553
- style={{
554
- ...StyleSheet.absoluteFillObject,
555
- backgroundColor: 'rgba(0, 0, 0, 0.4)',
557
+ />
558
+ }
559
+
560
+ <CustomeAlert
561
+ isVisible={isAlert}
562
+ text={isAlertText}
563
+ color={themeColor}
564
+ OnPrees={() => {
565
+ setIsAlert(false)
566
+ setIsAlertText("")
556
567
  }}
557
568
  />
558
- }
559
-
560
- <CustomeAlert
561
- isVisible={isAlert}
562
- text={isAlertText}
563
- color={themeColor}
564
- OnPrees={() => {
565
- setIsAlert(false)
566
- setIsAlertText("")
567
- }}
568
- />
569
569
 
570
- {isLoading && <ActivityIndicator size={'large'} color={themeColor} collapsable={true} style={{ position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, elevation: 2 }} />}
570
+ {isLoading && <ActivityIndicator size={'large'} color={themeColor} collapsable={true} style={{ position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, elevation: 2 }} />}
571
571
 
572
- </SafeAreaView>
572
+ </SafeAreaView>
573
573
  )
574
574
  }
575
575
 
@@ -1,5 +1,16 @@
1
1
  import React from 'react';
2
- import { Platform, Alert, AppState, NativeModules, View, StyleSheet, Animated, Dimensions, Modal } from 'react-native';
2
+ import {
3
+ Platform,
4
+ Alert,
5
+ AppState,
6
+ NativeModules,
7
+ View,
8
+ Text,
9
+ StyleSheet,
10
+ Animated,
11
+ Dimensions,
12
+ Modal,
13
+ } from 'react-native';
3
14
  import ShakeFunction from '../Componanats/ShakeFunction';
4
15
  import FirstScreen from './FirstScreen';
5
16
  import AddDetailsScreen from './AddDetailsScreen';
@@ -52,7 +63,7 @@ global.isScreeenShotTaken = false;
52
63
  global.restrictedViews = [];
53
64
  global.currentScreen = ""
54
65
  global.isShakebugSDKOpen = false;
55
- global.sdk_version = "2.4.6";
66
+ global.sdk_version = "2.4.8";
56
67
  global.app_lunch_count = 0;
57
68
  global.POPUP_LAUNCH_THRESHOLD = 3;
58
69
  global.POPUP_COOLDOWN_DAYS = 2;
@@ -70,43 +81,70 @@ const ShakebugContext = React.createContext();
70
81
 
71
82
  // For navigation in register screen
72
83
  const NavigationContainer = ({ screens, setFocusedScreen }) => {
73
-
74
84
  const { navigationState } = useNavigation();
75
- const animation = React.useRef(new Animated.Value(0)).current;
76
- const { width } = Dimensions.get('window');
77
85
 
78
- React.useEffect(() => {
79
- if (navigationState && navigationState.length > 0) {
80
- setFocusedScreen(navigationState[navigationState.length - 1].name);
81
- }
82
- return () => {
83
- setFocusedScreen('');
84
- };
85
- }, [navigationState, setFocusedScreen]);
86
86
 
87
- React.useEffect(() => {
88
- Animated.timing(animation, {
89
- toValue: navigationState.length - 1,
90
- duration: 300,
91
- useNativeDriver: true,
92
- }).start();
93
- }, [navigationState, animation]);
87
+ if (!navigationState || navigationState.length === 0) {
88
+ return (
89
+ <View
90
+ style={{
91
+ flex: 1,
92
+ justifyContent: 'center',
93
+ alignItems: 'center',
94
+ backgroundColor: 'red',
95
+ }}
96
+ >
97
+ <Text style={{ color: 'white', fontSize: 20 }}>
98
+ Navigation State Empty
99
+ </Text>
100
+ </View>
101
+ );
102
+ }
103
+
104
+ const currentScreen =
105
+ navigationState[navigationState.length - 1];
106
+
107
+
108
+ const ScreenComponent = screens[currentScreen.name];
109
+
110
+
111
+ if (!ScreenComponent) {
112
+ return (
113
+ <View
114
+ style={{
115
+ flex: 1,
116
+ justifyContent: 'center',
117
+ alignItems: 'center',
118
+ backgroundColor: 'red',
119
+ }}
120
+ >
121
+ <Text style={{ color: 'white', fontSize: 20 }}>
122
+ Screen Not Found: {currentScreen.name}
123
+ </Text>
124
+ </View>
125
+ );
126
+ }
94
127
 
95
128
  return (
96
- <View style={styles.container}>
97
- {navigationState.map((screen, index) => {
98
- const ScreenComponent = screens[screen.name];
99
- const translateX = animation.interpolate({
100
- inputRange: [index - 1, index, index + 1],
101
- outputRange: [width, 0, -width],
102
- });
103
-
104
- return (
105
- <Animated.View key={index} style={[styles.screen, { transform: [{ translateX }] }]}>
106
- <ScreenComponent {...screen.params} />
107
- </Animated.View>
108
- );
109
- })}
129
+ <View style={{ flex: 1, backgroundColor: 'white' }}>
130
+ <ScreenComponent {...(currentScreen.params || {})} />
131
+ </View>
132
+ );
133
+ };
134
+
135
+ const TestScreen = () => {
136
+ return (
137
+ <View
138
+ style={{
139
+ flex: 1,
140
+ backgroundColor: 'yellow',
141
+ justifyContent: 'center',
142
+ alignItems: 'center',
143
+ }}
144
+ >
145
+ <Text style={{ fontSize: 30, color: 'black' }}>
146
+ TEST SCREEN
147
+ </Text>
110
148
  </View>
111
149
  );
112
150
  };
@@ -465,7 +503,7 @@ function Shakebug({ children, Android_appkey, iOS_appkey, showTutorialScreenFirs
465
503
  setAllowCrashFlag(global.allowCrashReport);
466
504
  setAllowEventFlag(global.allowEvent);
467
505
  setAllowReviewFlag(global.allowReview);
468
- setAllowSessionFlag(global.allowSession); log.debug("------------------------------------------------------------------------------------------");
506
+ setAllowSessionFlag(global.allowSession); log.debug("------------------------------------------------------------------------------------------");
469
507
  log.info('API response:', message);
470
508
  log.debug("------------------------------------------------------------------------------------------");
471
509
  if (global.allowSession) { StartSession(); }
@@ -538,7 +576,7 @@ function Shakebug({ children, Android_appkey, iOS_appkey, showTutorialScreenFirs
538
576
  }}>
539
577
  <View
540
578
  style={{
541
- flex: 1,
579
+ flex: 1
542
580
  }}
543
581
  >
544
582
  <GlobalStateProvider>
@@ -549,7 +587,8 @@ function Shakebug({ children, Android_appkey, iOS_appkey, showTutorialScreenFirs
549
587
  TutorialScreen: TutorialScreen,
550
588
  FirstScreen: FirstScreen,
551
589
  TrimVideoScreen: TrimVideoScreen,
552
- AddDetailsScreen: AddDetailsScreen
590
+ AddDetailsScreen: AddDetailsScreen,
591
+ TestScreen: TestScreen,
553
592
  }}
554
593
  setFocusedScreen={setFocusedScreen}
555
594
  />