Spaces:
Runtime error
Runtime error
Update server.js
Browse files
server.js
CHANGED
@@ -19,8 +19,9 @@ function isSupportedFormat(filename) {
|
|
19 |
}
|
20 |
|
21 |
app.get('/tracks', async (req, res) => {
|
|
|
22 |
const pageNumber = parseInt(req.query.page) || 1;
|
23 |
-
const pageSize = 5;
|
24 |
|
25 |
fs.readdir('music', async (err, files) => {
|
26 |
if (err) {
|
@@ -28,12 +29,17 @@ app.get('/tracks', async (req, res) => {
|
|
28 |
return res.sendStatus(500);
|
29 |
}
|
30 |
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
32 |
const pageStart = (pageNumber - 1) * pageSize;
|
33 |
const pageEnd = pageStart + pageSize;
|
34 |
|
35 |
-
// Slice files for
|
36 |
-
const pagedFiles = filteredFiles.slice(pageStart, pageEnd);
|
37 |
|
38 |
const trackDetails = [];
|
39 |
for (const file of pagedFiles) {
|
|
|
19 |
}
|
20 |
|
21 |
app.get('/tracks', async (req, res) => {
|
22 |
+
const searchQuery = (req.query.search || '').toLowerCase();
|
23 |
const pageNumber = parseInt(req.query.page) || 1;
|
24 |
+
const pageSize = 5;
|
25 |
|
26 |
fs.readdir('music', async (err, files) => {
|
27 |
if (err) {
|
|
|
29 |
return res.sendStatus(500);
|
30 |
}
|
31 |
|
32 |
+
// If there's a search query, filter files by it
|
33 |
+
let filteredFiles = files.filter(file => isSupportedFormat(file));
|
34 |
+
if (searchQuery) {
|
35 |
+
filteredFiles = filteredFiles.filter(file => file.toLowerCase().includes(searchQuery));
|
36 |
+
}
|
37 |
+
|
38 |
const pageStart = (pageNumber - 1) * pageSize;
|
39 |
const pageEnd = pageStart + pageSize;
|
40 |
|
41 |
+
// Slice files for pagination after filtering, ONLY if not searching. If searching, ignore pagination and send first 5 results.
|
42 |
+
const pagedFiles = filteredFiles.slice(searchQuery ? 0 : pageStart, searchQuery ? pageSize : pageEnd);
|
43 |
|
44 |
const trackDetails = [];
|
45 |
for (const file of pagedFiles) {
|