From cca9ebefdb32d175b39e34e4cb2fa94b3df820d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Wed, 20 Aug 2025 23:23:13 +0200 Subject: [PATCH 1/2] better error handling for file import --- client/homebrew/navbar/newbrew.navitem.jsx | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/client/homebrew/navbar/newbrew.navitem.jsx b/client/homebrew/navbar/newbrew.navitem.jsx index 30d53c675..23b7c9e5e 100644 --- a/client/homebrew/navbar/newbrew.navitem.jsx +++ b/client/homebrew/navbar/newbrew.navitem.jsx @@ -5,7 +5,7 @@ const { splitTextStyleAndMetadata } = require('../../../shared/helpers.js'); // const BREWKEY = 'homebrewery-new'; const STYLEKEY = 'homebrewery-new-style'; -const METAKEY = 'homebrewery-new-meta'; +const METAKEY = 'homebrewery-new-meta'; const NewBrew = ()=>{ const handleFileChange = (e)=>{ @@ -22,10 +22,26 @@ const NewBrew = ()=>{ splitTextStyleAndMetadata(newBrew); // Modify newBrew directly localStorage.setItem(BREWKEY, newBrew.text); localStorage.setItem(STYLEKEY, newBrew.style); - localStorage.setItem(METAKEY, JSON.stringify(_.pick(newBrew, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang']))); + localStorage.setItem( + METAKEY, + JSON.stringify( + _.pick(newBrew, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang']) + ) + ); window.location.href = '/new'; } else { - alert('This file is invalid, please, enter a valid file'); + const type = file.name.split('.').pop().toLowercase(); + if(type === 'txt') { + alert( + `This file type is correct, but it is not from the homebrewery or has been tampered with, + please try with a correct file or report this as an issue if you think it is a mistake.` + ); + } else if(!type) { + alert('This file is invalid, please, enter a valid file'); + console.log(file); + } else { + alert(`This is a .${type} file, only '.txt' files are allowed`); + } } }; reader.readAsText(file); From 320f1e120f638e242b30adfb67b314a402c05244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Thu, 21 Aug 2025 12:23:41 +0200 Subject: [PATCH 2/2] reordering --- client/homebrew/navbar/newbrew.navitem.jsx | 73 +++++++++++----------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/client/homebrew/navbar/newbrew.navitem.jsx b/client/homebrew/navbar/newbrew.navitem.jsx index 23b7c9e5e..c20ae6b6c 100644 --- a/client/homebrew/navbar/newbrew.navitem.jsx +++ b/client/homebrew/navbar/newbrew.navitem.jsx @@ -10,44 +10,45 @@ const METAKEY = 'homebrewery-new-meta'; const NewBrew = ()=>{ const handleFileChange = (e)=>{ const file = e.target.files[0]; - if(file) { - const reader = new FileReader(); - reader.onload = (e)=>{ - const fileContent = e.target.result; - const newBrew = { - text : fileContent, - style : '' - }; - if(fileContent.startsWith('```metadata')) { - splitTextStyleAndMetadata(newBrew); // Modify newBrew directly - localStorage.setItem(BREWKEY, newBrew.text); - localStorage.setItem(STYLEKEY, newBrew.style); - localStorage.setItem( - METAKEY, - JSON.stringify( - _.pick(newBrew, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang']) - ) - ); - window.location.href = '/new'; - } else { - const type = file.name.split('.').pop().toLowercase(); - if(type === 'txt') { - alert( - `This file type is correct, but it is not from the homebrewery or has been tampered with, - please try with a correct file or report this as an issue if you think it is a mistake.` - ); - } else if(!type) { - alert('This file is invalid, please, enter a valid file'); - console.log(file); - } else { - alert(`This is a .${type} file, only '.txt' files are allowed`); - } - } - }; - reader.readAsText(file); - } + if(!file) return; + + const currentNew = localStorage.getItem(BREWKEY); + if(currentNew && !confirm( + `You have some text in the new brew space, if you load a file that text will be lost, are you sure you want to load the file?` + )) return; + + const reader = new FileReader(); + reader.onload = (e)=>{ + const fileContent = e.target.result; + const newBrew = { text: fileContent, style: '' }; + + if(fileContent.startsWith('```metadata')) { + splitTextStyleAndMetadata(newBrew); + localStorage.setItem(BREWKEY, newBrew.text); + localStorage.setItem(STYLEKEY, newBrew.style); + localStorage.setItem(METAKEY, JSON.stringify( + _.pick(newBrew, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang']) + )); + window.location.href = '/new'; + return; + } + + const type = file.name.split('.').pop().toLowerCase(); + if(type === 'txt') { + alert( + `This file type is correct, but it is not from the homebrewery or has been tampered with, please try with a correct file or report this as an issue if you think it is a mistake.` + ); + } else if(!type) { + alert('This file is invalid, please, enter a valid file'); + console.log(file); + } else { + alert(`This is a .${type} file, only .txt files are allowed`); + } + }; + reader.readAsText(file); }; + return (