aboutsummaryrefslogtreecommitdiff
path: root/crash/client.js
diff options
context:
space:
mode:
authorMinteck <nekostarfan@gmail.com>2021-06-05 19:27:48 +0200
committerMinteck <nekostarfan@gmail.com>2021-06-05 19:27:48 +0200
commit8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6 (patch)
tree7096b67b189c0220826123c7d5b121752545d140 /crash/client.js
downloadkartik-client-8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6.tar.gz
kartik-client-8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6.tar.bz2
kartik-client-8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6.zip
Presque sortie du jeu
Diffstat (limited to 'crash/client.js')
-rw-r--r--crash/client.js114
1 files changed, 114 insertions, 0 deletions
diff --git a/crash/client.js b/crash/client.js
new file mode 100644
index 0000000..d5ea355
--- /dev/null
+++ b/crash/client.js
@@ -0,0 +1,114 @@
+if (native) {
+ function crash(error) {
+ try {
+ require('@electron/remote').getCurrentWindow().hide();
+ } catch (e) {}
+ id = new Date().toISOString();
+
+ try {
+ global.pkg = require('./package.json');
+ } catch (e) {
+ console.warn(e);
+ global.pkg = require('../package.json');
+
+ }
+
+ report = "\n";
+ report += "Kartik Crash Report\n\nPlease send this to the developers so they can fix the problem and deploy a patch to all players.\n\nStack Trace:\n"
+ error.stack.split("\n").forEach((line) => {
+ report += " " + line + "\n";
+ })
+ report += "\n\nSystem Information:\n"
+ report += " " + "Kartik"+require('@electron/remote').getCurrentWindow().channel + "(" + pkg.name + ") " +pkg.version + " [" + pkg.serial + "]\n";
+
+ report += " " + require('os').type() + " (" + require('os').version() + ", " + require('os').arch() +") version " + require('os').release() + "\n";
+ cores = require('os').cpus()
+ if (cores.length > 1) {
+ report += " " + cores.length + " processors";
+ } else {
+ report += " " + cores.length + " processor";
+ }
+ report += "\n\nKartik Components:\n";
+ Object.keys(process.versions).forEach((e) => {
+
+ v = process.versions[e];
+ report += " " + e + "@" + v + "\n";
+ })
+
+ require('fs').writeFileSync(require('os').userInfo().homedir + "/.kartik/crashes/" + id + ".txt", report);
+ if (error.message !== "Invalid display" && error.message !== "Out of memory") {
+
+ fetch("https://kartik.hopto.org/telemetry/report/?report=" + btoa(report.replaceAll(require('os').userInfo().username, "<information removed>")))
+
+ .then(() => {
+ if (require('os').platform() === "win32") {
+ require('child_process').execSync("runtime\\kartik-crash.bat");
+ } else if (require('os').platform() === "darwin") {
+ require('child_process').execSync("./runtime/kartik-crash-mac.sh");
+ } else {
+ require('child_process').execSync("./runtime/kartik-crash.sh");
+ }
+ require('@electron/remote').getCurrentWindow().destroy();
+
+ window.close();
+ require('@electron/remote').getCurrentWindow().close();
+ })
+ .catch(() => {
+ if (require('os').platform() === "win32") {
+ require('child_process').execSync("runtime\\kartik-crash.bat");
+ } else if (require('os').platform() === "darwin") {
+
+ require('child_process').execSync("./runtime/kartik-crash-mac.sh");
+ } else {
+ require('child_process').execSync("./runtime/kartik-crash.sh");
+ }
+ require('@electron/remote').getCurrentWindow().destroy();
+ window.close();
+ require('@electron/remote').getCurrentWindow().close();
+ })
+ } else {
+ if (require('os').platform() === "win32") {
+ require('child_process').execSync("runtime\\kartik-crash.bat");
+ } else if (require('os').platform() === "darwin") {
+ require('child_process').execSync("./runtime/kartik-crash-mac.sh");
+ } else {
+ require('child_process').execSync("./runtime/kartik-crash.sh");
+ }
+
+ require('@electron/remote').getCurrentWindow().destroy();
+ window.close();
+ require('@electron/remote').getCurrentWindow().close();
+ }
+ }
+
+ window.onerror = (_a, _b, _c, _d, error) => {
+ if (typeof error != "undefined") {
+ crash(error);
+ } else {
+ error("CrashManager", "An exception was thrown without details about it");
+ crash(new Error("Unknown error"));
+ }
+ }
+
+ process.on('uncaughtException', (error) => {
+ if (typeof error != "undefined") {
+ crash(error);
+ } else {
+ error("CrashManager", "An exception was thrown without details about it");
+ crash(new Error("Unknown error"));
+ }
+ })
+
+ /*setInterval(() => {
+ try {
+ if (document.body.clientWidth >= (screen.width - 50) || document.body.clientHeight >= (screen.height - 50) || require('@electron/remote').getCurrentWindow().pwidth >= (screen.width - 50) || require('@electron/remote').getCurrentWindow().pheight >= (screen.height - 50) || require('@electron/remote').getCurrentWindow().scale < 0.9) {
+
+ if (!location.href.includes("credits.html")) {
+ error("CrashManager", "Invalid display, crashing");
+ crash(new Error("Invalid display"));
+ // TODO: Instead reset the size and restart
+ }
+ }
+ } catch (e) {}
+ }, 2000)*/
+}