Catch global errors and rejected promises and display them in an alert box. (#351)
* Catch errors and rejected promises. * Clean uppull/398/head
parent
10506f9cf5
commit
0185dd639e
16
src/main.ts
16
src/main.ts
|
@ -9,6 +9,22 @@ import BBCodeText from 'phaser3-rex-plugins/plugins/bbcodetext';
|
|||
import TransitionImagePackPlugin from 'phaser3-rex-plugins/templates/transitionimagepack/transitionimagepack-plugin.js';
|
||||
import { LoadingScene } from './loading-scene';
|
||||
|
||||
|
||||
// Catch global errors and display them in an alert so users can report the issue.
|
||||
window.onerror = function (message, source, lineno, colno, error) {
|
||||
console.error(error);
|
||||
let errorString = `Received unhandled error. Open browser console and click OK to see details.\nError: ${message}\nSource: ${source}\nLine: ${lineno}\nColumn: ${colno}\nStack: ${error.stack}`;
|
||||
alert(errorString);
|
||||
// Avoids logging the error a second time.
|
||||
return true;
|
||||
};
|
||||
|
||||
// Catch global promise rejections and display them in an alert so users can report the issue.
|
||||
window.addEventListener('unhandledrejection', (event) => {
|
||||
let errorString = `Received unhandled promise rejection. Open browser console and click OK to see details.\nReason: ${event.reason}`;
|
||||
alert(errorString);
|
||||
});
|
||||
|
||||
const config: Phaser.Types.Core.GameConfig = {
|
||||
type: Phaser.WEBGL,
|
||||
parent: 'app',
|
||||
|
|
|
@ -331,6 +331,8 @@ export class TitlePhase extends Phase {
|
|||
this.scene.sessionPlayTime = 0;
|
||||
this.end();
|
||||
});
|
||||
}).catch(err => {
|
||||
console.error("Failed to load daily run:\n", err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -167,7 +167,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
|
|||
} else
|
||||
this.loadingLabel.setText(i18next.t('menu:noRankings'));
|
||||
});
|
||||
});
|
||||
}).catch(err => { console.error("Failed to load daily rankings:\n", err) });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -65,6 +65,9 @@ export default class TitleUiHandler extends OptionSelectUiHandler {
|
|||
this.playerCountLabel.setText(`${stats.playerCount} ${i18next.t("menu:playersOnline")}`);
|
||||
if (this.splashMessage === battleCountSplashMessage)
|
||||
this.splashMessageText.setText(battleCountSplashMessage.replace('{COUNT}', stats.battleCount.toLocaleString('en-US')));
|
||||
})
|
||||
.catch(err => {
|
||||
console.error("Failed to fetch title stats:\n", err);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue