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 +1 -1
- package/src/Componanats/ShakeFunction.js +3 -1
- package/src/Screens/AddDetailsScreen.js +44 -44
- package/src/Screens/FirstScreen.js +249 -249
- package/src/Screens/Shakebug.js +76 -37
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.
|
|
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
|
-
|
|
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={{
|
|
289
|
-
<StatusBar backgroundColor={ThemeColor} hidden={false} />
|
|
290
|
-
<
|
|
291
|
-
|
|
292
|
-
|
|
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 : '
|
|
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
|
-
|
|
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
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
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
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
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
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
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
|
-
|
|
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
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
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
|
-
<
|
|
380
|
-
onLongPress={() => {
|
|
381
|
-
setIsShow(!isShow)
|
|
382
|
-
}}
|
|
383
|
-
{...panResponder.panHandlers}
|
|
378
|
+
<TouchableOpacity
|
|
384
379
|
style={{
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
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
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
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
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
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
|
-
<
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
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
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
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
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
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
|
-
|
|
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
|
-
|
|
572
|
+
</SafeAreaView>
|
|
573
573
|
)
|
|
574
574
|
}
|
|
575
575
|
|
package/src/Screens/Shakebug.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
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.
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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={
|
|
97
|
-
{
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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);
|
|
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
|
/>
|