Only show own accounts on home page
This commit is contained in:
parent
2c05140382
commit
924c7395cf
7 changed files with 106 additions and 79 deletions
71
routes/_index.js
Normal file
71
routes/_index.js
Normal file
|
@ -0,0 +1,71 @@
|
|||
// @ts-check
|
||||
|
||||
const fs = require("fs")
|
||||
const {defineEventHandler, defaultContentType, handleCacheHeaders} = require("h3")
|
||||
const {sync, router} = require("../passthrough")
|
||||
|
||||
/** @type {import("../pug-sync")} */
|
||||
const pugSync = sync.require("../pug-sync")
|
||||
|
||||
// Routes
|
||||
|
||||
sync.require("./app")
|
||||
sync.require("./collection-stats")
|
||||
sync.require("./load-collection")
|
||||
sync.require("./home")
|
||||
sync.require("./play")
|
||||
sync.require("./settings")
|
||||
|
||||
// Files
|
||||
|
||||
router.get("/static/stacks.min.css", defineEventHandler({
|
||||
onBeforeResponse: pugSync.compressResponse,
|
||||
handler: async event => {
|
||||
handleCacheHeaders(event, {maxAge: 86400})
|
||||
defaultContentType(event, "text/css")
|
||||
return fs.promises.readFile(require.resolve("@stackoverflow/stacks/dist/css/stacks.css"), "utf-8")
|
||||
}
|
||||
}))
|
||||
|
||||
router.get("/static/style.css", defineEventHandler({
|
||||
onBeforeResponse: pugSync.compressResponse,
|
||||
handler: async event => {
|
||||
defaultContentType(event, "text/css")
|
||||
return fs.promises.readFile("public/style.css", "utf-8")
|
||||
}
|
||||
}))
|
||||
|
||||
router.get("/static/htmx.js", defineEventHandler({
|
||||
onBeforeResponse: pugSync.compressResponse,
|
||||
handler: async event => {
|
||||
handleCacheHeaders(event, {maxAge: 86400})
|
||||
defaultContentType(event, "text/javascript")
|
||||
return Promise.all(["htmx.org/dist/htmx.js"].map(r =>
|
||||
fs.promises.readFile(require.resolve(r), "utf-8")
|
||||
)).then(files => files.join("\n\n\n"))
|
||||
}
|
||||
}))
|
||||
|
||||
router.get("/static/wordcloud.js", defineEventHandler({
|
||||
onBeforeResponse: pugSync.compressResponse,
|
||||
handler: async event => {
|
||||
handleCacheHeaders(event, {maxAge: 86400})
|
||||
defaultContentType(event, "text/javascript")
|
||||
return fs.promises.readFile(require.resolve("wordcloud/src/wordcloud2.js"), "utf-8")
|
||||
}
|
||||
}))
|
||||
|
||||
router.get("/static/player-marker.js", defineEventHandler({
|
||||
handler: async event => {
|
||||
defaultContentType(event, "text/javascript")
|
||||
return fs.promises.readFile("public/player-marker.js")
|
||||
}
|
||||
}))
|
||||
|
||||
router.get("/favicon.png", defineEventHandler({
|
||||
handler: async event => {
|
||||
handleCacheHeaders(event, {maxAge: 86400})
|
||||
defaultContentType(event, "text/javascript")
|
||||
return fs.promises.readFile("public/favicon.png")
|
||||
}
|
||||
}))
|
|
@ -150,7 +150,7 @@ router.get("/:account/", defineEventHandler({
|
|||
loadPreviews(locals, "band_url", 6, whereClause, account, filter_field, filter, filter_fuzzy)
|
||||
}
|
||||
// if there are any untagged items then we don't have full track data
|
||||
locals.hasFullTrackData = !db.prepare("SELECT * FROM item LEFT JOIN item_tag USING (account, item_id) WHERE account = ? AND item_id = NULL").get(account)
|
||||
locals.hasFullTrackData = !db.prepare("SELECT * FROM item LEFT JOIN item_tag USING (account, item_id) WHERE account = ? AND tag IS NULL").get(account)
|
||||
return pugSync.render(event, `${arrange}_${shape}.pug`, locals)
|
||||
}
|
||||
}))
|
||||
|
|
15
routes/home.js
Normal file
15
routes/home.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
// @ts-check
|
||||
|
||||
const {z} = require("zod")
|
||||
const {defineEventHandler, getQuery, getValidatedQuery, sendRedirect, createError, getValidatedRouterParams, getCookie} = require("h3")
|
||||
const {router, db, sync, select, from} = require("../passthrough")
|
||||
const pugSync = sync.require("../pug-sync")
|
||||
|
||||
router.get("/", defineEventHandler({
|
||||
onBeforeResponse: pugSync.compressResponse,
|
||||
handler: async event => {
|
||||
const names = (getCookie(event, "accounts") || "").split("|")
|
||||
const accounts = from("item").selectUnsafe("account", "count(*) AS count").where({account: names}).and("GROUP BY account").all()
|
||||
return pugSync.render(event, `home.pug`, {accounts})
|
||||
}
|
||||
}))
|
|
@ -4,7 +4,7 @@ const assert = require("assert/strict")
|
|||
const fs = require("fs")
|
||||
const sqlite = require("better-sqlite3")
|
||||
const domino = require("domino")
|
||||
const {defineEventHandler, readValidatedBody} = require("h3")
|
||||
const {defineEventHandler, readValidatedBody, setCookie, getCookie} = require("h3")
|
||||
const {z} = require("zod")
|
||||
|
||||
const {sync, db, router} = require("../passthrough")
|
||||
|
@ -95,5 +95,6 @@ const schema = z.object({
|
|||
router.post("/api/load-collection", defineEventHandler(async event => {
|
||||
const {account} = await readValidatedBody(event, schema.parse)
|
||||
const result = await loadCollection(account)
|
||||
setCookie(event, "accounts", (getCookie(event, "accounts") || "").split("|").concat(account).join("|"))
|
||||
return pugSync.render(event, "collection-loaded.pug", result)
|
||||
}))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue