import data from 'lib/data.js'; import registerEl from 'lib/register-element.js'; let songsForEls = new WeakMap(); export default registerEl('maenad-song-item', { attachedCallback, createdCallback, detachedCallback, showSong }); // attachedCallback :: undefined -> undefined function attachedCallback() { document.addEventListener('maenad:start-playing', this.playingCallback); } // createdCallback :: undefined -> undefined function createdCallback() { Object.defineProperty(this, 'song', { get : () => songsForEls.get(this), set : song => { songsForEls.set(this, song); this.showSong(song); return song; } }); let title = document.createElement('span'), album = document.createElement('span'), artist = document.createElement('span');
import config from 'lib/config.js'; import data from 'lib/data.js'; import MaenadAwsSongImporterElement from 'components/maenad-aws-song-importer/js/maenad-aws-song-importer.js'; import registerEl from 'lib/register-element.js'; import s3 from 'lib/s3.js'; export default registerEl('maenad-aws-importer', { attachedCallback, createdCallback }); // attachedCallback :: undefined -> undefined function attachedCallback() { getSongs(this); } // createdCallback :: undefined -> undefined function createdCallback() { data.getAllSongs() .then(songs => Promise.all(songs.map(s => s.file))) .then(files => this.importedFiles = files.map(s => s.name)); } // getSongs :: MaenadAwsImporterElement, String? -> undefined function getSongs(el, startKey) { let reqOpts = { MaxKeys : 1000, Prefix : config.AWS.songsPrefix }; if (startKey) reqOpts.Marker = startKey;