combine.fm/routes/index.js
2020-01-18 10:19:20 +00:00

45 lines
1.1 KiB
JavaScript

import debuglog from 'debug';
import services from '../lib/services.js';
import render from '../lib/render.js';
import models from '../models/index.cjs';
const debug = debuglog('combine.fm:share');
const recentQuery = {
include: [
{ model: models.artist },
{ model: models.match },
],
limit: 9,
order: [
['updatedAt', 'DESC'],
],
};
export default async function (ctx) {
const recentAlbums = await models.album.findAll(recentQuery);
const recentTracks = await models.track.findAll(recentQuery);
const serviceList = services.map(service => service.id);
const recents = recentAlbums.map(album => album.toJSON())
.concat(recentTracks.map(track => track.toJSON()))
.sort((a, b) => a.createdAt < b.createdAt).slice(0, 9);
const url = '/';
const html = await render(url, { manifest: ctx.manifest, services: serviceList, recents });
const head = {
title: 'Share Music',
shareUrl: `${this.request.origin}${url}`,
image: `${this.request.origin}/assets/images/logo-512.png`,
share: false,
};
await ctx.render('index', {
initialState: { services: serviceList, recents },
head,
html,
});
}