| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | <template>	<div class="modal is-active">		<div class="modal-background"></div>		<div class="modal-card">			<header class="modal-card-head">				<p class="modal-card-title">Add Songs to Station</p>				<button class="delete" @click="$parent.toggleModal('addSongToQueue')" ></button>			</header>			<section class="modal-card-body">				<div class="control is-grouped">					<p class="control is-expanded">						<input class="input" type="text" placeholder="YouTube Query" v-model="querySearch">					</p>					<p class="control">						<a class="button is-info" @click="submitQuery()">							Search						</a>					</p>				</div>				<table class="table">					<tbody>						<tr v-for="result in queryResults">							<td>								<img :src="result.thumbnail" />							</td>							<td>{{ result.title }}</td>							<td>								<a class="button is-success" @click="addSongToQueue(result.id)">									Add								</a>							</td>						</tr>					</tbody>				</table>			</section>		</div>	</div></template><script>	import { Toast } from 'vue-roaster';	export default {		data() {			return {				querySearch: '',				queryResults: []			}		},		methods: {			addSongToQueue: function (songId) {				let _this = this;				if (_this.$parent.type === 'community') {					_this.socket.emit('stations.addToQueue', _this.$parent.stationId, songId, data => {						if (data.status !== 'success') {							Toast.methods.addToast(`Error: ${data.message}`, 8000);						} else {							Toast.methods.addToast(`${data.message}`, 4000);						}					});				} else {					_this.socket.emit('queueSongs.add', songId, data => {						if (data.status !== 'success') {							Toast.methods.addToast(`Error: ${data.message}`, 8000);						} else {							Toast.methods.addToast(`${data.message}`, 4000);						}					});				}			},			submitQuery: function () {				let _this = this;				_this.socket.emit('apis.searchYoutube', _this.querySearch, results => {					results = results.data;					_this.queryResults = [];					for (let i = 0; i < results.items.length; i++) {						_this.queryResults.push({							id: results.items[i].id.videoId,							url: `https://www.youtube.com/watch?v=${this.id}`,							title: results.items[i].snippet.title,							thumbnail: results.items[i].snippet.thumbnails.default.url						});					}				});			}		},		ready: function () {			let _this = this;			let socketInterval = setInterval(() => {				if (!!_this.$parent.$parent.socket) {					_this.socket = _this.$parent.$parent.socket;					clearInterval(socketInterval);				}			}, 100);		}	}</script>
 |