mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-09 09:22:38 +00:00
"Removed ArchivePage and related files, replaced with VaultPage, updated routes and API endpoints, and made minor changes to theme configuration and error handling."
This commit is contained in:
@@ -10,7 +10,7 @@ const UserPage = require('./pages/userPage/userPage.jsx');
|
|||||||
const SharePage = require('./pages/sharePage/sharePage.jsx');
|
const SharePage = require('./pages/sharePage/sharePage.jsx');
|
||||||
const NewPage = require('./pages/newPage/newPage.jsx');
|
const NewPage = require('./pages/newPage/newPage.jsx');
|
||||||
const ErrorPage = require('./pages/errorPage/errorPage.jsx');
|
const ErrorPage = require('./pages/errorPage/errorPage.jsx');
|
||||||
const PrintPage = require('./pages/printPage/printPage.jsx');
|
const VaultPage = require('./pages/vaultPage/vaultPage.jsx');
|
||||||
const AccountPage = require('./pages/accountPage/accountPage.jsx');
|
const AccountPage = require('./pages/accountPage/accountPage.jsx');
|
||||||
|
|
||||||
const WithRoute = (props)=>{
|
const WithRoute = (props)=>{
|
||||||
@@ -72,9 +72,8 @@ const Homebrew = createClass({
|
|||||||
<Route path='/new/:id' element={<WithRoute el={NewPage} brew={this.props.brew} />} />
|
<Route path='/new/:id' element={<WithRoute el={NewPage} brew={this.props.brew} />} />
|
||||||
<Route path='/new' element={<WithRoute el={NewPage}/>} />
|
<Route path='/new' element={<WithRoute el={NewPage}/>} />
|
||||||
<Route path='/user/:username' element={<WithRoute el={UserPage} brews={this.props.brews} />} />
|
<Route path='/user/:username' element={<WithRoute el={UserPage} brews={this.props.brews} />} />
|
||||||
<Route path='/print/:id' element={<WithRoute el={PrintPage} brew={this.props.brew} />} />
|
|
||||||
<Route path='/print' element={<WithRoute el={PrintPage} />} />
|
|
||||||
<Route path='/changelog' element={<WithRoute el={SharePage} brew={this.props.brew} />} />
|
<Route path='/changelog' element={<WithRoute el={SharePage} brew={this.props.brew} />} />
|
||||||
|
<Route path='/vault' element={<WithRoute el={VaultPage}/>}/>
|
||||||
<Route path='/faq' element={<WithRoute el={SharePage} brew={this.props.brew} />} />
|
<Route path='/faq' element={<WithRoute el={SharePage} brew={this.props.brew} />} />
|
||||||
<Route path='/account' element={<WithRoute el={AccountPage} brew={this.props.brew} accountDetails={this.props.brew.accountDetails} />} />
|
<Route path='/account' element={<WithRoute el={AccountPage} brew={this.props.brew} accountDetails={this.props.brew.accountDetails} />} />
|
||||||
<Route path='/legacy' element={<WithRoute el={HomePage} brew={this.props.brew} />} />
|
<Route path='/legacy' element={<WithRoute el={HomePage} brew={this.props.brew} />} />
|
||||||
|
|||||||
@@ -117,8 +117,6 @@ const BrewItem = createClass({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
const dateFormatString = 'YYYY-MM-DD HH:mm:ss';
|
const dateFormatString = 'YYYY-MM-DD HH:mm:ss';
|
||||||
const authors = brew.authors.length > 0 ? brew.authors : 'No authors';
|
|
||||||
|
|
||||||
|
|
||||||
return <div className='brewItem'>
|
return <div className='brewItem'>
|
||||||
{brew.thumbnail &&
|
{brew.thumbnail &&
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
require('./archivePage.less');
|
require('./vaultPage.less');
|
||||||
|
|
||||||
const React = require('react');
|
const React = require('react');
|
||||||
const { useState, useEffect, useRef } = React;
|
const { useState, useEffect, useRef } = React;
|
||||||
@@ -14,7 +14,7 @@ const BrewItem = require('../basePages/listPage/brewItem/brewItem.jsx');
|
|||||||
|
|
||||||
const request = require('../../utils/request-middleware.js');
|
const request = require('../../utils/request-middleware.js');
|
||||||
|
|
||||||
const ArchivePage = (props) => {
|
const VaultPage = (props) => {
|
||||||
const [title, setTitle] = useState(props.query.title || '');
|
const [title, setTitle] = useState(props.query.title || '');
|
||||||
const [legacy, setLegacy] = useState(props.query.legacy !== 'false');
|
const [legacy, setLegacy] = useState(props.query.legacy !== 'false');
|
||||||
const [v3, setV3] = useState(props.query.v3 !== 'false');
|
const [v3, setV3] = useState(props.query.v3 !== 'false');
|
||||||
@@ -29,6 +29,7 @@ const ArchivePage = (props) => {
|
|||||||
const countRef = useRef(null);
|
const countRef = useRef(null);
|
||||||
const v3Ref = useRef(null);
|
const v3Ref = useRef(null);
|
||||||
const legacyRef = useRef(null);
|
const legacyRef = useRef(null);
|
||||||
|
const totalBrewsSpanRef = useRef(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
validateInput();
|
validateInput();
|
||||||
@@ -38,6 +39,23 @@ const ArchivePage = (props) => {
|
|||||||
!totalBrews && loadTotal();
|
!totalBrews && loadTotal();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log(totalBrewsSpanRef);
|
||||||
|
console.log(totalBrews);
|
||||||
|
if (totalBrewsSpanRef.current) {
|
||||||
|
if (title === '') {
|
||||||
|
totalBrewsSpanRef.current.innerHTML = '0';
|
||||||
|
} else {
|
||||||
|
if (!totalBrews) {
|
||||||
|
totalBrewsSpanRef.current.innerHTML =
|
||||||
|
'<span class="searchAnim"></span>';
|
||||||
|
} else {
|
||||||
|
totalBrewsSpanRef.current.innerHTML = `${totalBrews}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [totalBrews, title, () => totalBrewsSpanRef.current]);
|
||||||
|
|
||||||
const updateStateWithBrews = (brews, page) => {
|
const updateStateWithBrews = (brews, page) => {
|
||||||
setBrewCollection(brews || null);
|
setBrewCollection(brews || null);
|
||||||
setPage(parseInt(page) || 1);
|
setPage(parseInt(page) || 1);
|
||||||
@@ -65,7 +83,7 @@ const ArchivePage = (props) => {
|
|||||||
if (title !== '') {
|
if (title !== '') {
|
||||||
try {
|
try {
|
||||||
const response = await request.get(
|
const response = await request.get(
|
||||||
`/api/archive?title=${title}&page=${page}&count=${count}&v3=${v3}&legacy=${legacy}`
|
`/api/vault?title=${title}&page=${page}&count=${count}&v3=${v3}&legacy=${legacy}`
|
||||||
);
|
);
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
updateStateWithBrews(response.body.brews, page);
|
updateStateWithBrews(response.body.brews, page);
|
||||||
@@ -112,7 +130,7 @@ const ArchivePage = (props) => {
|
|||||||
if (title) {
|
if (title) {
|
||||||
try {
|
try {
|
||||||
const response = await request.get(
|
const response = await request.get(
|
||||||
`/api/archive/total?title=${title}&v3=${v3}&legacy=${legacy}`
|
`/api/vault/total?title=${title}&v3=${v3}&legacy=${legacy}`
|
||||||
);
|
);
|
||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
@@ -134,7 +152,7 @@ const ArchivePage = (props) => {
|
|||||||
<Navbar>
|
<Navbar>
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
<Nav.item className="brewTitle">
|
<Nav.item className="brewTitle">
|
||||||
Archive: Search for brews
|
Vault: Search for brews
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
</Nav.section>
|
</Nav.section>
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
@@ -171,10 +189,7 @@ const ArchivePage = (props) => {
|
|||||||
pattern=".{3,}"
|
pattern=".{3,}"
|
||||||
onKeyDown={(e) => {
|
onKeyDown={(e) => {
|
||||||
if (e.key === 'Enter') {
|
if (e.key === 'Enter') {
|
||||||
if (
|
if (e.target.validity.valid && e.target.value) {
|
||||||
e.target.validity.valid &&
|
|
||||||
e.target.value
|
|
||||||
) {
|
|
||||||
loadTotal();
|
loadTotal();
|
||||||
loadPage(1, true);
|
loadPage(1, true);
|
||||||
}
|
}
|
||||||
@@ -362,13 +377,7 @@ const ArchivePage = (props) => {
|
|||||||
<div className="foundBrews">
|
<div className="foundBrews">
|
||||||
<span className="totalBrews">
|
<span className="totalBrews">
|
||||||
{`Brews found: `}
|
{`Brews found: `}
|
||||||
{title === '' ? (
|
<span ref={totalBrewsSpanRef}></span>
|
||||||
'0'
|
|
||||||
) : totalBrews ? (
|
|
||||||
totalBrews
|
|
||||||
) : (
|
|
||||||
<span className="searchAnim"></span>
|
|
||||||
)}
|
|
||||||
</span>
|
</span>
|
||||||
{brewCollection.map((brew, index) => (
|
{brewCollection.map((brew, index) => (
|
||||||
<BrewItem
|
<BrewItem
|
||||||
@@ -383,7 +392,7 @@ const ArchivePage = (props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="archivePage">
|
<div className="vaultPage">
|
||||||
<link href="/themes/V3/Blank/style.css" rel="stylesheet" />
|
<link href="/themes/V3/Blank/style.css" rel="stylesheet" />
|
||||||
<link href="/themes/V3/5ePHB/style.css" rel="stylesheet" />
|
<link href="/themes/V3/5ePHB/style.css" rel="stylesheet" />
|
||||||
{renderNavItems()}
|
{renderNavItems()}
|
||||||
@@ -398,4 +407,4 @@ const ArchivePage = (props) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = ArchivePage;
|
module.exports = VaultPage;
|
||||||
@@ -25,7 +25,7 @@ body {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.archivePage {
|
.vaultPage {
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: #2C3E50;
|
background-color: #2C3E50;
|
||||||
@@ -85,6 +85,7 @@ router.get('/admin/lookup/:id', mw.adminOnly, async (req, res, next)=>{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/* Find 50 brews that aren't compressed yet */
|
/* Find 50 brews that aren't compressed yet */
|
||||||
router.get('/admin/finduncompressed', mw.adminOnly, (req, res)=>{
|
router.get('/admin/finduncompressed', mw.adminOnly, (req, res)=>{
|
||||||
const query = uncompressedBrewQuery.clone();
|
const query = uncompressedBrewQuery.clone();
|
||||||
@@ -100,6 +101,7 @@ router.get('/admin/finduncompressed', mw.adminOnly, (req, res)=>{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/* Compresses the "text" field of a brew to binary */
|
/* Compresses the "text" field of a brew to binary */
|
||||||
router.put('/admin/compress/:id', (req, res)=>{
|
router.put('/admin/compress/:id', (req, res)=>{
|
||||||
HomebrewModel.findOne({ _id: req.params.id })
|
HomebrewModel.findOne({ _id: req.params.id })
|
||||||
@@ -121,6 +123,7 @@ router.put('/admin/compress/:id', (req, res)=>{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
router.get('/admin/stats', mw.adminOnly, async (req, res)=>{
|
router.get('/admin/stats', mw.adminOnly, async (req, res)=>{
|
||||||
try {
|
try {
|
||||||
const totalBrewsCount = await HomebrewModel.countDocuments({});
|
const totalBrewsCount = await HomebrewModel.countDocuments({});
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ app.use((req, res, next)=>{
|
|||||||
|
|
||||||
app.use(homebrewApi);
|
app.use(homebrewApi);
|
||||||
app.use(require('./admin.api.js'));
|
app.use(require('./admin.api.js'));
|
||||||
app.use(require('./archive.api.js'));
|
app.use(require('./vault.api.js'));
|
||||||
|
|
||||||
const HomebrewModel = require('./homebrew.model.js').model;
|
const HomebrewModel = require('./homebrew.model.js').model;
|
||||||
const welcomeText = require('fs').readFileSync('client/homebrew/pages/homePage/welcome_msg.md', 'utf8');
|
const welcomeText = require('fs').readFileSync('client/homebrew/pages/homePage/welcome_msg.md', 'utf8');
|
||||||
@@ -462,8 +462,8 @@ app.use(async (err, req, res, next)=>{
|
|||||||
res.status(err.status || err.response?.status || 500).send(err);
|
res.status(err.status || err.response?.status || 500).send(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(err.originalUrl?.startsWith('/archive/')) {
|
if(err.originalUrl?.startsWith('/vault/')) {
|
||||||
// console.log('archive error');
|
// console.log('vault error');
|
||||||
res.status(err.status || err.response?.status || 500).send(err);
|
res.status(err.status || err.response?.status || 500).send(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -490,8 +490,6 @@ app.use(async (err, req, res, next)=>{
|
|||||||
res.send(page);
|
res.send(page);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.use((req, res)=>{
|
app.use((req, res)=>{
|
||||||
if(!res.headersSent) {
|
if(!res.headersSent) {
|
||||||
console.error('Headers have not been sent, responding with a server error.', req.url);
|
console.error('Headers have not been sent, responding with a server error.', req.url);
|
||||||
|
|||||||
@@ -52,10 +52,10 @@ const buildBrewsQuery = (legacy, v3) => {
|
|||||||
return brewsQuery;
|
return brewsQuery;
|
||||||
};
|
};
|
||||||
|
|
||||||
const archive = {
|
const vault = {
|
||||||
findBrews: async (req, res, next) => {
|
findBrews: async (req, res, next) => {
|
||||||
try {
|
try {
|
||||||
console.log(`Query as received in archive api for findBrews:`);
|
console.log(`Query as received in vault api for findBrews:`);
|
||||||
console.table(req.query);
|
console.table(req.query);
|
||||||
|
|
||||||
const title = req.query.title || '';
|
const title = req.query.title || '';
|
||||||
@@ -91,7 +91,7 @@ const archive = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
findTotal: async (req, res) => {
|
findTotal: async (req, res) => {
|
||||||
console.log(`Query as received in archive api for totalBrews:`);
|
console.log(`Query as received in vault api for totalBrews:`);
|
||||||
console.table(req.query);
|
console.table(req.query);
|
||||||
try {
|
try {
|
||||||
const title = req.query.title || '';
|
const title = req.query.title || '';
|
||||||
@@ -102,9 +102,8 @@ const archive = {
|
|||||||
const titleQuery = {
|
const titleQuery = {
|
||||||
$and: [brewsQuery, ...titleConditionsArray],
|
$and: [brewsQuery, ...titleConditionsArray],
|
||||||
};
|
};
|
||||||
|
|
||||||
const totalBrews = await HomebrewModel.countDocuments(titleQuery);
|
const totalBrews = await HomebrewModel.countDocuments(titleQuery);
|
||||||
console.log('when returning, totalbrews is ', totalBrews);
|
console.log('when returning, totalbrews is ', totalBrews, 'for the query ',JSON.stringify(titleQuery));
|
||||||
return res.json({ totalBrews });
|
return res.json({ totalBrews });
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -114,7 +113,7 @@ const archive = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
router.get('/api/archive/total', asyncHandler(archive.findTotal));
|
router.get('/api/vault/total', asyncHandler(vault.findTotal));
|
||||||
router.get('/api/archive', asyncHandler(archive.findBrews));
|
router.get('/api/vault', asyncHandler(vault.findBrews));
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
"renderer": "V3",
|
"renderer": "V3",
|
||||||
"baseTheme": false,
|
"baseTheme": false,
|
||||||
"baseSnippets": "5ePHB",
|
"baseSnippets": "5ePHB",
|
||||||
"path": "Journal"
|
"path": "journal"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user