Catch global errors and rejected promises and display them in an alert box. (#351)

* Catch errors and rejected promises.

* Clean up
This commit is contained in:
James Lin authored and GitHub committed 2024-05-02 08:44:10 -04:00
1 parent 10506f9cf5
commit 0185dd639e
4 files changed
+22 -1

No files matched your search

+16
View File
@@ -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',
+2
View File
@@ -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);
});
});
}
+1 -1
View File
@@ -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) });
}
}
+3
View File
@@ -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);
});
}