|  | @@ -1,859 +0,0 @@
 | 
	
		
			
				|  |  | -<template>
 | 
	
		
			
				|  |  | -	<div v-if="isUser">
 | 
	
		
			
				|  |  | -		<metadata :title="`Profile | ${user.username}`" />
 | 
	
		
			
				|  |  | -		<edit-playlist v-if="modals.editPlaylist" />
 | 
	
		
			
				|  |  | -		<create-playlist v-if="modals.createPlaylist" />
 | 
	
		
			
				|  |  | -		<main-header />
 | 
	
		
			
				|  |  | -		<div class="container">
 | 
	
		
			
				|  |  | -			<div class="info-section">
 | 
	
		
			
				|  |  | -				<div class="picture-name-row">
 | 
	
		
			
				|  |  | -					<profile-picture :avatar="user.avatar" :name="user.name" />
 | 
	
		
			
				|  |  | -					<div>
 | 
	
		
			
				|  |  | -						<div class="name-role-row">
 | 
	
		
			
				|  |  | -							<p class="name">{{ user.name }}</p>
 | 
	
		
			
				|  |  | -							<span
 | 
	
		
			
				|  |  | -								class="role admin"
 | 
	
		
			
				|  |  | -								v-if="user.role === 'admin'"
 | 
	
		
			
				|  |  | -								>admin</span
 | 
	
		
			
				|  |  | -							>
 | 
	
		
			
				|  |  | -						</div>
 | 
	
		
			
				|  |  | -						<h2 class="username">@{{ user.username }}</h2>
 | 
	
		
			
				|  |  | -					</div>
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -				<div
 | 
	
		
			
				|  |  | -					class="buttons"
 | 
	
		
			
				|  |  | -					v-if="userId === user._id || role === 'admin'"
 | 
	
		
			
				|  |  | -				>
 | 
	
		
			
				|  |  | -					<router-link
 | 
	
		
			
				|  |  | -						:to="`/admin/users?userId=${user._id}`"
 | 
	
		
			
				|  |  | -						class="button is-primary"
 | 
	
		
			
				|  |  | -						v-if="role === 'admin'"
 | 
	
		
			
				|  |  | -					>
 | 
	
		
			
				|  |  | -						Edit
 | 
	
		
			
				|  |  | -					</router-link>
 | 
	
		
			
				|  |  | -					<router-link
 | 
	
		
			
				|  |  | -						to="/settings"
 | 
	
		
			
				|  |  | -						class="button is-primary"
 | 
	
		
			
				|  |  | -						v-if="userId === user._id"
 | 
	
		
			
				|  |  | -					>
 | 
	
		
			
				|  |  | -						Settings
 | 
	
		
			
				|  |  | -					</router-link>
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -				<div class="bio-row" v-if="user.bio">
 | 
	
		
			
				|  |  | -					<i class="material-icons">notes</i>
 | 
	
		
			
				|  |  | -					<p>{{ user.bio }}</p>
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -				<div
 | 
	
		
			
				|  |  | -					class="date-location-row"
 | 
	
		
			
				|  |  | -					v-if="user.createdAt || user.location"
 | 
	
		
			
				|  |  | -				>
 | 
	
		
			
				|  |  | -					<div class="date" v-if="user.createdAt">
 | 
	
		
			
				|  |  | -						<i class="material-icons">calendar_today</i>
 | 
	
		
			
				|  |  | -						<p>{{ user.createdAt }}</p>
 | 
	
		
			
				|  |  | -					</div>
 | 
	
		
			
				|  |  | -					<div class="location" v-if="user.location">
 | 
	
		
			
				|  |  | -						<i class="material-icons">location_on</i>
 | 
	
		
			
				|  |  | -						<p>{{ user.location }}</p>
 | 
	
		
			
				|  |  | -					</div>
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -			</div>
 | 
	
		
			
				|  |  | -			<div class="bottom-section">
 | 
	
		
			
				|  |  | -				<div class="buttons">
 | 
	
		
			
				|  |  | -					<button
 | 
	
		
			
				|  |  | -						:class="{ active: tab === 'recent-activity' }"
 | 
	
		
			
				|  |  | -						@click="showTab('recent-activity')"
 | 
	
		
			
				|  |  | -					>
 | 
	
		
			
				|  |  | -						Recent activity
 | 
	
		
			
				|  |  | -					</button>
 | 
	
		
			
				|  |  | -					<button
 | 
	
		
			
				|  |  | -						:class="{ active: tab === 'playlists' }"
 | 
	
		
			
				|  |  | -						@click="showTab('playlists')"
 | 
	
		
			
				|  |  | -					>
 | 
	
		
			
				|  |  | -						Playlists
 | 
	
		
			
				|  |  | -					</button>
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -				<div
 | 
	
		
			
				|  |  | -					class="content recent-activity-tab"
 | 
	
		
			
				|  |  | -					v-if="tab === 'recent-activity'"
 | 
	
		
			
				|  |  | -				>
 | 
	
		
			
				|  |  | -					<div v-if="activities.length > 0">
 | 
	
		
			
				|  |  | -						<h4 class="section-title">Recent activity</h4>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						<p class="section-description">
 | 
	
		
			
				|  |  | -							This is a log of all actions
 | 
	
		
			
				|  |  | -							{{
 | 
	
		
			
				|  |  | -								userId === user._id
 | 
	
		
			
				|  |  | -									? "you have"
 | 
	
		
			
				|  |  | -									: `${user.name} has`
 | 
	
		
			
				|  |  | -							}}
 | 
	
		
			
				|  |  | -							taken recently.
 | 
	
		
			
				|  |  | -						</p>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						<hr class="section-horizontal-rule" />
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						<div
 | 
	
		
			
				|  |  | -							class="item activity-item universal-item"
 | 
	
		
			
				|  |  | -							v-for="activity in sortedActivities"
 | 
	
		
			
				|  |  | -							:key="activity._id"
 | 
	
		
			
				|  |  | -						>
 | 
	
		
			
				|  |  | -							<div class="thumbnail">
 | 
	
		
			
				|  |  | -								<img :src="activity.thumbnail" alt="" />
 | 
	
		
			
				|  |  | -								<i class="material-icons activity-type-icon">{{
 | 
	
		
			
				|  |  | -									activity.icon
 | 
	
		
			
				|  |  | -								}}</i>
 | 
	
		
			
				|  |  | -							</div>
 | 
	
		
			
				|  |  | -							<div class="left-part">
 | 
	
		
			
				|  |  | -								<p
 | 
	
		
			
				|  |  | -									class="item-title"
 | 
	
		
			
				|  |  | -									v-html="activity.message"
 | 
	
		
			
				|  |  | -								></p>
 | 
	
		
			
				|  |  | -								<p class="item-description">
 | 
	
		
			
				|  |  | -									{{
 | 
	
		
			
				|  |  | -										formatDistance(
 | 
	
		
			
				|  |  | -											parseISO(activity.createdAt),
 | 
	
		
			
				|  |  | -											new Date(),
 | 
	
		
			
				|  |  | -											{ addSuffix: true }
 | 
	
		
			
				|  |  | -										)
 | 
	
		
			
				|  |  | -									}}
 | 
	
		
			
				|  |  | -								</p>
 | 
	
		
			
				|  |  | -							</div>
 | 
	
		
			
				|  |  | -							<div class="universal-item-actions">
 | 
	
		
			
				|  |  | -								<a
 | 
	
		
			
				|  |  | -									href="#"
 | 
	
		
			
				|  |  | -									@click.prevent="hideActivity(activity._id)"
 | 
	
		
			
				|  |  | -								>
 | 
	
		
			
				|  |  | -									<i class="material-icons hide-icon"
 | 
	
		
			
				|  |  | -										>visibility_off</i
 | 
	
		
			
				|  |  | -									>
 | 
	
		
			
				|  |  | -								</a>
 | 
	
		
			
				|  |  | -							</div>
 | 
	
		
			
				|  |  | -						</div>
 | 
	
		
			
				|  |  | -					</div>
 | 
	
		
			
				|  |  | -					<div v-else>
 | 
	
		
			
				|  |  | -						<h3>No recent activity.</h3>
 | 
	
		
			
				|  |  | -					</div>
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -				<div class="content playlists-tab" v-if="tab === 'playlists'">
 | 
	
		
			
				|  |  | -					<div v-if="playlists.length > 0">
 | 
	
		
			
				|  |  | -						<h4 class="section-title">
 | 
	
		
			
				|  |  | -							{{ user._id === userId ? "My" : null }}
 | 
	
		
			
				|  |  | -							Playlists
 | 
	
		
			
				|  |  | -						</h4>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						<p class="section-description">
 | 
	
		
			
				|  |  | -							View
 | 
	
		
			
				|  |  | -							{{
 | 
	
		
			
				|  |  | -								userId === user._id
 | 
	
		
			
				|  |  | -									? "and manage your personal"
 | 
	
		
			
				|  |  | -									: `${user.name}'s`
 | 
	
		
			
				|  |  | -							}}
 | 
	
		
			
				|  |  | -							playlists.
 | 
	
		
			
				|  |  | -						</p>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						<hr class="section-horizontal-rule" />
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						<draggable
 | 
	
		
			
				|  |  | -							class="menu-list scrollable-list"
 | 
	
		
			
				|  |  | -							v-if="playlists.length > 0"
 | 
	
		
			
				|  |  | -							v-model="playlists"
 | 
	
		
			
				|  |  | -							v-bind="dragOptions"
 | 
	
		
			
				|  |  | -							@start="drag = true"
 | 
	
		
			
				|  |  | -							@end="drag = false"
 | 
	
		
			
				|  |  | -							@change="savePlaylistOrder"
 | 
	
		
			
				|  |  | -						>
 | 
	
		
			
				|  |  | -							<transition-group
 | 
	
		
			
				|  |  | -								type="transition"
 | 
	
		
			
				|  |  | -								:name="
 | 
	
		
			
				|  |  | -									!drag ? 'draggable-list-transition' : null
 | 
	
		
			
				|  |  | -								"
 | 
	
		
			
				|  |  | -							>
 | 
	
		
			
				|  |  | -								<div
 | 
	
		
			
				|  |  | -									class="item item-draggable"
 | 
	
		
			
				|  |  | -									v-for="playlist in playlists"
 | 
	
		
			
				|  |  | -									:key="playlist._id"
 | 
	
		
			
				|  |  | -								>
 | 
	
		
			
				|  |  | -									<playlist-item
 | 
	
		
			
				|  |  | -										v-if="
 | 
	
		
			
				|  |  | -											playlist.privacy === 'public' ||
 | 
	
		
			
				|  |  | -												(playlist.privacy ===
 | 
	
		
			
				|  |  | -													'private' &&
 | 
	
		
			
				|  |  | -													playlist.createdBy ===
 | 
	
		
			
				|  |  | -														userId)
 | 
	
		
			
				|  |  | -										"
 | 
	
		
			
				|  |  | -										:playlist="playlist"
 | 
	
		
			
				|  |  | -									>
 | 
	
		
			
				|  |  | -										<div slot="actions">
 | 
	
		
			
				|  |  | -											<i
 | 
	
		
			
				|  |  | -												v-if="user._id === userId"
 | 
	
		
			
				|  |  | -												@click="
 | 
	
		
			
				|  |  | -													showPlaylist(playlist._id)
 | 
	
		
			
				|  |  | -												"
 | 
	
		
			
				|  |  | -												class="material-icons edit-icon"
 | 
	
		
			
				|  |  | -												>edit</i
 | 
	
		
			
				|  |  | -											>
 | 
	
		
			
				|  |  | -											<i
 | 
	
		
			
				|  |  | -												v-else
 | 
	
		
			
				|  |  | -												@click="
 | 
	
		
			
				|  |  | -													showPlaylist(playlist._id)
 | 
	
		
			
				|  |  | -												"
 | 
	
		
			
				|  |  | -												class="material-icons view-icon"
 | 
	
		
			
				|  |  | -												>visibility</i
 | 
	
		
			
				|  |  | -											>
 | 
	
		
			
				|  |  | -										</div>
 | 
	
		
			
				|  |  | -									</playlist-item>
 | 
	
		
			
				|  |  | -								</div>
 | 
	
		
			
				|  |  | -							</transition-group>
 | 
	
		
			
				|  |  | -						</draggable>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						<button
 | 
	
		
			
				|  |  | -							v-if="user._id === userId"
 | 
	
		
			
				|  |  | -							class="button is-primary"
 | 
	
		
			
				|  |  | -							id="create-new-playlist-button"
 | 
	
		
			
				|  |  | -							@click="
 | 
	
		
			
				|  |  | -								openModal({
 | 
	
		
			
				|  |  | -									sector: 'station',
 | 
	
		
			
				|  |  | -									modal: 'createPlaylist'
 | 
	
		
			
				|  |  | -								})
 | 
	
		
			
				|  |  | -							"
 | 
	
		
			
				|  |  | -						>
 | 
	
		
			
				|  |  | -							Create new playlist
 | 
	
		
			
				|  |  | -						</button>
 | 
	
		
			
				|  |  | -					</div>
 | 
	
		
			
				|  |  | -					<div v-else>
 | 
	
		
			
				|  |  | -						<h3>No playlists here.</h3>
 | 
	
		
			
				|  |  | -					</div>
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -			</div>
 | 
	
		
			
				|  |  | -		</div>
 | 
	
		
			
				|  |  | -		<main-footer />
 | 
	
		
			
				|  |  | -	</div>
 | 
	
		
			
				|  |  | -</template>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -<script>
 | 
	
		
			
				|  |  | -import { mapState, mapActions } from "vuex";
 | 
	
		
			
				|  |  | -import { format, formatDistance, parseISO } from "date-fns";
 | 
	
		
			
				|  |  | -import Toast from "toasters";
 | 
	
		
			
				|  |  | -import draggable from "vuedraggable";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import TabQueryHandler from "../mixins/TabQueryHandler.vue";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import ProfilePicture from "../components/ui/ProfilePicture.vue";
 | 
	
		
			
				|  |  | -import PlaylistItem from "../components/ui/PlaylistItem.vue";
 | 
	
		
			
				|  |  | -import SortablePlaylists from "../mixins/SortablePlaylists.vue";
 | 
	
		
			
				|  |  | -import MainHeader from "../components/layout/MainHeader.vue";
 | 
	
		
			
				|  |  | -import MainFooter from "../components/layout/MainFooter.vue";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import io from "../io";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -export default {
 | 
	
		
			
				|  |  | -	components: {
 | 
	
		
			
				|  |  | -		MainHeader,
 | 
	
		
			
				|  |  | -		MainFooter,
 | 
	
		
			
				|  |  | -		PlaylistItem,
 | 
	
		
			
				|  |  | -		ProfilePicture,
 | 
	
		
			
				|  |  | -		CreatePlaylist: () => import("../components/modals/CreatePlaylist.vue"),
 | 
	
		
			
				|  |  | -		EditPlaylist: () =>
 | 
	
		
			
				|  |  | -			import("../components/modals/EditPlaylist/index.vue"),
 | 
	
		
			
				|  |  | -		draggable
 | 
	
		
			
				|  |  | -	},
 | 
	
		
			
				|  |  | -	mixins: [SortablePlaylists, TabQueryHandler],
 | 
	
		
			
				|  |  | -	data() {
 | 
	
		
			
				|  |  | -		return {
 | 
	
		
			
				|  |  | -			user: {},
 | 
	
		
			
				|  |  | -			isUser: false,
 | 
	
		
			
				|  |  | -			tab: "recent-activity",
 | 
	
		
			
				|  |  | -			playlists: [],
 | 
	
		
			
				|  |  | -			activities: []
 | 
	
		
			
				|  |  | -		};
 | 
	
		
			
				|  |  | -	},
 | 
	
		
			
				|  |  | -	computed: {
 | 
	
		
			
				|  |  | -		...mapState({
 | 
	
		
			
				|  |  | -			role: state => state.user.auth.role,
 | 
	
		
			
				|  |  | -			userId: state => state.user.auth.userId,
 | 
	
		
			
				|  |  | -			...mapState("modalVisibility", {
 | 
	
		
			
				|  |  | -				modals: state => state.modals.station
 | 
	
		
			
				|  |  | -			})
 | 
	
		
			
				|  |  | -		}),
 | 
	
		
			
				|  |  | -		sortedActivities() {
 | 
	
		
			
				|  |  | -			const { activities } = this;
 | 
	
		
			
				|  |  | -			return activities.sort(
 | 
	
		
			
				|  |  | -				(x, y) => new Date(y.createdAt) - new Date(x.createdAt)
 | 
	
		
			
				|  |  | -			);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	},
 | 
	
		
			
				|  |  | -	mounted() {
 | 
	
		
			
				|  |  | -		if (
 | 
	
		
			
				|  |  | -			this.$route.query.tab === "recent-activity" ||
 | 
	
		
			
				|  |  | -			this.$route.query.tab === "playlists"
 | 
	
		
			
				|  |  | -		)
 | 
	
		
			
				|  |  | -			this.tab = this.$route.query.tab;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		io.getSocket(socket => {
 | 
	
		
			
				|  |  | -			this.socket = socket;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			this.socket.emit(
 | 
	
		
			
				|  |  | -				"users.findByUsername",
 | 
	
		
			
				|  |  | -				this.$route.params.username,
 | 
	
		
			
				|  |  | -				res => {
 | 
	
		
			
				|  |  | -					if (res.status === "error") this.$router.go("/404");
 | 
	
		
			
				|  |  | -					else {
 | 
	
		
			
				|  |  | -						this.user = res.data;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.user.createdAt = format(
 | 
	
		
			
				|  |  | -							parseISO(this.user.createdAt),
 | 
	
		
			
				|  |  | -							"MMMM do yyyy"
 | 
	
		
			
				|  |  | -						);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.isUser = true;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						if (this.user._id !== this.userId) {
 | 
	
		
			
				|  |  | -							this.socket.emit(
 | 
	
		
			
				|  |  | -								"apis.joinRoom",
 | 
	
		
			
				|  |  | -								`profile-${res.data._id}`,
 | 
	
		
			
				|  |  | -								() => {}
 | 
	
		
			
				|  |  | -							);
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.socket.emit(
 | 
	
		
			
				|  |  | -							"playlists.indexForUser",
 | 
	
		
			
				|  |  | -							this.user._id,
 | 
	
		
			
				|  |  | -							res => {
 | 
	
		
			
				|  |  | -								if (res.status === "success")
 | 
	
		
			
				|  |  | -									this.playlists = res.data;
 | 
	
		
			
				|  |  | -								this.orderOfPlaylists = this.calculatePlaylistOrder(); // order in regards to the database
 | 
	
		
			
				|  |  | -							}
 | 
	
		
			
				|  |  | -						);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.socket.on("event:playlist.create", playlist => {
 | 
	
		
			
				|  |  | -							this.playlists.push(playlist);
 | 
	
		
			
				|  |  | -						});
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.socket.on("event:playlist.delete", playlistId => {
 | 
	
		
			
				|  |  | -							this.playlists.forEach((playlist, index) => {
 | 
	
		
			
				|  |  | -								if (playlist._id === playlistId) {
 | 
	
		
			
				|  |  | -									this.playlists.splice(index, 1);
 | 
	
		
			
				|  |  | -								}
 | 
	
		
			
				|  |  | -							});
 | 
	
		
			
				|  |  | -						});
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.socket.on("event:playlist.addSong", data => {
 | 
	
		
			
				|  |  | -							this.playlists.forEach((playlist, index) => {
 | 
	
		
			
				|  |  | -								if (playlist._id === data.playlistId) {
 | 
	
		
			
				|  |  | -									this.playlists[index].songs.push(data.song);
 | 
	
		
			
				|  |  | -								}
 | 
	
		
			
				|  |  | -							});
 | 
	
		
			
				|  |  | -						});
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.socket.on("event:playlist.removeSong", data => {
 | 
	
		
			
				|  |  | -							this.playlists.forEach((playlist, index) => {
 | 
	
		
			
				|  |  | -								if (playlist._id === data.playlistId) {
 | 
	
		
			
				|  |  | -									this.playlists[index].songs.forEach(
 | 
	
		
			
				|  |  | -										(song, index2) => {
 | 
	
		
			
				|  |  | -											if (song.songId === data.songId) {
 | 
	
		
			
				|  |  | -												this.playlists[
 | 
	
		
			
				|  |  | -													index
 | 
	
		
			
				|  |  | -												].songs.splice(index2, 1);
 | 
	
		
			
				|  |  | -											}
 | 
	
		
			
				|  |  | -										}
 | 
	
		
			
				|  |  | -									);
 | 
	
		
			
				|  |  | -								}
 | 
	
		
			
				|  |  | -							});
 | 
	
		
			
				|  |  | -						});
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.socket.on(
 | 
	
		
			
				|  |  | -							"event:playlist.updateDisplayName",
 | 
	
		
			
				|  |  | -							data => {
 | 
	
		
			
				|  |  | -								this.playlists.forEach((playlist, index) => {
 | 
	
		
			
				|  |  | -									if (playlist._id === data.playlistId) {
 | 
	
		
			
				|  |  | -										this.playlists[index].displayName =
 | 
	
		
			
				|  |  | -											data.displayName;
 | 
	
		
			
				|  |  | -									}
 | 
	
		
			
				|  |  | -								});
 | 
	
		
			
				|  |  | -							}
 | 
	
		
			
				|  |  | -						);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.socket.on("event:playlist.updatePrivacy", data => {
 | 
	
		
			
				|  |  | -							this.playlists.forEach((playlist, index) => {
 | 
	
		
			
				|  |  | -								if (playlist._id === data.playlist._id) {
 | 
	
		
			
				|  |  | -									this.playlists[index].privacy =
 | 
	
		
			
				|  |  | -										data.playlist.privacy;
 | 
	
		
			
				|  |  | -								}
 | 
	
		
			
				|  |  | -							});
 | 
	
		
			
				|  |  | -						});
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						this.socket.on(
 | 
	
		
			
				|  |  | -							"event:user.orderOfPlaylists.changed",
 | 
	
		
			
				|  |  | -							orderOfPlaylists => {
 | 
	
		
			
				|  |  | -								const sortedPlaylists = [];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -								this.playlists.forEach(playlist => {
 | 
	
		
			
				|  |  | -									sortedPlaylists[
 | 
	
		
			
				|  |  | -										orderOfPlaylists.indexOf(playlist._id)
 | 
	
		
			
				|  |  | -									] = playlist;
 | 
	
		
			
				|  |  | -								});
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -								this.playlists = sortedPlaylists;
 | 
	
		
			
				|  |  | -								this.orderOfPlaylists = this.calculatePlaylistOrder();
 | 
	
		
			
				|  |  | -							}
 | 
	
		
			
				|  |  | -						);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						if (this.user._id === this.userId) {
 | 
	
		
			
				|  |  | -							this.socket.emit(
 | 
	
		
			
				|  |  | -								"activities.getSet",
 | 
	
		
			
				|  |  | -								this.userId,
 | 
	
		
			
				|  |  | -								1,
 | 
	
		
			
				|  |  | -								res => {
 | 
	
		
			
				|  |  | -									if (res.status === "success") {
 | 
	
		
			
				|  |  | -										for (
 | 
	
		
			
				|  |  | -											let a = 0;
 | 
	
		
			
				|  |  | -											a < res.data.length;
 | 
	
		
			
				|  |  | -											a += 1
 | 
	
		
			
				|  |  | -										) {
 | 
	
		
			
				|  |  | -											this.formatActivity(
 | 
	
		
			
				|  |  | -												res.data[a],
 | 
	
		
			
				|  |  | -												activity => {
 | 
	
		
			
				|  |  | -													this.activities.unshift(
 | 
	
		
			
				|  |  | -														activity
 | 
	
		
			
				|  |  | -													);
 | 
	
		
			
				|  |  | -												}
 | 
	
		
			
				|  |  | -											);
 | 
	
		
			
				|  |  | -										}
 | 
	
		
			
				|  |  | -									}
 | 
	
		
			
				|  |  | -								}
 | 
	
		
			
				|  |  | -							);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -							this.socket.on(
 | 
	
		
			
				|  |  | -								"event:activity.create",
 | 
	
		
			
				|  |  | -								activity => {
 | 
	
		
			
				|  |  | -									console.log(activity);
 | 
	
		
			
				|  |  | -									this.formatActivity(activity, activity => {
 | 
	
		
			
				|  |  | -										this.activities.unshift(activity);
 | 
	
		
			
				|  |  | -									});
 | 
	
		
			
				|  |  | -								}
 | 
	
		
			
				|  |  | -							);
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			);
 | 
	
		
			
				|  |  | -		});
 | 
	
		
			
				|  |  | -	},
 | 
	
		
			
				|  |  | -	methods: {
 | 
	
		
			
				|  |  | -		formatDistance,
 | 
	
		
			
				|  |  | -		parseISO,
 | 
	
		
			
				|  |  | -		showPlaylist(playlistId) {
 | 
	
		
			
				|  |  | -			this.editPlaylist(playlistId);
 | 
	
		
			
				|  |  | -			this.openModal({ sector: "station", modal: "editPlaylist" });
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  | -		hideActivity(activityId) {
 | 
	
		
			
				|  |  | -			this.socket.emit("activities.hideActivity", activityId, res => {
 | 
	
		
			
				|  |  | -				if (res.status === "success") {
 | 
	
		
			
				|  |  | -					this.activities = this.activities.filter(
 | 
	
		
			
				|  |  | -						activity => activity._id !== activityId
 | 
	
		
			
				|  |  | -					);
 | 
	
		
			
				|  |  | -				} else {
 | 
	
		
			
				|  |  | -					new Toast({ content: res.message, timeout: 3000 });
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			});
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  | -		formatActivity(res, cb) {
 | 
	
		
			
				|  |  | -			console.log("activity", res);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			const icons = {
 | 
	
		
			
				|  |  | -				created_account: "account_circle",
 | 
	
		
			
				|  |  | -				created_station: "radio",
 | 
	
		
			
				|  |  | -				deleted_station: "delete",
 | 
	
		
			
				|  |  | -				created_playlist: "playlist_add_check",
 | 
	
		
			
				|  |  | -				deleted_playlist: "delete_sweep",
 | 
	
		
			
				|  |  | -				liked_song: "favorite",
 | 
	
		
			
				|  |  | -				added_song_to_playlist: "playlist_add",
 | 
	
		
			
				|  |  | -				added_songs_to_playlist: "playlist_add"
 | 
	
		
			
				|  |  | -			};
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			const activity = {
 | 
	
		
			
				|  |  | -				...res,
 | 
	
		
			
				|  |  | -				thumbnail: "",
 | 
	
		
			
				|  |  | -				message: "",
 | 
	
		
			
				|  |  | -				icon: ""
 | 
	
		
			
				|  |  | -			};
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			const plural = activity.payload.length > 1;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			activity.icon = icons[activity.activityType];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			if (activity.activityType === "created_account") {
 | 
	
		
			
				|  |  | -				activity.message = "Welcome to Musare!";
 | 
	
		
			
				|  |  | -				return cb(activity);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if (activity.activityType === "created_station") {
 | 
	
		
			
				|  |  | -				this.socket.emit(
 | 
	
		
			
				|  |  | -					"stations.getStationForActivity",
 | 
	
		
			
				|  |  | -					activity.payload[0],
 | 
	
		
			
				|  |  | -					res => {
 | 
	
		
			
				|  |  | -						if (res.status === "success") {
 | 
	
		
			
				|  |  | -							activity.message = `Created the station <strong>${res.data.title}</strong>`;
 | 
	
		
			
				|  |  | -							activity.thumbnail = res.data.thumbnail;
 | 
	
		
			
				|  |  | -							return cb(activity);
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -						activity.message = "Created a station";
 | 
	
		
			
				|  |  | -						return cb(activity);
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if (activity.activityType === "deleted_station") {
 | 
	
		
			
				|  |  | -				activity.message = `Deleted a station`;
 | 
	
		
			
				|  |  | -				return cb(activity);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if (activity.activityType === "created_playlist") {
 | 
	
		
			
				|  |  | -				this.socket.emit(
 | 
	
		
			
				|  |  | -					"playlists.getPlaylistForActivity",
 | 
	
		
			
				|  |  | -					activity.payload[0],
 | 
	
		
			
				|  |  | -					res => {
 | 
	
		
			
				|  |  | -						if (res.status === "success") {
 | 
	
		
			
				|  |  | -							activity.message = `Created the playlist <strong>${res.data.title}</strong>`;
 | 
	
		
			
				|  |  | -							// activity.thumbnail = res.data.thumbnail;
 | 
	
		
			
				|  |  | -							return cb(activity);
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -						activity.message = "Created a playlist";
 | 
	
		
			
				|  |  | -						return cb(activity);
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if (activity.activityType === "deleted_playlist") {
 | 
	
		
			
				|  |  | -				activity.message = `Deleted a playlist`;
 | 
	
		
			
				|  |  | -				return cb(activity);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if (activity.activityType === "liked_song") {
 | 
	
		
			
				|  |  | -				if (plural) {
 | 
	
		
			
				|  |  | -					activity.message = `Liked ${activity.payload.length} songs.`;
 | 
	
		
			
				|  |  | -					return cb(activity);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				this.socket.emit(
 | 
	
		
			
				|  |  | -					"songs.getSongForActivity",
 | 
	
		
			
				|  |  | -					activity.payload[0],
 | 
	
		
			
				|  |  | -					res => {
 | 
	
		
			
				|  |  | -						if (res.status === "success") {
 | 
	
		
			
				|  |  | -							activity.message = `Liked the song <strong>${res.data.title}</strong>`;
 | 
	
		
			
				|  |  | -							activity.thumbnail = res.data.thumbnail;
 | 
	
		
			
				|  |  | -							return cb(activity);
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -						activity.message = "Liked a song";
 | 
	
		
			
				|  |  | -						return cb(activity);
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if (activity.activityType === "added_song_to_playlist") {
 | 
	
		
			
				|  |  | -				this.socket.emit(
 | 
	
		
			
				|  |  | -					"songs.getSongForActivity",
 | 
	
		
			
				|  |  | -					activity.payload[0].songId,
 | 
	
		
			
				|  |  | -					song => {
 | 
	
		
			
				|  |  | -						console.log(song);
 | 
	
		
			
				|  |  | -						this.socket.emit(
 | 
	
		
			
				|  |  | -							"playlists.getPlaylistForActivity",
 | 
	
		
			
				|  |  | -							activity.payload[0].playlistId,
 | 
	
		
			
				|  |  | -							playlist => {
 | 
	
		
			
				|  |  | -								if (song.status === "success") {
 | 
	
		
			
				|  |  | -									if (playlist.status === "success")
 | 
	
		
			
				|  |  | -										activity.message = `Added the song <strong>${song.data.title}</strong> to the playlist <strong>${playlist.data.title}</strong>`;
 | 
	
		
			
				|  |  | -									else
 | 
	
		
			
				|  |  | -										activity.message = `Added the song <strong>${song.data.title}</strong> to a playlist`;
 | 
	
		
			
				|  |  | -									activity.thumbnail = song.data.thumbnail;
 | 
	
		
			
				|  |  | -									return cb(activity);
 | 
	
		
			
				|  |  | -								}
 | 
	
		
			
				|  |  | -								if (playlist.status === "success") {
 | 
	
		
			
				|  |  | -									activity.message = `Added a song to the playlist <strong>${playlist.data.title}</strong>`;
 | 
	
		
			
				|  |  | -									return cb(activity);
 | 
	
		
			
				|  |  | -								}
 | 
	
		
			
				|  |  | -								activity.message = "Added a song to a playlist";
 | 
	
		
			
				|  |  | -								return cb(activity);
 | 
	
		
			
				|  |  | -							}
 | 
	
		
			
				|  |  | -						);
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if (activity.activityType === "added_songs_to_playlist") {
 | 
	
		
			
				|  |  | -				activity.message = `Added ${activity.payload.length} songs to a playlist`;
 | 
	
		
			
				|  |  | -				return cb(activity);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			return false;
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  | -		...mapActions("modalVisibility", ["openModal"]),
 | 
	
		
			
				|  |  | -		...mapActions("user/playlists", ["editPlaylist"])
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | -</script>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -<style lang="scss" scoped>
 | 
	
		
			
				|  |  | -@media only screen and (max-width: 750px) {
 | 
	
		
			
				|  |  | -	.info-section {
 | 
	
		
			
				|  |  | -		margin-top: 0 !important;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.picture-name-row {
 | 
	
		
			
				|  |  | -			flex-direction: column !important;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.name-role-row {
 | 
	
		
			
				|  |  | -			margin-top: 24px;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.buttons .button:not(:last-of-type) {
 | 
	
		
			
				|  |  | -			margin-bottom: 10px;
 | 
	
		
			
				|  |  | -			margin-right: 5px;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.date-location-row {
 | 
	
		
			
				|  |  | -			flex-direction: column;
 | 
	
		
			
				|  |  | -			width: auto !important;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.date-location-row > div:nth-child(2),
 | 
	
		
			
				|  |  | -		.buttons .button:nth-child(2) {
 | 
	
		
			
				|  |  | -			margin-left: 0 !important;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.bottom-section {
 | 
	
		
			
				|  |  | -		flex-direction: column;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.content {
 | 
	
		
			
				|  |  | -		margin: 24px 0;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -.info-section {
 | 
	
		
			
				|  |  | -	width: 912px;
 | 
	
		
			
				|  |  | -	max-width: 100%;
 | 
	
		
			
				|  |  | -	margin-left: auto;
 | 
	
		
			
				|  |  | -	margin-right: auto;
 | 
	
		
			
				|  |  | -	margin-top: 32px;
 | 
	
		
			
				|  |  | -	padding: 24px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.picture-name-row {
 | 
	
		
			
				|  |  | -		display: flex;
 | 
	
		
			
				|  |  | -		flex-direction: row;
 | 
	
		
			
				|  |  | -		align-items: center;
 | 
	
		
			
				|  |  | -		justify-content: center;
 | 
	
		
			
				|  |  | -		margin-bottom: 24px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.profile-picture {
 | 
	
		
			
				|  |  | -			margin-right: 32px;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.name-role-row {
 | 
	
		
			
				|  |  | -		display: flex;
 | 
	
		
			
				|  |  | -		flex-direction: row;
 | 
	
		
			
				|  |  | -		align-items: center;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.name {
 | 
	
		
			
				|  |  | -		font-size: 34px;
 | 
	
		
			
				|  |  | -		line-height: 40px;
 | 
	
		
			
				|  |  | -		color: var(--dark-grey-4);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.role {
 | 
	
		
			
				|  |  | -		padding: 2px 24px;
 | 
	
		
			
				|  |  | -		color: var(--white);
 | 
	
		
			
				|  |  | -		text-transform: uppercase;
 | 
	
		
			
				|  |  | -		font-size: 12px;
 | 
	
		
			
				|  |  | -		line-height: 14px;
 | 
	
		
			
				|  |  | -		height: 18px;
 | 
	
		
			
				|  |  | -		border-radius: 5px;
 | 
	
		
			
				|  |  | -		margin-left: 12px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		&.admin {
 | 
	
		
			
				|  |  | -			background-color: var(--red);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.username {
 | 
	
		
			
				|  |  | -		font-size: 24px;
 | 
	
		
			
				|  |  | -		line-height: 28px;
 | 
	
		
			
				|  |  | -		color: var(--dark-grey);
 | 
	
		
			
				|  |  | -		margin: 0;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.buttons {
 | 
	
		
			
				|  |  | -		width: 388px;
 | 
	
		
			
				|  |  | -		max-width: 100%;
 | 
	
		
			
				|  |  | -		display: flex;
 | 
	
		
			
				|  |  | -		flex-direction: row;
 | 
	
		
			
				|  |  | -		margin-left: auto;
 | 
	
		
			
				|  |  | -		margin-right: auto;
 | 
	
		
			
				|  |  | -		margin-bottom: 24px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.button {
 | 
	
		
			
				|  |  | -			flex: 1;
 | 
	
		
			
				|  |  | -			font-size: 17px;
 | 
	
		
			
				|  |  | -			line-height: 20px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			&:nth-child(2) {
 | 
	
		
			
				|  |  | -				margin-left: 20px;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.bio-row,
 | 
	
		
			
				|  |  | -	.date-location-row {
 | 
	
		
			
				|  |  | -		i {
 | 
	
		
			
				|  |  | -			font-size: 24px;
 | 
	
		
			
				|  |  | -			color: var(--dark-grey-2);
 | 
	
		
			
				|  |  | -			margin-right: 12px;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		p {
 | 
	
		
			
				|  |  | -			font-size: 17px;
 | 
	
		
			
				|  |  | -			line-height: 20px;
 | 
	
		
			
				|  |  | -			color: var(--dark-grey-2);
 | 
	
		
			
				|  |  | -			word-break: break-word;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.bio-row {
 | 
	
		
			
				|  |  | -		max-width: 608px;
 | 
	
		
			
				|  |  | -		margin-bottom: 24px;
 | 
	
		
			
				|  |  | -		margin-left: auto;
 | 
	
		
			
				|  |  | -		margin-right: auto;
 | 
	
		
			
				|  |  | -		display: flex;
 | 
	
		
			
				|  |  | -		width: max-content;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.date-location-row {
 | 
	
		
			
				|  |  | -		max-width: 608px;
 | 
	
		
			
				|  |  | -		margin-left: auto;
 | 
	
		
			
				|  |  | -		margin-right: auto;
 | 
	
		
			
				|  |  | -		margin-bottom: 24px;
 | 
	
		
			
				|  |  | -		display: flex;
 | 
	
		
			
				|  |  | -		width: max-content;
 | 
	
		
			
				|  |  | -		margin-bottom: 24px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		> div:nth-child(2) {
 | 
	
		
			
				|  |  | -			margin-left: 48px;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.date,
 | 
	
		
			
				|  |  | -	.location {
 | 
	
		
			
				|  |  | -		display: flex;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -.bottom-section {
 | 
	
		
			
				|  |  | -	width: 962px;
 | 
	
		
			
				|  |  | -	max-width: 100%;
 | 
	
		
			
				|  |  | -	margin-left: auto;
 | 
	
		
			
				|  |  | -	margin-right: auto;
 | 
	
		
			
				|  |  | -	padding: 24px;
 | 
	
		
			
				|  |  | -	display: flex;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.buttons {
 | 
	
		
			
				|  |  | -		height: 100%;
 | 
	
		
			
				|  |  | -		width: 250px;
 | 
	
		
			
				|  |  | -		margin-right: 64px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		button {
 | 
	
		
			
				|  |  | -			outline: none;
 | 
	
		
			
				|  |  | -			border: none;
 | 
	
		
			
				|  |  | -			box-shadow: none;
 | 
	
		
			
				|  |  | -			color: var(--primary-color);
 | 
	
		
			
				|  |  | -			font-size: 22px;
 | 
	
		
			
				|  |  | -			line-height: 26px;
 | 
	
		
			
				|  |  | -			padding: 7px 0 7px 12px;
 | 
	
		
			
				|  |  | -			width: 100%;
 | 
	
		
			
				|  |  | -			text-align: left;
 | 
	
		
			
				|  |  | -			cursor: pointer;
 | 
	
		
			
				|  |  | -			border-radius: 5px;
 | 
	
		
			
				|  |  | -			background-color: transparent;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			&.active {
 | 
	
		
			
				|  |  | -				color: var(--white);
 | 
	
		
			
				|  |  | -				background-color: var(--primary-color);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.content {
 | 
	
		
			
				|  |  | -		width: 600px;
 | 
	
		
			
				|  |  | -		max-width: 100%;
 | 
	
		
			
				|  |  | -		background-color: var(--white);
 | 
	
		
			
				|  |  | -		padding: 30px 50px;
 | 
	
		
			
				|  |  | -		border-radius: 3px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		h3 {
 | 
	
		
			
				|  |  | -			font-weight: 400;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.item {
 | 
	
		
			
				|  |  | -			overflow: hidden;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			&:not(:last-of-type) {
 | 
	
		
			
				|  |  | -				margin-bottom: 10px;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			/** temp code - will be put into a separate component */
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			&.activity-item {
 | 
	
		
			
				|  |  | -				height: 72px;
 | 
	
		
			
				|  |  | -				border: 0.5px var(--light-grey-3) solid;
 | 
	
		
			
				|  |  | -				border-radius: 3px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				.thumbnail {
 | 
	
		
			
				|  |  | -					position: relative;
 | 
	
		
			
				|  |  | -					display: flex;
 | 
	
		
			
				|  |  | -					align-items: center;
 | 
	
		
			
				|  |  | -					justify-content: center;
 | 
	
		
			
				|  |  | -					width: 70.5px;
 | 
	
		
			
				|  |  | -					height: 70.5px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					img {
 | 
	
		
			
				|  |  | -						opacity: 0.4;
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					.activity-type-icon {
 | 
	
		
			
				|  |  | -						position: absolute;
 | 
	
		
			
				|  |  | -						color: var(--dark-grey);
 | 
	
		
			
				|  |  | -						font-size: 30px;
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				.left-part {
 | 
	
		
			
				|  |  | -					flex: 1;
 | 
	
		
			
				|  |  | -					padding: 12px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					.item-title {
 | 
	
		
			
				|  |  | -						margin: 0;
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				.universal-item-actions a {
 | 
	
		
			
				|  |  | -					border-bottom: 0;
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		#create-new-playlist-button {
 | 
	
		
			
				|  |  | -			margin-top: 30px;
 | 
	
		
			
				|  |  | -			width: 100%;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -.night-mode {
 | 
	
		
			
				|  |  | -	.name,
 | 
	
		
			
				|  |  | -	.username,
 | 
	
		
			
				|  |  | -	.bio-row i,
 | 
	
		
			
				|  |  | -	.bio-row p,
 | 
	
		
			
				|  |  | -	.date-location-row i,
 | 
	
		
			
				|  |  | -	.date-location-row p,
 | 
	
		
			
				|  |  | -	.item .left-part .top-text,
 | 
	
		
			
				|  |  | -	.item .left-part .bottom-text,
 | 
	
		
			
				|  |  | -	.bottom-section
 | 
	
		
			
				|  |  | -		.content
 | 
	
		
			
				|  |  | -		.item.activity-item
 | 
	
		
			
				|  |  | -		.thumbnail
 | 
	
		
			
				|  |  | -		.activity-type-icon {
 | 
	
		
			
				|  |  | -		color: var(--light-grey-2);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -</style>
 |