0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-15 17:02:38 +00:00

alert if wrong file, redirect if good

This commit is contained in:
Víctor Losada Hernández
2024-02-09 10:22:55 +01:00
parent 32b5bebbc4
commit 705d170b6e

View File

@@ -1,27 +1,40 @@
const React = require('react'); const React = require('react');
const { useState, useRef } = React;
const _ = require('lodash'); const _ = require('lodash');
const Nav = require('naturalcrit/nav/nav.jsx'); const Nav = require('naturalcrit/nav/nav.jsx');
const yaml = require('js-yaml'); const yaml = require('js-yaml');
const { useRef } = React;
const BREWKEY = 'homebrewery-new'; const BREWKEY = 'homebrewery-new';
const STYLEKEY = 'homebrewery-new-style'; const STYLEKEY = 'homebrewery-new-style';
const METAKEY = 'homebrewery-new-meta'; const METAKEY = 'homebrewery-new-meta';
const splitTextStyleAndMetadata = (brew)=>{ const NewBrew = () => {
brew.text = brew.text.replaceAll('\r\n', '\n'); const inputRef = useRef(null);
if(brew.text.startsWith('```metadata')) {
const index = brew.text.indexOf('```\n\n'); const [brew, setBrew] = useState({
const metadataSection = brew.text.slice(12, index - 1); text: '',
style: ''
});
const splitTextStyleAndMetadata = (brewContent) => {
let updatedBrew = { ...brewContent };
updatedBrew.text = updatedBrew.text.replaceAll('\r\n', '\n');
if (updatedBrew.text.startsWith('```metadata')) {
const index = updatedBrew.text.indexOf('```\n\n');
const metadataSection = updatedBrew.text.slice(12, index - 1);
const metadata = yaml.load(metadataSection); const metadata = yaml.load(metadataSection);
Object.assign(brew, _.pick(metadata, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang'])); updatedBrew = {
brew.text = brew.text.slice(index + 5); ...updatedBrew,
..._.pick(metadata, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang'])
};
updatedBrew.text = updatedBrew.text.slice(index + 5);
} }
if(brew.text.startsWith('```css')) { if (updatedBrew.text.startsWith('```css')) {
const index = brew.text.indexOf('```\n\n'); const index = updatedBrew.text.indexOf('```\n\n');
brew.style = brew.text.slice(7, index - 1); updatedBrew.style = updatedBrew.text.slice(7, index - 1);
brew.text = brew.text.slice(index + 5); updatedBrew.text = updatedBrew.text.slice(index + 5);
} }
return updatedBrew;
}; };
@@ -31,36 +44,29 @@ const handleFileChange = (e) => {
const reader = new FileReader(); const reader = new FileReader();
reader.onload = (e) => { reader.onload = (e) => {
const fileContent = e.target.result; const fileContent = e.target.result;
const newBrew = {
const brew = {
text: fileContent, text: fileContent,
style: '' style: ''
} };
splitTextStyleAndMetadata(brew); if(fileContent.startsWith('```metadata')) {
console.log(brew); const updatedBrew = splitTextStyleAndMetadata(newBrew);
localStorage.setItem(BREWKEY, brew.text); console.log(updatedBrew);
localStorage.setItem(STYLEKEY, brew.style); setBrew(updatedBrew);
localStorage.setItem(METAKEY, JSON.stringify({ localStorage.setItem(BREWKEY, updatedBrew.text);
'title': brew.title, localStorage.setItem(STYLEKEY, updatedBrew.style);
'description': brew.description, localStorage.setItem(METAKEY, JSON.stringify(_.pick(updatedBrew, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang'])));
'tags': brew.tags,
'systems': brew.systems,
'renderer': brew.renderer,
'theme': brew.theme,
'lang': brew.lang
}));
//window.location.href = '/new'; window.location.href = '/new';
} else {
alert('This file is invalid, please, enter a valid file');
}
}; };
reader.readAsText(file); reader.readAsText(file);
} }
}; };
return (
module.exports = function(props){ <Nav.dropdown>
const inputRef = useRef(null);
return <Nav.dropdown>
<Nav.item <Nav.item
className='new' className='new'
color='purple' color='purple'
@@ -82,17 +88,8 @@ module.exports = function(props){
<input className='newFromLocal' type="file" ref={inputRef} onChange={handleFileChange} style={{ display: 'none' }} /> <input className='newFromLocal' type="file" ref={inputRef} onChange={handleFileChange} style={{ display: 'none' }} />
New From Local File New From Local File
</Nav.item> </Nav.item>
</Nav.dropdown>
</Nav.dropdown>; );
}; };
/* module.exports = NewBrew;
<Nav.item
href={'/new/'+encodeURIComponent(brewID)}
newTab={true}
color='purple'
icon='fas fa-plus-square'>
new cloned
</Nav.item>
*/