This commit is contained in:
An Phan 2017-01-17 15:02:19 +08:00
parent cd94c4e38a
commit 9537ad26b1
No known key found for this signature in database
GPG key ID: 05536BB4BCDC02A2
19 changed files with 33 additions and 64 deletions

View file

@ -54,6 +54,10 @@ export default {
},
watch: {
/**
* Whenever a new album is loaded into this component, we reset the "full wiki" state.
* @return {Boolean}
*/
album () {
this.showingFullWiki = false
}

View file

@ -41,6 +41,10 @@ export default {
},
watch: {
/**
* Whenever a new artist is loaded into this component, we reset the "full bio" state.
* @return {Boolean}
*/
artist () {
this.showingFullBio = false
}

View file

@ -75,7 +75,7 @@ export default {
computed: {
latestVersionUrl () {
return 'https://github.com/phanan/koel/releases/tag/' + this.sharedState.latestVersion
return `https://github.com/phanan/koel/releases/tag/${this.sharedState.latestVersion}`
}
},

View file

@ -28,7 +28,6 @@ export default {
data () {
return {
newName: '',
editing: false,
active: false
}

View file

@ -48,10 +48,10 @@ export default {
store () {
this.creating = false
playlistStore.store(this.newName).then(p => {
playlistStore.store(this.newName).then(playlist => {
this.newName = ''
// Activate the new playlist right away
this.$nextTick(() => router.go(`playlist/${p.id}`))
this.$nextTick(() => router.go(`playlist/${playlist.id}`))
})
}
}

View file

@ -47,9 +47,7 @@ export default {
watch: {
songs () {
if (!this.songs.length) {
this.close()
}
this.songs.length || this.close()
}
},
@ -65,10 +63,10 @@ export default {
return
}
playlistStore.store(this.newPlaylistName, this.songs).then(p => {
playlistStore.store(this.newPlaylistName, this.songs).then(playlist => {
this.newPlaylistName = ''
// Activate the new playlist right away
this.$nextTick(() => router.go(`playlist/${p.id}`))
this.$nextTick(() => router.go(`playlist/${playlist.id}`))
})
this.close()

View file

@ -36,8 +36,6 @@
</template>
<script>
import { map } from 'lodash'
import { pluralize } from '../../utils'
import { queueStore, artistStore, sharedStore } from '../../stores'
import { playback, download } from '../../services'
@ -91,7 +89,7 @@ export default {
* Allow dragging the album (actually, its songs).
*/
dragStart (e) {
const songIds = map(this.album.songs, 'id')
const songIds = this.album.songs.map(song => song.id)
e.dataTransfer.setData('application/x-koel.text+plain', songIds)
e.dataTransfer.effectAllowed = 'move'

View file

@ -28,8 +28,6 @@
</template>
<script>
import { map } from 'lodash'
import { pluralize } from '../../utils'
import { artistStore, queueStore, sharedStore } from '../../stores'
import { playback, download } from '../../services'
@ -80,7 +78,7 @@ export default {
* Allow dragging the artist (actually, their songs).
*/
dragStart (e) {
const songIds = map(this.artist.songs, 'id')
const songIds = this.artist.songs.map(song => song.id)
e.dataTransfer.setData('application/x-koel.text+plain', songIds)
e.dataTransfer.effectAllowed = 'move'

View file

@ -38,10 +38,7 @@ export default {
methods: {
play () {
if (!queueStore.contains(this.song)) {
queueStore.queueAfterCurrent(this.song)
}
queueStore.contains(this.song) || queueStore.queueAfterCurrent(this.song)
playback.play(this.song)
},

View file

@ -8,7 +8,7 @@
@dragstart="dragStart"
@dragleave="dragLeave"
@dragover.prevent="dragOver"
@drop.stop.prevent="dropStop"
@drop.stop.prevent="drop"
@contextmenu.prevent="contextMenu"
:class="{ selected: item.selected, playing: playing }"
>
@ -66,10 +66,7 @@ export default {
* Play the song right away.
*/
playRightAwayyyyyyy () {
if (!queueStore.contains(this.song)) {
queueStore.queueAfterCurrent(this.song)
}
queueStore.contains(this.song) || queueStore.queueAfterCurrent(this.song)
playback.play(this.song)
},
@ -126,7 +123,7 @@ export default {
* Proxy the dropstop event to the parent song list component.
* @param {Event} event
*/
dropStop (event) {
drop (event) {
this.parentSongList.handleDrop(this, event)
},

View file

@ -101,10 +101,7 @@ export default {
playback.resume()
break
default:
if (!queueStore.contains(this.songs[0])) {
queueStore.queueAfterCurrent(this.songs[0])
}
queueStore.contains(this.songs[0]) || queueStore.queueAfterCurrent(this.songs[0])
playback.play(this.songs[0])
break
}
@ -116,10 +113,7 @@ export default {
* Trigger opening the "Edit Song" form/overlay.
*/
openEditForm () {
if (this.songs.length) {
event.emit('songs:edit', this.songs)
}
this.songs.length || event.emit('songs:edit', this.songs)
this.close()
},

View file

@ -46,10 +46,7 @@ export default {
methods: {
play () {
if (this.correspondingSong) {
if (!queueStore.contains(this.correspondingSong)) {
queueStore.queueAfterCurrent(this.correspondingSong)
}
queueStore.contains(this.correspondingSong) || queueStore.queueAfterCurrent(this.correspondingSong)
playback.play(this.correspondingSong)
}
}

View file

@ -108,7 +108,6 @@ export default {
// Hide the typeahead results and reset the value if ESC is pressed.
if (e.keyCode === 27) {
this.showingResult = false
return
}

View file

@ -55,7 +55,6 @@ export default {
edit () {
if (this.isCurrentUser) {
router.go('profile')
return
}
@ -67,9 +66,7 @@ export default {
*/
del () {
alerts.confirm(`Youre about to unperson ${this.user.name}. Are you sure?`, () => {
userStore.destroy(this.user).then(() => {
this.$destroy(true)
})
userStore.destroy(this.user).then(() => this.$destroy(true))
})
}
}

View file

@ -11,9 +11,7 @@ export const clickawayDirective = {
}
document.addEventListener('click', e => {
if (!el.contains(e.target)) {
value()
}
el.contains(e.target) || value()
})
}
}

View file

@ -1,4 +1,4 @@
import { event, $ } from '../utils'
import { $ } from '../utils'
import toTopButton from '../components/shared/to-top-button.vue'
/**

View file

@ -43,7 +43,6 @@ export const download = {
*/
fromPlaylist (playlist) {
if (!playlistStore.getSongs(playlist).length) {
console.warn('Empty playlist.')
return
}

View file

@ -32,9 +32,7 @@ export const playback = {
/**
* Listen to 'error' event on the audio player and play the next song if any.
*/
document.querySelector('.plyr').addEventListener('error', e => {
this.playNext()
}, true)
document.querySelector('.plyr').addEventListener('error', () => this.playNext(), true)
/**
* Listen to 'ended' event on the audio player and play the next song in the queue.
@ -46,7 +44,6 @@ export const playback = {
if (preferences.repeatMode === 'REPEAT_ONE') {
this.restart()
return
}
@ -67,8 +64,7 @@ export const playback = {
return
}
const preloader = document.createElement('audio')
preloader.setAttribute('src', songStore.getSourceUrl(nextSong))
document.createElement('audio').setAttribute('src', songStore.getSourceUrl(nextSong))
nextSong.preloaded = true
})
@ -78,9 +74,7 @@ export const playback = {
* When user drags the volume control, this event will be triggered, and we
* update the volume on the plyr object.
*/
this.volumeInput.addEventListener('input', e => {
this.setVolume(e.target.value)
})
this.volumeInput.addEventListener('input', e => this.setVolume(e.target.value))
// On init, set the volume to the value found in the local storage.
this.setVolume(preferences.volume)

View file

@ -86,9 +86,9 @@ export const albumStore = {
*/
add (albums) {
albums = [].concat(albums)
each(albums, a => {
this.setupAlbum(a, a.artist)
a.playCount = reduce(a.songs, (count, song) => count + song.playCount, 0)
each(albums, album => {
this.setupAlbum(album, album.artist)
album.playCount = reduce(album.songs, (count, song) => count + song.playCount, 0)
})
this.all = union(this.all, albums)
@ -164,10 +164,7 @@ export const albumStore = {
*/
getMostPlayed (n = 6) {
// Only non-unknown albums with actually play count are applicable.
const applicable = filter(this.all, album => {
return album.playCount && album.id !== 1
})
const applicable = filter(this.all, album => album.playCount && album.id !== 1)
return take(orderBy(applicable, 'playCount', 'desc'), n)
},
@ -180,7 +177,6 @@ export const albumStore = {
*/
getRecentlyAdded (n = 6) {
const applicable = filter(this.all, album => album.id !== 1)
return take(orderBy(applicable, 'created_at', 'desc'), n)
}
}