mirror of
https://github.com/MasterAcnolo/Freedom-Loader.git
synced 2026-11-13 15:09:20 +01:00
feat(bugReport): add service status check and update UI if sendReport server is down
This commit is contained in:
@@ -19,7 +19,7 @@ const config = require("../config");
|
||||
const { validateDownloadPath, getDefaultDownloadPath } = require("./pathValidator");
|
||||
const { userThemesPath } = require("../server/helpers/path.helpers");
|
||||
const { createSystemTray, destroyTray } = require("./tray");
|
||||
const { sendReport } = require("./sendReport");
|
||||
const {sendReport, checkReportService, getReportServiceStatus} = require("./sendReport");
|
||||
const { isUpdateAvailable, downloadUpdate, installUpdate } = require("./autoUpdater");
|
||||
|
||||
/**
|
||||
@@ -210,6 +210,11 @@ function registerIpcHandlers(getMainWindow) {
|
||||
return await sendReport(params);
|
||||
});
|
||||
|
||||
ipcMain.handle("get-report-service-status", async () => {
|
||||
await checkReportService();
|
||||
return getReportServiceStatus();
|
||||
});
|
||||
|
||||
ipcMain.handle("is-update-available", () => {
|
||||
return isUpdateAvailable();
|
||||
});
|
||||
|
||||
@@ -2,6 +2,58 @@ const fs = require("fs");
|
||||
const path = require("path");
|
||||
const {logger, logDir} = require("../server/logger");
|
||||
|
||||
const REPORT_URL = "https://freedom-loader-report.acnolo.fr";
|
||||
const REPORT_SERVICE_TIMEOUT_MS = 5000;
|
||||
let reportServiceStatus = {
|
||||
status: "checking",
|
||||
message: "Checking bug report service..."
|
||||
};
|
||||
let reportServiceCheck = null;
|
||||
|
||||
async function checkReportService() {
|
||||
if (reportServiceCheck) {
|
||||
return reportServiceCheck;
|
||||
}
|
||||
|
||||
reportServiceCheck = (async () => {
|
||||
const controller = new AbortController();
|
||||
const timeout = setTimeout(() => controller.abort(), REPORT_SERVICE_TIMEOUT_MS);
|
||||
|
||||
try {
|
||||
const response = await fetch(REPORT_URL, {
|
||||
method: "GET",
|
||||
signal: controller.signal
|
||||
});
|
||||
|
||||
if (response.status >= 500) {
|
||||
throw new Error(`Server responded with status ${response.status}`);
|
||||
}
|
||||
|
||||
reportServiceStatus = {
|
||||
status: "online",
|
||||
message: "Bug report service is available."
|
||||
};
|
||||
logger.info(`Bug report service is reachable (status ${response.status}).`);
|
||||
} catch (err) {
|
||||
reportServiceStatus = {
|
||||
status: "offline",
|
||||
message: "Bug report service is unavailable. Reports may fail to send."
|
||||
};
|
||||
logger.warn(`Bug report service is unreachable: ${err.message}`);
|
||||
} finally {
|
||||
clearTimeout(timeout);
|
||||
}
|
||||
|
||||
return reportServiceStatus;
|
||||
})();
|
||||
|
||||
return reportServiceCheck;
|
||||
}
|
||||
|
||||
function getReportServiceStatus() {
|
||||
return reportServiceStatus;
|
||||
}
|
||||
|
||||
async function sendReport(params) {
|
||||
try {
|
||||
const {title, description, includeLogs} = params;
|
||||
@@ -35,13 +87,7 @@ async function sendReport(params) {
|
||||
}
|
||||
}
|
||||
|
||||
const reportUrl = process.env.BUG_REPORT_URL;
|
||||
|
||||
if (!reportUrl) {
|
||||
throw new Error("Bug report service is not configured. Missing BUG_REPORT_URL on backend.");
|
||||
}
|
||||
|
||||
const response = await fetch(reportUrl, {
|
||||
const response = await fetch(REPORT_URL, {
|
||||
method: "POST",
|
||||
body: formData
|
||||
});
|
||||
@@ -59,4 +105,4 @@ async function sendReport(params) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {sendReport};
|
||||
module.exports = {sendReport, checkReportService, getReportServiceStatus};
|
||||
Reference in New Issue
Block a user