mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-08 09:42:43 +00:00
Merge pull request #4404 from naturalcrit/MakeFetchThemeHelperWorkWithFunctional
Changes fetchThemeBundle helper to not need "this" parameter
This commit is contained in:
@@ -39,7 +39,7 @@ const BrewPage = (props)=>{
|
|||||||
index : 0,
|
index : 0,
|
||||||
...props
|
...props
|
||||||
};
|
};
|
||||||
const pageRef = useRef(null);
|
const pageRef = useRef(null);
|
||||||
const cleanText = safeHTML(props.contents);
|
const cleanText = safeHTML(props.contents);
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ const EditPage = createClass({
|
|||||||
htmlErrors : Markdown.validate(prevState.brew.text)
|
htmlErrors : Markdown.validate(prevState.brew.text)
|
||||||
}));
|
}));
|
||||||
|
|
||||||
fetchThemeBundle(this, this.props.brew.renderer, this.props.brew.theme);
|
fetchThemeBundle((err)=>{this.setState({ error: err })}, (theme)=>{this.setState({ themeBundle: theme })}, this.props.brew.renderer, this.props.brew.theme);
|
||||||
|
|
||||||
document.addEventListener('keydown', this.handleControlKeys);
|
document.addEventListener('keydown', this.handleControlKeys);
|
||||||
},
|
},
|
||||||
@@ -173,7 +173,7 @@ const EditPage = createClass({
|
|||||||
|
|
||||||
handleMetaChange : function(metadata, field=undefined){
|
handleMetaChange : function(metadata, field=undefined){
|
||||||
if(field == 'theme' || field == 'renderer') // Fetch theme bundle only if theme or renderer was changed
|
if(field == 'theme' || field == 'renderer') // Fetch theme bundle only if theme or renderer was changed
|
||||||
fetchThemeBundle(this, metadata.renderer, metadata.theme);
|
fetchThemeBundle((err)=>{this.setState({ error: err })}, (theme)=>{this.setState({ themeBundle: theme })}, metadata.renderer, metadata.theme);
|
||||||
|
|
||||||
this.setState((prevState)=>({
|
this.setState((prevState)=>({
|
||||||
brew : {
|
brew : {
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ const HomePage = createClass({
|
|||||||
editor : React.createRef(null),
|
editor : React.createRef(null),
|
||||||
|
|
||||||
componentDidMount : function() {
|
componentDidMount : function() {
|
||||||
fetchThemeBundle(this, this.props.brew.renderer, this.props.brew.theme);
|
fetchThemeBundle((err)=>{this.setState({ error: err })}, (theme)=>{this.setState({ themeBundle: theme })}, this.props.brew.renderer, this.props.brew.theme);
|
||||||
},
|
},
|
||||||
|
|
||||||
handleSave : function(){
|
handleSave : function(){
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ const NewPage = createClass({
|
|||||||
saveGoogle : (saveStorage == 'GOOGLE-DRIVE' && this.state.saveGoogle)
|
saveGoogle : (saveStorage == 'GOOGLE-DRIVE' && this.state.saveGoogle)
|
||||||
});
|
});
|
||||||
|
|
||||||
fetchThemeBundle(this, this.props.brew.renderer, this.props.brew.theme);
|
fetchThemeBundle((err)=>{this.setState({ error: err })}, (theme)=>{this.setState({ themeBundle: theme })}, this.props.brew.renderer, this.props.brew.theme);
|
||||||
|
|
||||||
localStorage.setItem(BREWKEY, brew.text);
|
localStorage.setItem(BREWKEY, brew.text);
|
||||||
if(brew.style)
|
if(brew.style)
|
||||||
@@ -154,7 +154,7 @@ const NewPage = createClass({
|
|||||||
|
|
||||||
handleMetaChange : function(metadata, field=undefined){
|
handleMetaChange : function(metadata, field=undefined){
|
||||||
if(field == 'theme' || field == 'renderer') // Fetch theme bundle only if theme or renderer was changed
|
if(field == 'theme' || field == 'renderer') // Fetch theme bundle only if theme or renderer was changed
|
||||||
fetchThemeBundle(this, metadata.renderer, metadata.theme);
|
fetchThemeBundle((err)=>{this.setState({ error: err })}, (theme)=>{this.setState({ themeBundle: theme })}, metadata.renderer, metadata.theme);
|
||||||
|
|
||||||
this.setState((prevState)=>({
|
this.setState((prevState)=>({
|
||||||
brew : { ...prevState.brew, ...metadata },
|
brew : { ...prevState.brew, ...metadata },
|
||||||
|
|||||||
@@ -17,15 +17,11 @@ const { printCurrentBrew, fetchThemeBundle } = require('../../../../shared/helpe
|
|||||||
const SharePage = (props)=>{
|
const SharePage = (props)=>{
|
||||||
const { brew = DEFAULT_BREW_LOAD, disableMeta = false } = props;
|
const { brew = DEFAULT_BREW_LOAD, disableMeta = false } = props;
|
||||||
|
|
||||||
const [state, setState] = useState({
|
const [themeBundle, setThemeBundle] = useState({});
|
||||||
themeBundle : {},
|
const [currentBrewRendererPageNum, setCurrentBrewRendererPageNum] = useState(1);
|
||||||
currentBrewRendererPageNum : 1,
|
|
||||||
});
|
|
||||||
|
|
||||||
const handleBrewRendererPageChange = useCallback((pageNumber)=>{
|
const handleBrewRendererPageChange = useCallback((pageNumber)=>{
|
||||||
setState((prevState)=>({
|
setCurrentBrewRendererPageNum(pageNumber);
|
||||||
currentBrewRendererPageNum : pageNumber,
|
|
||||||
...prevState }));
|
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handleControlKeys = (e)=>{
|
const handleControlKeys = (e)=>{
|
||||||
@@ -40,11 +36,7 @@ const SharePage = (props)=>{
|
|||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
document.addEventListener('keydown', handleControlKeys);
|
document.addEventListener('keydown', handleControlKeys);
|
||||||
fetchThemeBundle(
|
fetchThemeBundle(undefined, setThemeBundle, brew.renderer, brew.theme);
|
||||||
{ setState },
|
|
||||||
brew.renderer,
|
|
||||||
brew.theme
|
|
||||||
);
|
|
||||||
|
|
||||||
return ()=>{
|
return ()=>{
|
||||||
document.removeEventListener('keydown', handleControlKeys);
|
document.removeEventListener('keydown', handleControlKeys);
|
||||||
@@ -114,9 +106,9 @@ const SharePage = (props)=>{
|
|||||||
lang={brew.lang}
|
lang={brew.lang}
|
||||||
renderer={brew.renderer}
|
renderer={brew.renderer}
|
||||||
theme={brew.theme}
|
theme={brew.theme}
|
||||||
themeBundle={state.themeBundle}
|
themeBundle={themeBundle}
|
||||||
onPageChange={handleBrewRendererPageChange}
|
onPageChange={handleBrewRendererPageChange}
|
||||||
currentBrewRendererPageNum={state.currentBrewRendererPageNum}
|
currentBrewRendererPageNum={currentBrewRendererPageNum}
|
||||||
allowPrint={true}
|
allowPrint={true}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -116,27 +116,21 @@ const printCurrentBrew = ()=>{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchThemeBundle = async (obj, renderer, theme)=>{
|
const fetchThemeBundle = async (setError, setThemeBundle, renderer, theme)=>{
|
||||||
if(!renderer || !theme) return;
|
if(!renderer || !theme) return;
|
||||||
const res = await request
|
const res = await request
|
||||||
.get(`/api/theme/${renderer}/${theme}`)
|
.get(`/api/theme/${renderer}/${theme}`)
|
||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
obj.setState({ error: err });
|
setError(err)
|
||||||
});
|
});
|
||||||
if(!res) {
|
if(!res) {
|
||||||
obj.setState((prevState)=>({
|
setThemeBundle({});
|
||||||
...prevState,
|
|
||||||
themeBundle : {}
|
|
||||||
}));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const themeBundle = res.body;
|
const themeBundle = res.body;
|
||||||
themeBundle.joinedStyles = themeBundle.styles.map((style)=>`<style>${style}</style>`).join('\n\n');
|
themeBundle.joinedStyles = themeBundle.styles.map((style)=>`<style>${style}</style>`).join('\n\n');
|
||||||
obj.setState((prevState)=>({
|
setThemeBundle(themeBundle);
|
||||||
...prevState,
|
setError(null);
|
||||||
themeBundle : themeBundle,
|
|
||||||
error : null
|
|
||||||
}));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const debugTextMismatch = (clientTextRaw, serverTextRaw, label) => {
|
const debugTextMismatch = (clientTextRaw, serverTextRaw, label) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user