示例#1
0
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;