|  | @@ -6,6 +6,7 @@
 | 
	
		
			
				|  |  |  					<div class="section tabs-container">
 | 
	
		
			
				|  |  |  						<div class="tab-selection">
 | 
	
		
			
				|  |  |  							<button
 | 
	
		
			
				|  |  | +								v-if="isOwnerOrAdmin()"
 | 
	
		
			
				|  |  |  								class="button is-default"
 | 
	
		
			
				|  |  |  								:class="{ selected: tab === 'settings' }"
 | 
	
		
			
				|  |  |  								@click="showTab('settings')"
 | 
	
	
		
			
				|  | @@ -13,6 +14,15 @@
 | 
	
		
			
				|  |  |  								Settings
 | 
	
		
			
				|  |  |  							</button>
 | 
	
		
			
				|  |  |  							<button
 | 
	
		
			
				|  |  | +								v-if="
 | 
	
		
			
				|  |  | +									isOwnerOrAdmin() ||
 | 
	
		
			
				|  |  | +										(loggedIn &&
 | 
	
		
			
				|  |  | +											station.type === 'community' &&
 | 
	
		
			
				|  |  | +											station.partyMode &&
 | 
	
		
			
				|  |  | +											((station.locked &&
 | 
	
		
			
				|  |  | +												isOwnerOrAdmin()) ||
 | 
	
		
			
				|  |  | +												!station.locked))
 | 
	
		
			
				|  |  | +								"
 | 
	
		
			
				|  |  |  								class="button is-default"
 | 
	
		
			
				|  |  |  								:class="{ selected: tab === 'playlists' }"
 | 
	
		
			
				|  |  |  								@click="showTab('playlists')"
 | 
	
	
		
			
				|  | @@ -21,26 +31,60 @@
 | 
	
		
			
				|  |  |  							</button>
 | 
	
		
			
				|  |  |  							<button
 | 
	
		
			
				|  |  |  								v-if="
 | 
	
		
			
				|  |  | -									station.type === 'community' &&
 | 
	
		
			
				|  |  | -										station.partyMode
 | 
	
		
			
				|  |  | +									loggedIn &&
 | 
	
		
			
				|  |  | +										station.type === 'community' &&
 | 
	
		
			
				|  |  | +										station.partyMode &&
 | 
	
		
			
				|  |  | +										((station.locked && isOwnerOrAdmin()) ||
 | 
	
		
			
				|  |  | +											!station.locked)
 | 
	
		
			
				|  |  |  								"
 | 
	
		
			
				|  |  |  								class="button is-default"
 | 
	
		
			
				|  |  | -								:class="{ selected: tab === 'youtube' }"
 | 
	
		
			
				|  |  | -								@click="showTab('youtube')"
 | 
	
		
			
				|  |  | +								:class="{ selected: tab === 'search' }"
 | 
	
		
			
				|  |  | +								@click="showTab('search')"
 | 
	
		
			
				|  |  | +							>
 | 
	
		
			
				|  |  | +								Search
 | 
	
		
			
				|  |  | +							</button>
 | 
	
		
			
				|  |  | +							<button
 | 
	
		
			
				|  |  | +								v-if="isOwnerOrAdmin()"
 | 
	
		
			
				|  |  | +								class="button is-default"
 | 
	
		
			
				|  |  | +								:class="{ selected: tab === 'blacklist' }"
 | 
	
		
			
				|  |  | +								@click="showTab('blacklist')"
 | 
	
		
			
				|  |  |  							>
 | 
	
		
			
				|  |  | -								YouTube
 | 
	
		
			
				|  |  | +								Blacklist
 | 
	
		
			
				|  |  |  							</button>
 | 
	
		
			
				|  |  |  						</div>
 | 
	
		
			
				|  |  | -						<settings class="tab" v-show="tab === 'settings'" />
 | 
	
		
			
				|  |  | -						<youtube-search
 | 
	
		
			
				|  |  | +						<settings
 | 
	
		
			
				|  |  | +							v-if="isOwnerOrAdmin()"
 | 
	
		
			
				|  |  | +							class="tab"
 | 
	
		
			
				|  |  | +							v-show="tab === 'settings'"
 | 
	
		
			
				|  |  | +						/>
 | 
	
		
			
				|  |  | +						<playlists
 | 
	
		
			
				|  |  | +							v-if="
 | 
	
		
			
				|  |  | +								isOwnerOrAdmin() ||
 | 
	
		
			
				|  |  | +									(loggedIn &&
 | 
	
		
			
				|  |  | +										station.type === 'community' &&
 | 
	
		
			
				|  |  | +										station.partyMode &&
 | 
	
		
			
				|  |  | +										((station.locked && isOwnerOrAdmin()) ||
 | 
	
		
			
				|  |  | +											!station.locked))
 | 
	
		
			
				|  |  | +							"
 | 
	
		
			
				|  |  | +							class="tab"
 | 
	
		
			
				|  |  | +							v-show="tab === 'playlists'"
 | 
	
		
			
				|  |  | +						/>
 | 
	
		
			
				|  |  | +						<search
 | 
	
		
			
				|  |  |  							v-if="
 | 
	
		
			
				|  |  | -								station.type === 'community' &&
 | 
	
		
			
				|  |  | -									station.partyMode
 | 
	
		
			
				|  |  | +								loggedIn &&
 | 
	
		
			
				|  |  | +									station.type === 'community' &&
 | 
	
		
			
				|  |  | +									station.partyMode &&
 | 
	
		
			
				|  |  | +									((station.locked && isOwnerOrAdmin()) ||
 | 
	
		
			
				|  |  | +										!station.locked)
 | 
	
		
			
				|  |  |  							"
 | 
	
		
			
				|  |  |  							class="tab"
 | 
	
		
			
				|  |  | -							v-show="tab === 'youtube'"
 | 
	
		
			
				|  |  | +							v-show="tab === 'search'"
 | 
	
		
			
				|  |  | +						/>
 | 
	
		
			
				|  |  | +						<blacklist
 | 
	
		
			
				|  |  | +							v-if="isOwnerOrAdmin()"
 | 
	
		
			
				|  |  | +							class="tab"
 | 
	
		
			
				|  |  | +							v-show="tab === 'blacklist'"
 | 
	
		
			
				|  |  |  						/>
 | 
	
		
			
				|  |  | -						<playlists class="tab" v-show="tab === 'playlists'" />
 | 
	
		
			
				|  |  |  					</div>
 | 
	
		
			
				|  |  |  				</div>
 | 
	
		
			
				|  |  |  				<div class="right-section">
 | 
	
	
		
			
				|  | @@ -66,7 +110,7 @@
 | 
	
		
			
				|  |  |  				<i class="material-icons icon-with-button">queue</i>
 | 
	
		
			
				|  |  |  				<span class="optional-desktop-only-text"> Request Song </span>
 | 
	
		
			
				|  |  |  			</button>
 | 
	
		
			
				|  |  | -			<div class="right">
 | 
	
		
			
				|  |  | +			<div v-if="isOwnerOrAdmin()" class="right">
 | 
	
		
			
				|  |  |  				<confirm @confirm="clearAndRefillStationQueue()">
 | 
	
		
			
				|  |  |  					<a class="button is-danger">
 | 
	
		
			
				|  |  |  						Clear and refill station queue
 | 
	
	
		
			
				|  | @@ -95,7 +139,8 @@ import Modal from "../../Modal.vue";
 | 
	
		
			
				|  |  |  import Queue from "../../../pages/Station/Sidebar/Queue.vue";
 | 
	
		
			
				|  |  |  import Settings from "./Tabs/Settings.vue";
 | 
	
		
			
				|  |  |  import Playlists from "./Tabs/Playlists.vue";
 | 
	
		
			
				|  |  | -import YoutubeSearch from "./Tabs/YoutubeSearch.vue";
 | 
	
		
			
				|  |  | +import Search from "./Tabs/Search.vue";
 | 
	
		
			
				|  |  | +import Blacklist from "./Tabs/Blacklist.vue";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |  	components: {
 | 
	
	
		
			
				|  | @@ -104,7 +149,8 @@ export default {
 | 
	
		
			
				|  |  |  		Queue,
 | 
	
		
			
				|  |  |  		Settings,
 | 
	
		
			
				|  |  |  		Playlists,
 | 
	
		
			
				|  |  | -		YoutubeSearch
 | 
	
		
			
				|  |  | +		Search,
 | 
	
		
			
				|  |  | +		Blacklist
 | 
	
		
			
				|  |  |  	},
 | 
	
		
			
				|  |  |  	mixins: [TabQueryHandler],
 | 
	
		
			
				|  |  |  	props: {
 | 
	
	
		
			
				|  | @@ -113,12 +159,15 @@ export default {
 | 
	
		
			
				|  |  |  	},
 | 
	
		
			
				|  |  |  	data() {
 | 
	
		
			
				|  |  |  		return {
 | 
	
		
			
				|  |  | -			tab: "settings"
 | 
	
		
			
				|  |  | +			tab: "playlists"
 | 
	
		
			
				|  |  |  		};
 | 
	
		
			
				|  |  |  	},
 | 
	
		
			
				|  |  |  	computed: {
 | 
	
		
			
				|  |  |  		...mapState({
 | 
	
		
			
				|  |  | -			loggedIn: state => state.user.auth.loggedIn
 | 
	
		
			
				|  |  | +			loggedIn: state => state.user.auth.loggedIn,
 | 
	
		
			
				|  |  | +			userId: state => state.user.auth.userId,
 | 
	
		
			
				|  |  | +			role: state => state.user.auth.role
 | 
	
		
			
				|  |  | +		}),
 | 
	
		
			
				|  |  |  		}),
 | 
	
		
			
				|  |  |  		...mapState("modals/manageStation", {
 | 
	
		
			
				|  |  |  			station: state => state.station,
 | 
	
	
		
			
				|  | @@ -166,6 +215,15 @@ export default {
 | 
	
		
			
				|  |  |  		this.clearStation();
 | 
	
		
			
				|  |  |  	},
 | 
	
		
			
				|  |  |  	methods: {
 | 
	
		
			
				|  |  | +		isOwner() {
 | 
	
		
			
				|  |  | +			return this.loggedIn && this.userId === this.station.owner;
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +		isAdmin() {
 | 
	
		
			
				|  |  | +			return this.loggedIn && this.role === "admin";
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +		isOwnerOrAdmin() {
 | 
	
		
			
				|  |  | +			return this.isOwner() || this.isAdmin();
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		clearAndRefillStationQueue() {
 | 
	
		
			
				|  |  |  			this.socket.dispatch(
 | 
	
		
			
				|  |  |  				"stations.clearAndRefillStationQueue",
 |