mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-05 12:22:44 +00:00
Merge branch 'master' into issue_4201
This commit is contained in:
@@ -5,33 +5,45 @@ 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)=>{
|
||||
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 {
|
||||
alert('This file is invalid, please, enter a valid file');
|
||||
}
|
||||
};
|
||||
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();
|
||||
|
||||
alert(`This file is invalid: ${!type ? "Missing file extension" :`.${type} files are not supported`}. Only .txt files exported from the Homebrewery are allowed.`);
|
||||
|
||||
|
||||
console.log(file);
|
||||
};
|
||||
reader.readAsText(file);
|
||||
};
|
||||
|
||||
|
||||
return (
|
||||
<Nav.dropdown>
|
||||
<Nav.item
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
&::before {
|
||||
margin-right : 5px;
|
||||
font-family : 'Font Awesome 6 Free';
|
||||
font-weight : 900;
|
||||
content : '\f00c';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ const Account = require('../../navbar/account.navitem.jsx');
|
||||
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
|
||||
const VaultNavItem = require('../../navbar/vault.navitem.jsx');
|
||||
|
||||
const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
||||
const SplitPane = require('client/components/splitPane/splitPane.jsx');
|
||||
const Editor = require('../../editor/editor.jsx');
|
||||
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ const AccountNavItem = require('../../navbar/account.navitem.jsx');
|
||||
const ErrorNavItem = require('../../navbar/error-navitem.jsx');
|
||||
const { fetchThemeBundle } = require('../../../../shared/helpers.js');
|
||||
|
||||
const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
||||
const SplitPane = require('client/components/splitPane/splitPane.jsx');
|
||||
const Editor = require('../../editor/editor.jsx');
|
||||
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ const ErrorNavItem = require('../../navbar/error-navitem.jsx');
|
||||
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
|
||||
const HelpNavItem = require('../../navbar/help.navitem.jsx');
|
||||
|
||||
const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
||||
const SplitPane = require('client/components/splitPane/splitPane.jsx');
|
||||
const Editor = require('../../editor/editor.jsx');
|
||||
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ const Account = require('../../navbar/account.navitem.jsx');
|
||||
const NewBrew = require('../../navbar/newbrew.navitem.jsx');
|
||||
const HelpNavItem = require('../../navbar/help.navitem.jsx');
|
||||
const BrewItem = require('../basePages/listPage/brewItem/brewItem.jsx');
|
||||
const SplitPane = require('../../../../shared/naturalcrit/splitPane/splitPane.jsx');
|
||||
const SplitPane = require('client/components/splitPane/splitPane.jsx');
|
||||
const ErrorIndex = require('../errorPage/errors/errorIndex.js');
|
||||
|
||||
import request from '../../utils/request-middleware.js';
|
||||
|
||||
74
client/homebrew/utils/request-middleware.spec.js
Normal file
74
client/homebrew/utils/request-middleware.spec.js
Normal file
@@ -0,0 +1,74 @@
|
||||
import requestMiddleware from './request-middleware';
|
||||
|
||||
jest.mock('superagent');
|
||||
import request from 'superagent';
|
||||
|
||||
describe('request-middleware', ()=>{
|
||||
let version;
|
||||
|
||||
let setFn;
|
||||
let testFn;
|
||||
|
||||
beforeEach(()=>{
|
||||
jest.resetAllMocks();
|
||||
version = global.version;
|
||||
|
||||
global.version = '999';
|
||||
|
||||
setFn = jest.fn();
|
||||
testFn = jest.fn(()=>{ return { set: setFn }; });
|
||||
});
|
||||
|
||||
afterEach(()=>{
|
||||
global.version = version;
|
||||
});
|
||||
|
||||
it('should add header to get', ()=>{
|
||||
// Ensure tests functions have been reset
|
||||
expect(testFn).not.toHaveBeenCalled();
|
||||
expect(setFn).not.toHaveBeenCalled();
|
||||
|
||||
request.get = testFn;
|
||||
|
||||
requestMiddleware.get('path');
|
||||
|
||||
expect(testFn).toHaveBeenCalledWith('path');
|
||||
expect(setFn).toHaveBeenCalledWith('Homebrewery-Version', '999');
|
||||
});
|
||||
|
||||
it('should add header to put', ()=>{
|
||||
expect(testFn).not.toHaveBeenCalled();
|
||||
expect(setFn).not.toHaveBeenCalled();
|
||||
|
||||
request.put = testFn;
|
||||
|
||||
requestMiddleware.put('path');
|
||||
|
||||
expect(testFn).toHaveBeenCalledWith('path');
|
||||
expect(setFn).toHaveBeenCalledWith('Homebrewery-Version', '999');
|
||||
});
|
||||
|
||||
it('should add header to post', ()=>{
|
||||
expect(testFn).not.toHaveBeenCalled();
|
||||
expect(setFn).not.toHaveBeenCalled();
|
||||
|
||||
request.post = testFn;
|
||||
|
||||
requestMiddleware.post('path');
|
||||
|
||||
expect(testFn).toHaveBeenCalledWith('path');
|
||||
expect(setFn).toHaveBeenCalledWith('Homebrewery-Version', '999');
|
||||
});
|
||||
|
||||
it('should add header to delete', ()=>{
|
||||
expect(testFn).not.toHaveBeenCalled();
|
||||
expect(setFn).not.toHaveBeenCalled();
|
||||
|
||||
request.delete = testFn;
|
||||
|
||||
requestMiddleware.delete('path');
|
||||
|
||||
expect(testFn).toHaveBeenCalledWith('path');
|
||||
expect(setFn).toHaveBeenCalledWith('Homebrewery-Version', '999');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user