mirror of
https://git.sr.ht/~cadence/cloudtube
synced 2024-11-10 02:27:29 +00:00
e0bc0d2e81
Watched videos on your subscriptions feed will be darkened, and the option to hide all of them has been added. This only takes effect if you have enabled saving watched videos on the server in the settings menu - default is off.
46 lines
1.9 KiB
JavaScript
46 lines
1.9 KiB
JavaScript
const {render} = require("pinski/plugins")
|
|
const db = require("../utils/db")
|
|
const {fetchChannelLatest} = require("../utils/youtube")
|
|
const {getUser} = require("../utils/getuser")
|
|
const {timeToPastText} = require("../utils/converters")
|
|
const {refresher} = require("../background/feed-update")
|
|
|
|
module.exports = [
|
|
{
|
|
route: `/subscriptions`, methods: ["GET"], code: async ({req}) => {
|
|
const user = getUser(req)
|
|
let hasSubscriptions = false
|
|
let videos = []
|
|
let channels = []
|
|
let refreshed = null
|
|
if (user.token) {
|
|
// trigger a background refresh, needed if they came back from being inactive
|
|
refresher.skipWaiting()
|
|
// get channels
|
|
const subscriptions = user.getSubscriptions()
|
|
const template = Array(subscriptions.length).fill("?").join(", ")
|
|
channels = db.prepare(`SELECT * FROM Channels WHERE ucid IN (${template}) ORDER BY name`).all(subscriptions)
|
|
// get refreshed status
|
|
refreshed = db.prepare(`SELECT min(refreshed) as min, max(refreshed) as max, count(refreshed) as count FROM Channels WHERE ucid IN (${template})`).get(subscriptions)
|
|
// get watched videos
|
|
const watchedVideos = user.getWatchedVideos()
|
|
// get videos
|
|
if (subscriptions.length) {
|
|
hasSubscriptions = true
|
|
const template = Array(subscriptions.length).fill("?").join(", ")
|
|
videos = db.prepare(`SELECT * FROM Videos WHERE authorId IN (${template}) ORDER BY published DESC LIMIT 60`).all(subscriptions)
|
|
.map(video => {
|
|
video.publishedText = timeToPastText(video.published * 1000)
|
|
console.log(watchedVideos, video.videoId)
|
|
video.watched = watchedVideos.includes(video.videoId)
|
|
return video
|
|
})
|
|
}
|
|
}
|
|
const settings = user.getSettingsOrDefaults()
|
|
const instanceOrigin = settings.instance
|
|
return render(200, "pug/subscriptions.pug", {settings, hasSubscriptions, videos, channels, refreshed, timeToPastText, instanceOrigin})
|
|
}
|
|
}
|
|
]
|