| 
					
				 | 
			
			
				@@ -1,155 +0,0 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { mapState, mapActions } from "vuex"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import Toast from "toasters"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import draggable from "vuedraggable"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	components: { draggable }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			orderOfPlaylists: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			drag: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	computed: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		playlists: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			get() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				return this.$store.state.user.playlists.playlists; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			set(playlists) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.$store.commit("user/playlists/updatePlaylists", playlists); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		...mapState({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			station: state => state.station.station, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			myUserId: state => state.user.auth.userId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dragOptions() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				animation: 200, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				group: "playlists", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				disabled: this.myUserId !== this.userId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ghostClass: "draggable-list-ghost" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.socket.on( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			"event:playlist.created", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			res => this.addPlaylist(res.data.playlist), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			{ replaceable: true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.socket.on( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			"event:playlist.deleted", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			res => this.removePlaylist(res.data.playlistId), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			{ replaceable: true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.socket.on( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			"event:playlist.song.added", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.playlists.forEach((playlist, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (playlist._id === res.data.playlistId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.playlists[index].songs.push(res.data.song); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			{ replaceable: true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.socket.on( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			"event:playlist.song.removed", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.playlists.forEach((playlist, playlistIndex) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (playlist._id === res.data.playlistId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.playlists[playlistIndex].songs.forEach( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							(song, songIndex) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								if (song.youtubeId === res.data.youtubeId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									this.playlists[playlistIndex].songs.splice( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-										songIndex, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-										1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			{ replaceable: true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.socket.on( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			"event:playlist.displayName.updated", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.playlists.forEach((playlist, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (playlist._id === res.data.playlistId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.playlists[index].displayName = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							res.data.displayName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			{ replaceable: true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.socket.on( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			"event:playlist.privacy.updated", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.playlists.forEach((playlist, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (playlist._id === res.data.playlist._id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.playlists[index].privacy = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							res.data.playlist.privacy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			{ replaceable: true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.socket.on( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			"event:user.orderOfPlaylists.updated", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				const sortedPlaylists = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.playlists.forEach(playlist => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					sortedPlaylists[res.data.order.indexOf(playlist._id)] = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						playlist; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.playlists = sortedPlaylists; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.orderOfPlaylists = this.calculatePlaylistOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			{ replaceable: true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		calculatePlaylistOrder() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const calculatedOrder = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			this.playlists.forEach(playlist => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				calculatedOrder.push(playlist._id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return calculatedOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		savePlaylistOrder() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const recalculatedOrder = this.calculatePlaylistOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				JSON.stringify(this.orderOfPlaylists) === 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				JSON.stringify(recalculatedOrder) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				return; // nothing has changed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			this.socket.dispatch( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				"users.updateOrderOfPlaylists", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				recalculatedOrder, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (res.status === "error") return new Toast(res.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					this.orderOfPlaylists = this.calculatePlaylistOrder(); // new order in regards to the database 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					return new Toast(res.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		...mapActions("user/playlists", ["addPlaylist", "removePlaylist"]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-</script> 
			 |