mastoradio-fork/src/components/Queue.svelte

78 lines
3.3 KiB
Svelte
Raw Normal View History

2020-01-13 14:39:22 +01:00
<div>
2020-02-21 23:56:26 +01:00
<div class="queue__section">
<div class="queue__sectionTitle">Next song</div>
2020-03-07 19:07:55 +01:00
{#if $next || $enqueueing}
<div class="track">
<div class="track__main" on:click={() => select($next)}>
<div class="track__title" class:placeholder={!$next && $enqueueing}>
{#if $next}{$next.media.title}{/if}
</div>
<div class="track__subtitle" class:placeholder={!$next && $enqueueing}>
{#if $next}
shared by <span class="track__username">{$next.referer.username}</span>
<DistanceDate date={$next.referer.date} />
{/if}
</div>
2020-02-21 23:56:26 +01:00
</div>
{#if $next}
2020-03-07 19:07:55 +01:00
<Popper needOffset={true}>
<button slot="btn" class="track__menu" aria-label="track menu"><IconMenu></IconMenu></button>
<div slot="content" class="contextMenu__list">
<ContextMenu track={$next}></ContextMenu>
</div>
</Popper>
2020-02-21 23:56:26 +01:00
{/if}
</div>
2020-03-07 19:07:55 +01:00
{:else}
<div class="notif notif--warning">There is no more song to play. Reload the app or change your hashtags settings to get new songs.</div>
{/if}
2020-02-21 23:56:26 +01:00
</div>
2020-02-18 19:18:46 +01:00
2020-01-20 04:49:38 +01:00
2020-02-21 23:56:26 +01:00
<div class="queue__section">
<div class="queue__sectionTitle">History</div>
{#each history as track, i (track.referer.url)}
<div class="track track--history" class:track--active={track === $current} class:track--playing={!$paused}>
2020-02-22 01:59:26 +01:00
<div class="track__main" on:click={() => select(track)}>
2020-02-22 03:39:15 +01:00
<div class="track__title">{track.media.title}</div>
2020-02-21 23:56:26 +01:00
<div class="track__subtitle">
2020-02-22 20:55:35 +01:00
shared by <span class="track__username">{track.referer.username}</span>
2020-02-22 03:39:15 +01:00
<DistanceDate date={track.referer.date} />
2020-02-21 23:56:26 +01:00
</div>
</div>
<Popper needOffset={true}>
2020-02-22 01:59:26 +01:00
<button slot="btn" class="track__menu" aria-label="track menu"><IconMenu></IconMenu></button>
<div slot="content" class="contextMenu__list">
2020-02-22 05:08:25 +01:00
<ContextMenu track={track}></ContextMenu>
2020-02-22 01:59:26 +01:00
</div>
</Popper>
2020-02-21 23:56:26 +01:00
</div>
{/each}
{#if history.length === 0}
<div class="track">
<div class="track__main">
<div class="track__title placeholder"></div>
<div class="track__subtitle placeholder"></div>
</div>
</div>
{/if}
</div>
2020-01-13 14:39:22 +01:00
</div>
<script>
import { getContext } from 'svelte'
2021-11-07 00:11:15 +01:00
import DistanceDate from '/src/components/DistanceDate'
import IconMenu from '/src/components/icons/Menu'
import Popper from '/src/components/PopperMenu'
import ContextMenu from '/src/components/ContextMenu'
2020-01-13 14:39:22 +01:00
const current = getContext('current')
const enqueueing = getContext('enqueueing')
const next = getContext('next')
const queue = getContext('queue')
const select = getContext('select')
const paused = getContext('paused')
2020-02-14 16:48:49 +01:00
$: history = $queue.filter(x => x !== $next).reverse()
2020-01-13 14:39:22 +01:00
</script>