From de98b7c77e488cac54f408c1135803f548068f01 Mon Sep 17 00:00:00 2001 From: ISO53 <102249575+ISO53@users.noreply.github.com> Date: Thu, 14 Mar 2024 23:29:52 +0300 Subject: [PATCH] alert messages now auto adjusts message duration --- main.js | 44 ++++++++++++++++++++++---------------------- renderer.js | 29 ++++++++++++++++------------- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/main.js b/main.js index a0a430d..4430511 100644 --- a/main.js +++ b/main.js @@ -105,7 +105,7 @@ function openFileSystem(arg) { } }) .catch((error) => { - createAlertMessage("warning", "Error reading directories: " + error.message, 7500); + createAlertMessage("warning", "Error reading directories: " + error.message); }); break; case "txt": @@ -124,7 +124,7 @@ function openFileSystem(arg) { } }) .catch((error) => { - createAlertMessage("warning", "Error reading txt: " + error.message, 7500); + createAlertMessage("warning", "Error reading txt: " + error.message); }); break; case "tor": @@ -143,7 +143,7 @@ function openFileSystem(arg) { } }) .catch((error) => { - createAlertMessage("warning", "Error reading media files: " + error.message, 7500); + createAlertMessage("warning", "Error reading media files: " + error.message); }); break; default: @@ -225,7 +225,7 @@ function readAndParseTxt(filePath) { }); rl.on("error", (err) => { - createAlertMessage("warning", "Error reading txt: " + err.message, 7500); + createAlertMessage("warning", "Error reading txt: " + err.message); reject(err); }); }); @@ -242,7 +242,7 @@ async function writeFoldersToJson(movieNames) { const response = await fetch(apiUrl); if (!response.ok) { - createAlertMessage("warning", `Error fetching details for ${movieName}: ${response.statusText}`, 7500); + createAlertMessage("warning", `Error fetching details for ${movieName}: ${response.statusText}`); throw new Error(`Error fetching details for ${movieName}: ${response.statusText}`); } @@ -308,7 +308,7 @@ async function writeFoldersToJson(movieNames) { }); } catch (error) { console.error("Error writing to JSON file:", error.message); - createAlertMessage("warning", "Error writing to JSON file:", error.message, 7500); + createAlertMessage("warning", "Error writing to JSON file:", error.message); } } @@ -324,7 +324,7 @@ async function readOmdbApiKeyFromFile() { fs.readFile(filePath, "utf-8", (err, jsonStr) => { if (err) { console.log("Something went wrong trying to read JSON file."); - createAlertMessage("warning", "Error while reading file: " + err.message, 7500); + createAlertMessage("warning", "Error while reading file: " + err.message); } let jsonContent; @@ -332,7 +332,7 @@ async function readOmdbApiKeyFromFile() { jsonContent = JSON.parse(jsonStr); } catch (error) { console.error("There was an error parsing json file."); - createAlertMessage("warning", "Error while parsing json: " + error.message, 7500); + createAlertMessage("warning", "Error while parsing json: " + error.message); return; } @@ -340,7 +340,7 @@ async function readOmdbApiKeyFromFile() { KEY = jsonContent.key; } else { console.error("Invalid JSON file format or missing key."); - createAlertMessage("warning", "Invalid JSON file format or missing key.", 7500); + createAlertMessage("warning", "Invalid JSON file format or missing key."); } }); } @@ -375,7 +375,7 @@ async function downloadImage(url, fileName) { console.log(`Image downloaded and saved.`); } catch (error) { console.error("Error downloading image:", error.message); - createAlertMessage("warning", "Error downloading image: " + error.message, 7500); + createAlertMessage("warning", "Error downloading image: " + error.message); } } @@ -385,7 +385,7 @@ function movieHandler(arg) { fs.readFile(path.join(USER_DATA_PATH, "res", "db.json"), "utf-8", (err, data) => { if (err) { console.error("Error reading JSON file:", err.message); - createAlertMessage("warning", "Error while reading movie db: " + err.message, 7500); + createAlertMessage("warning", "Error while reading movie db: " + err.message); return; } @@ -395,7 +395,7 @@ function movieHandler(arg) { jsonData = JSON.parse(data); } catch (error) { console.error("There was an error parsing json file."); - createAlertMessage("warning", "Error while parsing json: " + err.message, 7500); + createAlertMessage("warning", "Error while parsing json: " + err.message); return; } @@ -413,12 +413,12 @@ function movieHandler(arg) { // Write modified json to file fs.writeFileSync(path.join(USER_DATA_PATH, "res", "db.json"), JSON.stringify(jsonData, null, 2)); console.log("Update successful. JSON file has been modified."); - createAlertMessage("success", "Movie has been removed.", 5000); + createAlertMessage("success", "Movie has been removed."); } else if (opt === "add") { fetch(`https://www.omdbapi.com/?i=${imdbID}&apikey=${KEY}`) .then((response) => { if (!response.ok) { - createAlertMessage("warning", `HTTP error! Status: ${response.status}`, 7500); + createAlertMessage("warning", `HTTP error! Status: ${response.status}`); throw new Error(`HTTP error! Status: ${response.status}`); } return response.json(); @@ -434,11 +434,11 @@ function movieHandler(arg) { // Write modified json to file fs.writeFileSync(path.join(USER_DATA_PATH, "res", "db.json"), JSON.stringify(jsonData, null, 2)); console.log("Update successful. JSON file has been modified."); - createAlertMessage("success", "Movie has been added.", 5000); + createAlertMessage("success", "Movie has been added."); }) .catch((error) => { console.error("Error fetching movie details:", error); - createAlertMessage("warning", "Error fetching movie details: " + error.message, 7500); + createAlertMessage("warning", "Error fetching movie details: " + error.message); }); } else if (opt === "removeWithFileName") { // Here imdbID variable is actually filename @@ -455,11 +455,11 @@ function movieHandler(arg) { // Write modified json to file fs.writeFileSync(path.join(USER_DATA_PATH, "res", "db.json"), JSON.stringify(jsonData, null, 2)); console.log("Update successful. JSON file has been modified."); - createAlertMessage("success", "Movie has been removed.", 5000); + createAlertMessage("success", "Movie has been removed."); } } catch (parseError) { console.error("Error parsing JSON:", parseError.message); - createAlertMessage("warning", "Error while parsing json: " + parseError.message, 7500); + createAlertMessage("warning", "Error while parsing json: " + parseError.message); } }); } @@ -480,9 +480,9 @@ function checkUpdates() { } if (releaseData.tag_name !== app.getVersion()) { - console.log("VERSION", app.getVersion()); let releaseDataFormattedbody = marked.parse(releaseData.body); sendMessageToRenderer("update", releaseDataFormattedbody); + createAlertMessage("info", "There is a new update available!"); } else { sendMessageToRenderer("update", "no"); } @@ -548,13 +548,13 @@ function readFileHandler(arg) { fs.readFile(filePath, "utf-8", (err, jsonStr) => { if (err) { console.error("Error in readFileHandler:", err.message); - createAlertMessage("warning", "Error while reading file: " + err.message, 7500); + createAlertMessage("warning", "Error while reading file: " + err.message); } else { sendMessageToRenderer("read-file", JSON.stringify({type: responseType, data: jsonStr})); } }); } -function createAlertMessage(type, message, duration) { - sendMessageToRenderer("alert-message", JSON.stringify({type, message, duration})); +function createAlertMessage(type, message) { + sendMessageToRenderer("alert-message", JSON.stringify({type, message})); } diff --git a/renderer.js b/renderer.js index 412e5d5..3e73823 100644 --- a/renderer.js +++ b/renderer.js @@ -223,7 +223,7 @@ function movieDbStatusHandler(status) { statusElm.innerHTML = "We're nearing completion. Please hold for the final steps."; } else if (status.startsWith("d")) { // Done - createAlertMessage("success", "Movie database has been created successfully.", 2500); + createAlertMessage("success", "Movie database has been created successfully."); statusElm.innerHTML = "The database has been successfully created. You may now close this window."; progressElm.innerHTML = ""; readMoviesFromFile(); @@ -453,8 +453,7 @@ function rightMovieSearchButtonListener() { if (!response.ok) { createAlertMessage( "warning", - "HTTP error during fetching movie details. Could be due to internet connection issues or OMDB key problem.", - 7500 + "HTTP error during fetching movie details. Could be due to internet connection issues or OMDB key problem." ); throw new Error(`HTTP error! Status: ${response.status}`); } @@ -469,8 +468,7 @@ function rightMovieSearchButtonListener() { console.error("Fetch error:", error); createAlertMessage( "warning", - "HTTP error during fetching movie details. Could be due to internet connection issues or OMDB key problem.", - 7500 + "HTTP error during fetching movie details. Could be due to internet connection issues or OMDB key problem." ); }); }); @@ -516,7 +514,7 @@ function searchMovie(movieData, searchTerm) { }); } catch (error) { console.error("Error occured during movie search:", error); - createAlertMessage("info", "Error occured during movie search.", 5000); + createAlertMessage("info", "Error occured during movie search."); return false; } } @@ -575,10 +573,10 @@ function readFileHandler(arg) { listFiltersOnGUI(); setMovies(movies); listMoviesOnGUI(); - createAlertMessage("success", "Movies imported successfully.", 2500); + createAlertMessage("success", "Movies imported successfully."); } catch (error) { console.error("There was an error parsing the JSON file that contains movie information.", error.message); - createAlertMessage("info", "Error creating movie database. Movies probably hasn't been fetched yet.", 5000); + createAlertMessage("info", "Error creating movie database. Movies probably hasn't been fetched yet."); listMoviesOnGUI(); } break; @@ -588,14 +586,14 @@ function readFileHandler(arg) { if (jsonContent && jsonContent.key) { KEY = jsonContent.key; - createAlertMessage("success", "OMDB API key setted successfully.", 2500); + createAlertMessage("success", "OMDB API key setted successfully."); } else { console.error("Invalid JSON file format or missing key."); - createAlertMessage("info", "Error getting OMDB key. The key probably hasn't been setted yet.", 5000); + createAlertMessage("info", "Error getting OMDB key. The key probably hasn't been setted yet."); } } catch (error) { console.error("There was an error parsing the JSON file that contains api key.", error.message); - createAlertMessage("info", "Error getting OMDB key. The key probably hasn't been setted yet.", 5000); + createAlertMessage("info", "Error getting OMDB key. The key probably hasn't been setted yet."); return; } break; @@ -604,12 +602,17 @@ function readFileHandler(arg) { } } -function createAlertMessage(type, message, duration) { +function createAlertMessage(type, message) { if (type !== "warning" && type !== "success" && type !== "info") { console.error("Alert message type is not valid! Given -> ", type); return; } + const averageWordLength = 4.7; + const averageWPMS = 0.3; + const extraTime = 5000; + const duration = (message.length / 4.7) * averageWPMS + extraTime; + // Main div for adding alert messages const mainMessagesDiv = document.getElementById("alert_messages"); @@ -657,7 +660,7 @@ function createAlertMessage(type, message, duration) { function alertMessageHandler(arg) { const jsonArg = JSON.parse(arg); - createAlertMessage(jsonArg.type, jsonArg.message, jsonArg.duration); + createAlertMessage(jsonArg.type, jsonArg.message); } function generateCharts() {