@@ -21,6 +21,8 @@ import AutoConfig from "./AutoConfig";
2121import { ScrollStopper } from "./ScrollStopper" ;
2222import { isLocalNetwork } from "./NetworkUtils" ;
2323import { ScreenRecorder } from "./ScreenRecorder" ;
24+ import GleapConsoleLogManager from "./GleapConsoleLogManager" ;
25+ import GleapCrashDetector from "./GleapCrashDetector" ;
2426
2527if ( typeof HTMLCanvasElement !== "undefined" && HTMLCanvasElement . prototype ) {
2628 HTMLCanvasElement . prototype . __originalGetContext =
@@ -53,11 +55,9 @@ class Gleap {
5355 screenshot = null ;
5456 autostartDrawing = false ;
5557 actionLog = [ ] ;
56- logArray = [ ] ;
5758 customData = { } ;
5859 formData = { } ;
5960 excludeData = { } ;
60- logMaxLength = 500 ;
6161 buttonType = Gleap . FEEDBACK_BUTTON_NONE ;
6262 feedbackType = "BUG" ;
6363 sessionStart = new Date ( ) ;
@@ -197,7 +197,7 @@ class Gleap {
197197 oldSession . gleapHash = gleapHash ;
198198
199199 saveToGleapCache ( `session-${ sdkKey } ` , oldSession ) ;
200- } catch ( exp ) { }
200+ } catch ( exp ) { }
201201 }
202202
203203 const sessionInstance = Session . getInstance ( ) ;
@@ -209,7 +209,7 @@ class Gleap {
209209 . then ( function ( ) {
210210 instance . postInit ( ) ;
211211 } )
212- . catch ( function ( err ) { } ) ;
212+ . catch ( function ( err ) { } ) ;
213213 } , 0 ) ;
214214 } ) ;
215215 sessionInstance . startSession ( ) ;
@@ -477,7 +477,7 @@ class Gleap {
477477 /**
478478 * Enable Intercom compatibility mode
479479 */
480- static enableIntercomCompatibilityMode ( ) { }
480+ static enableIntercomCompatibilityMode ( ) { }
481481
482482 /**
483483 * Show or hide the feedback button
@@ -539,13 +539,13 @@ class Gleap {
539539 * Enables the privacy policy.
540540 * @param {boolean } enabled
541541 */
542- static enablePrivacyPolicy ( enabled ) { }
542+ static enablePrivacyPolicy ( enabled ) { }
543543
544544 /**
545545 * Sets the privacy policy url.
546546 * @param {string } privacyPolicyUrl
547547 */
548- static setPrivacyPolicyUrl ( privacyPolicyUrl ) { }
548+ static setPrivacyPolicyUrl ( privacyPolicyUrl ) { }
549549
550550 /**
551551 * Sets the widget info texts.
@@ -833,12 +833,11 @@ class Gleap {
833833 instance . overrideLanguage ,
834834 instance . customLogoUrl ,
835835 instance . poweredByHidden ,
836- function ( ) { } ,
836+ function ( ) { } ,
837837 `${ translateText (
838838 "Hi" ,
839839 instance . overrideLanguage
840- ) } <span id="bb-user-name">${ displayUserName } </span> ${
841- instance . welcomeIcon
840+ ) } <span id="bb-user-name">${ displayUserName } </span> ${ instance . welcomeIcon
842841 } `,
843842 translateText (
844843 instance . widgetInfo . dialogSubtitle ,
@@ -913,7 +912,7 @@ class Gleap {
913912 // Deep copy to prevent changes.
914913 try {
915914 feedbackOptions = JSON . parse ( JSON . stringify ( feedbackOptions ) ) ;
916- } catch ( e ) { }
915+ } catch ( e ) { }
917916
918917 return feedbackOptions ;
919918 }
@@ -970,16 +969,16 @@ class Gleap {
970969
971970 const emailFormItem =
972971 feedbackOptions . collectEmail === true ||
973- feedbackOptions . collectEmail === undefined
972+ feedbackOptions . collectEmail === undefined
974973 ? {
975- title : "Email" ,
976- placeholder : "Your e-mail" ,
977- type : "text" ,
978- inputtype : "email" ,
979- name : "reportedBy" ,
980- required : true ,
981- remember : true ,
982- }
974+ title : "Email" ,
975+ placeholder : "Your e-mail" ,
976+ type : "text" ,
977+ inputtype : "email" ,
978+ name : "reportedBy" ,
979+ required : true ,
980+ remember : true ,
981+ }
983982 : null ;
984983
985984 // Collect email when user needs to enter it.
@@ -1087,114 +1086,8 @@ class Gleap {
10871086 }
10881087 }
10891088
1090- startCrashDetection ( ) {
1091- const self = this ;
1092- window . onerror = function ( msg , url , lineNo , columnNo , error ) {
1093- var stackTrace = "" ;
1094- if ( error !== null && typeof error . stack !== "undefined" ) {
1095- stackTrace = error . stack ;
1096- }
1097- var message = [
1098- "Message: " + msg ,
1099- "URL: " + url ,
1100- "Line: " + lineNo ,
1101- "Column: " + columnNo ,
1102- "Stack: " + stackTrace ,
1103- ] ;
1104- self . addLog ( message , "ERROR" ) ;
1105-
1106- if (
1107- self . enabledCrashDetector &&
1108- ! self . appCrashDetected &&
1109- ! self . currentlySendingBug
1110- ) {
1111- self . appCrashDetected = true ;
1112- if ( self . enabledCrashDetectorSilent ) {
1113- return Gleap . sendSilentReport (
1114- {
1115- errorMessage : msg ,
1116- url : url ,
1117- lineNo : lineNo ,
1118- columnNo : columnNo ,
1119- stackTrace : stackTrace ,
1120- } ,
1121- Gleap . PRIORITY_MEDIUM ,
1122- "CRASH" ,
1123- {
1124- screenshot : true ,
1125- replays : true ,
1126- }
1127- ) ;
1128- } else {
1129- Gleap . startFeedbackFlow ( "crash" ) ;
1130- }
1131- }
1132-
1133- return false ;
1134- } ;
1135- }
1136-
1137- truncateString ( str , num ) {
1138- if ( str . length > num ) {
1139- return str . slice ( 0 , num ) + "..." ;
1140- } else {
1141- return str ;
1142- }
1143- }
1144-
1145- addLog ( args , priority ) {
1146- if ( ! args ) {
1147- return ;
1148- }
1149-
1150- var log = "" ;
1151- for ( var i = 0 ; i < args . length ; i ++ ) {
1152- log += args [ i ] + " " ;
1153- }
1154- this . logArray . push ( {
1155- log : this . truncateString ( log , 1000 ) ,
1156- date : new Date ( ) ,
1157- priority,
1158- } ) ;
1159-
1160- if ( this . logArray . length > this . logMaxLength ) {
1161- this . logArray . shift ( ) ;
1162- }
1163- }
1164-
11651089 static disableConsoleLogOverwrite ( ) {
1166- window . console = this . getInstance ( ) . originalConsoleLog ;
1167- }
1168-
1169- overwriteConsoleLog ( ) {
1170- const self = this ;
1171- window . console = ( function ( origConsole ) {
1172- if ( ! window . console || ! origConsole ) {
1173- origConsole = { } ;
1174- }
1175-
1176- self . originalConsoleLog = origConsole ;
1177-
1178- return {
1179- ...origConsole ,
1180- log : function ( ) {
1181- self . addLog ( arguments , "INFO" ) ;
1182- origConsole . log && origConsole . log . apply ( origConsole , arguments ) ;
1183- } ,
1184- warn : function ( ) {
1185- self . addLog ( arguments , "WARNING" ) ;
1186- origConsole . warn && origConsole . warn . apply ( origConsole , arguments ) ;
1187- } ,
1188- error : function ( ) {
1189- self . addLog ( arguments , "ERROR" ) ;
1190- origConsole . error && origConsole . error . apply ( origConsole , arguments ) ;
1191- } ,
1192- info : function ( v ) {
1193- self . addLog ( arguments , "INFO" ) ;
1194- origConsole . info && origConsole . info . apply ( origConsole , arguments ) ;
1195- } ,
1196- } ;
1197- } ) ( window . console ) ;
1090+ GleapConsoleLogManager . getInstance ( ) . stop ( ) ;
11981091 }
11991092
12001093 resetLoading ( resetProgress ) {
@@ -1377,10 +1270,10 @@ class Gleap {
13771270 reportCleanupOnClose ( ) {
13781271 try {
13791272 Gleap . enableReplays ( this . replaysEnabled ) ;
1380- } catch ( exp ) { }
1273+ } catch ( exp ) { }
13811274 try {
13821275 this . networkIntercepter . setStopped ( false ) ;
1383- } catch ( exp ) { }
1276+ } catch ( exp ) { }
13841277
13851278 this . actionToPerform = undefined ;
13861279
@@ -1422,8 +1315,9 @@ class Gleap {
14221315 }
14231316
14241317 init ( ) {
1425- this . overwriteConsoleLog ( ) ;
1426- this . startCrashDetection ( ) ;
1318+ GleapConsoleLogManager . getInstance ( ) . start ( ) ;
1319+ GleapCrashDetector . getInstance ( ) . start ( ) ;
1320+
14271321 this . registerKeyboardListener ( ) ;
14281322 this . registerEscListener ( ) ;
14291323
@@ -1512,18 +1406,16 @@ class Gleap {
15121406 this . buttonType === Gleap . FEEDBACK_BUTTON_CLASSIC_BOTTOM ||
15131407 this . buttonType === Gleap . FEEDBACK_BUTTON_CLASSIC_LEFT
15141408 ) {
1515- elem . innerHTML = `<div class="bb-feedback-button-classic ${
1516- this . buttonType === Gleap . FEEDBACK_BUTTON_CLASSIC_LEFT
1517- ? "bb-feedback-button-classic--left"
1518- : ""
1519- } ${
1520- this . buttonType === Gleap . FEEDBACK_BUTTON_CLASSIC_BOTTOM
1409+ elem . innerHTML = `<div class="bb-feedback-button-classic ${ this . buttonType === Gleap . FEEDBACK_BUTTON_CLASSIC_LEFT
1410+ ? "bb-feedback-button-classic--left"
1411+ : ""
1412+ } ${ this . buttonType === Gleap . FEEDBACK_BUTTON_CLASSIC_BOTTOM
15211413 ? "bb-feedback-button-classic--bottom"
15221414 : ""
1523- } ">${ translateText (
1524- this . feedbackButtonText ,
1525- this . overrideLanguage
1526- ) } </div>`;
1415+ } ">${ translateText (
1416+ this . feedbackButtonText ,
1417+ this . overrideLanguage
1418+ ) } </div>`;
15271419 } else {
15281420 elem . innerHTML = `<div class="bb-feedback-button-icon">${ buttonIcon } ${ loadIcon (
15291421 "arrowdown" ,
@@ -1570,7 +1462,7 @@ class Gleap {
15701462 // Prevent shoutout from showing again.
15711463 try {
15721464 localStorage . setItem ( "bb-fto" , true ) ;
1573- } catch ( exp ) { }
1465+ } catch ( exp ) { }
15741466
15751467 this . notifyEvent ( "open" ) ;
15761468 }
@@ -1691,7 +1583,7 @@ class Gleap {
16911583 priority : this . severity ,
16921584 customData : this . customData ,
16931585 metaData : this . getMetaData ( ) ,
1694- consoleLog : this . logArray ,
1586+ consoleLog : GleapConsoleLogManager . getInstance ( ) . getLogs ( ) ,
16951587 networkLogs : this . networkIntercepter . getRequests ( ) ,
16961588 customEventLog : StreamedEvent . getInstance ( ) . eventArray ,
16971589 type : this . feedbackType ,
0 commit comments