Skip to content

Commit 9f46ab3

Browse files
committed
Add Move Top/Bottom to playlist
1 parent 38aff62 commit 9f46ab3

File tree

5 files changed

+78
-2
lines changed

5 files changed

+78
-2
lines changed

src/renderer/components/ft-list-video-lazy/ft-list-video-lazy.vue

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
:can-move-video-down="canMoveVideoDown"
2525
:can-remove-from-playlist="canRemoveFromPlaylist"
2626
@pause-player="$emit('pause-player')"
27+
@move-video-top="$emit('move-video-top')"
28+
@move-video-bottom="$emit('move-video-bottom')"
2729
@move-video-up="$emit('move-video-up')"
2830
@move-video-down="$emit('move-video-down')"
2931
@remove-from-playlist="$emit('remove-from-playlist')"

src/renderer/components/ft-list-video/ft-list-video.vue

+18
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,15 @@
6969
:size="appearance === `watchPlaylistItem` ? 14 : 18"
7070
@click="toggleQuickBookmarked"
7171
/>
72+
<ft-icon-button
73+
v-if="inUserPlaylist && canMoveVideoUp"
74+
:title="$t('User Playlists.Move Video Top')"
75+
:icon="['fas', 'angle-up']"
76+
class="upArrowIcon"
77+
:padding="appearance === `watchPlaylistItem` ? 5 : 6"
78+
:size="appearance === `watchPlaylistItem` ? 14 : 18"
79+
@click="$emit('move-video-top')"
80+
/>
7281
<ft-icon-button
7382
v-if="inUserPlaylist && canMoveVideoUp"
7483
:title="$t('User Playlists.Move Video Up')"
@@ -87,6 +96,15 @@
8796
:size="appearance === `watchPlaylistItem` ? 14 : 18"
8897
@click="$emit('move-video-down')"
8998
/>
99+
<ft-icon-button
100+
v-if="inUserPlaylist && canMoveVideoDown"
101+
:title="$t('User Playlists.Move Video Bottom')"
102+
:icon="['fas', 'angle-down']"
103+
class="downArrowIcon"
104+
:padding="appearance === `watchPlaylistItem` ? 5 : 6"
105+
:size="appearance === `watchPlaylistItem` ? 14 : 18"
106+
@click="$emit('move-video-bottom')"
107+
/>
90108
<ft-icon-button
91109
v-if="inUserPlaylist && canRemoveFromPlaylist"
92110
:title="$t('User Playlists.Remove from Playlist')"

src/renderer/views/Playlist/Playlist.js

+54-2
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,60 @@ export default defineComponent({
330330
if (shouldGetNextPage) { this.getNextPageLocal() }
331331
})
332332
},
333-
333+
moveVideoTop: function (videoId, playlistItemId) {
334+
const playlistItems = [].concat(this.playlistItems)
335+
const videoIndex = playlistItems.findIndex((video) => {
336+
return video.videoId === videoId && video.playlistItemId === playlistItemId
337+
})
338+
if (videoIndex === 0) {
339+
showToast(this.$t('User Playlists.SinglePlaylistView.Toast["This video cannot be moved to the top."]'))
340+
return
341+
}
342+
const videoObject = playlistItems[videoIndex]
343+
playlistItems.splice(videoIndex, 1)
344+
playlistItems.unshift(videoObject)
345+
const playlist = {
346+
playlistName: this.playlistTitle,
347+
protected: this.selectedUserPlaylist.protected,
348+
description: this.playlistDescription,
349+
videos: playlistItems,
350+
_id: this.playlistId
351+
}
352+
try {
353+
this.updatePlaylist(playlist)
354+
this.playlistItems = playlistItems
355+
} catch (e) {
356+
showToast(this.$t('User Playlists.SinglePlaylistView.Toast["There was an issue with updating this playlist."]'))
357+
console.error(e)
358+
}
359+
},
360+
moveVideoBottom: function(videoId, playlistItemId) {
361+
const playlistItems = [].concat(this.playlistItems)
362+
const videoIndex = playlistItems.findIndex((video) => {
363+
return video.videoId === videoId && video.playlistItemId === playlistItemId
364+
})
365+
if (videoIndex === playlistItems.length - 1) {
366+
showToast(this.$t('User Playlists.SinglePlaylistView.Toast["This video cannot be moved to the bottom."]'))
367+
return
368+
}
369+
const videoObject = playlistItems[videoIndex]
370+
playlistItems.splice(videoIndex, 1)
371+
playlistItems.push(videoObject)
372+
const playlist = {
373+
playlistName: this.playlistTitle,
374+
protected: this.selectedUserPlaylist.protected,
375+
description: this.playlistDescription,
376+
videos: playlistItems,
377+
_id: this.playlistId
378+
}
379+
try {
380+
this.updatePlaylist(playlist)
381+
this.playlistItems = playlistItems
382+
} catch (e) {
383+
showToast(this.$t('User Playlists.SinglePlaylistView.Toast["There was an issue with updating this playlist."]'))
384+
console.error(e)
385+
}
386+
},
334387
moveVideoUp: function (videoId, playlistItemId) {
335388
const playlistItems = [].concat(this.playlistItems)
336389
const videoIndex = playlistItems.findIndex((video) => {
@@ -362,7 +415,6 @@ export default defineComponent({
362415
console.error(e)
363416
}
364417
},
365-
366418
moveVideoDown: function (videoId, playlistItemId) {
367419
const playlistItems = [].concat(this.playlistItems)
368420
const videoIndex = playlistItems.findIndex((video) => {

src/renderer/views/Playlist/Playlist.vue

+2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@
6767
:can-move-video-down="index < playlistItems.length - 1"
6868
:can-remove-from-playlist="true"
6969
:hide-forbidden-titles="false"
70+
@move-video-top="moveVideoTop(item.videoId, item.playlistItemId)"
71+
@move-video-bottom="moveVideoBottom(item.videoId, item.playlistItemId)"
7072
@move-video-up="moveVideoUp(item.videoId, item.playlistItemId)"
7173
@move-video-down="moveVideoDown(item.videoId, item.playlistItemId)"
7274
@remove-from-playlist="removeVideoFromPlaylist(item.videoId, item.playlistItemId)"

static/locales/en-US.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ User Playlists:
152152
Add to Favorites: Add to {playlistName}
153153
Remove from Favorites: Remove from {playlistName}
154154

155+
Move Video Top: Move Video Top
156+
Move Video Bottom: Move Video Bottom
155157
Move Video Up: Move Video Up
156158
Move Video Down: Move Video Down
157159
Remove from Playlist: Remove from Playlist

0 commit comments

Comments
 (0)