From 234747721fec14e69fc75d6c0134ad4a5ae7736e Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 1 Jun 2021 15:32:03 -0300 Subject: basic module-ify album pages Other pages are commented out for now. Also, this doesn't include the source .txt processing functions yet, 8ut that'll pro8a8ly end up in the page/ files too. --- src/util/serialize.js | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/util/serialize.js (limited to 'src/util/serialize.js') diff --git a/src/util/serialize.js b/src/util/serialize.js new file mode 100644 index 0000000..7b0f890 --- /dev/null +++ b/src/util/serialize.js @@ -0,0 +1,71 @@ +export function serializeLink(thing) { + const ret = {}; + ret.name = thing.name; + ret.directory = thing.directory; + if (thing.color) ret.color = thing.color; + return ret; +} + +export function serializeContribs(contribs) { + return contribs.map(({ who, what }) => { + const ret = {}; + ret.artist = serializeLink(who); + if (what) ret.contribution = what; + return ret; + }); +} + +export function serializeImagePaths(original, {thumb}) { + return { + original, + medium: thumb.medium(original), + small: thumb.small(original) + }; +} + +export function serializeCover(thing, pathFunction, { + serializeImagePaths, + urls +}) { + const coverPath = pathFunction(thing, { + to: urls.from('media.root').to + }); + + const { artTags } = thing; + + const cwTags = artTags.filter(tag => tag.isCW); + const linkTags = artTags.filter(tag => !tag.isCW); + + return { + paths: serializeImagePaths(coverPath), + tags: linkTags.map(serializeLink), + warnings: cwTags.map(tag => tag.name) + }; +} + +export function serializeGroupsForAlbum(album, { + serializeLink +}) { + return album.groups.map(group => { + const index = group.albums.indexOf(album); + const next = group.albums[index + 1] || null; + const previous = group.albums[index - 1] || null; + return {group, index, next, previous}; + }).map(({group, index, next, previous}) => ({ + link: serializeLink(group), + descriptionShort: group.descriptionShort, + albumIndex: index, + nextAlbum: next && serializeLink(next), + previousAlbum: previous && serializeLink(previous), + urls: group.urls + })); +} + +export function serializeGroupsForTrack(track, { + serializeLink +}) { + return track.album.groups.map(group => ({ + link: serializeLink(group), + urls: group.urls, + })); +} -- cgit 1.3.0-6-gf8a5