49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
import debuglog from 'debug';
|
|
|
|
import services from '../lib/services';
|
|
import render from '../lib/render';
|
|
import models from '../models';
|
|
|
|
const debug = debuglog('combinefm:share');
|
|
|
|
const recentQuery = {
|
|
include: [
|
|
{ model: models.artist },
|
|
{ model: models.match },
|
|
],
|
|
limit: 6,
|
|
order: [
|
|
['updatedAt', 'DESC'],
|
|
],
|
|
};
|
|
|
|
export default function* () {
|
|
const recentAlbums = yield models.album.findAll(recentQuery);
|
|
const recentTracks = yield models.track.findAll(recentQuery);
|
|
|
|
const initialState = {
|
|
recents: recentAlbums.map(album => album.toJSON())
|
|
.concat(recentTracks.map(track => track.toJSON()))
|
|
.sort((a, b) => a.createdAt < b.createdAt).slice(0, 6),
|
|
services: services.map(service => service.id),
|
|
};
|
|
|
|
const url = '/';
|
|
|
|
const html = yield render(url, initialState);
|
|
|
|
const head = {
|
|
title: 'Share Music',
|
|
shareUrl: `${this.request.origin}${url}`,
|
|
image: `${this.request.origin}/assets/images/logo-512.png`,
|
|
share: false,
|
|
};
|
|
|
|
this.set('Cache-Control', 'no-cache');
|
|
|
|
yield this.render('index', {
|
|
initialState,
|
|
head,
|
|
html,
|
|
});
|
|
}
|