Skip to content

Commit

Permalink
Add player on search page
Browse files Browse the repository at this point in the history
  • Loading branch information
MatiXxD committed Dec 15, 2024
1 parent 708700a commit 9b5585d
Showing 1 changed file with 44 additions and 27 deletions.
71 changes: 44 additions & 27 deletions src/pages/search/ui/Search.js
Original file line number Diff line number Diff line change
@@ -1,57 +1,66 @@
import { eventBus } from '../../../shared/lib/index.js';
import { SearchLineView } from '../../../widgets/searchLine/index.js';
import { ArtistListView } from '../../../widgets/artistList/index.js';
import { TrackListView } from '../../../widgets/trackList/index.js';
import { AlbumListView } from '../../../widgets/albumList/index.js';
import { ErrorView } from '../../../widgets/error/index.js';
import { SearchLineView } from "../../../widgets/searchLine/index.js";
import { ArtistListView } from "../../../widgets/artistList/index.js";
import { TrackListView } from "../../../widgets/trackList/index.js";
import { AlbumListView } from "../../../widgets/albumList/index.js";
import { ErrorView } from "../../../widgets/error/index.js";
import { player } from "../../../shared/player/model/store.js";
import { eventBus } from "../../../shared/lib/index.js";
import { userStore } from "../../../entities/user/index.js";

export class SearchPage {
/**
* Creates an instance of the View class.
*/
constructor() {
this.parent = document.querySelector('#root');
this.parent = document.querySelector("#root");
this.eventHandlers = {
foundArtists: this.handleFoundArtists.bind(this),
foundAlbums: this.handleFoundAlbums.bind(this),
foundTracks: this.handleFoundTracks.bind(this),
emptySearchResult: this.handleNotFound.bind(this)
emptySearchResult: this.handleNotFound.bind(this),
};
}

async render() {
this.parent.innerHTML = '';
this.parent.innerHTML = "";

this.pageContent = document.createElement('div');
this.pageContent.classList.add('page_content');
this.parent.appendChild(this.pageContent);
this.pageContent = document.createElement("div");
this.pageContent.classList.add("page_content");
this.parent.appendChild(this.pageContent);

const searchLine = new SearchLineView(this.pageContent);
const searchLine = new SearchLineView(this.pageContent);
await searchLine.render();

this.onEvents();
eventBus.emit('hidePlayer');
if (
userStore.storage.user.isAuthorized &&
(player.isLoaded || player.isPlaying)
) {
eventBus.emit("showPlayer");
} else {
eventBus.emit("hidePlayer");
}
}

onEvents() {
Object.keys(this.eventHandlers).forEach(event => {
Object.keys(this.eventHandlers).forEach((event) => {
eventBus.on(event, this.eventHandlers[event]);
});
}

offEvents() {
Object.keys(this.eventHandlers).forEach(event => {
Object.keys(this.eventHandlers).forEach((event) => {
eventBus.off(event, this.eventHandlers[event]);
});
}

async handleFoundArtists(artists) {
const errorElement = document.querySelector('.error');
const errorElement = document.querySelector(".error");
if (errorElement) {
errorElement.remove();
}

const artistsElement = document.querySelector('.artists');
const artistsElement = document.querySelector(".artists");
if (artistsElement) {
artistsElement.remove();
}
Expand All @@ -65,12 +74,12 @@ export class SearchPage {
}

async handleFoundAlbums(albums) {
const errorElement = document.querySelector('.error');
const errorElement = document.querySelector(".error");
if (errorElement) {
errorElement.remove();
}
const albumsElement = document.querySelector('.albums');

const albumsElement = document.querySelector(".albums");
if (albumsElement) {
albumsElement.remove();
}
Expand All @@ -84,12 +93,16 @@ export class SearchPage {
}

async handleFoundTracks(tracks) {
const errorElement = document.querySelector('.error');
if (tracks.length > 0) {
player.addTracks(tracks);
}

const errorElement = document.querySelector(".error");
if (errorElement) {
errorElement.remove();
}

const tracksElement = document.querySelector('.tracks');
const tracksElement = document.querySelector(".tracks");
if (tracksElement) {
tracksElement.remove();
}
Expand All @@ -103,12 +116,16 @@ export class SearchPage {
}

async handleNotFound() {
const errorElement = document.querySelector('.error');
const errorElement = document.querySelector(".error");
if (errorElement) {
errorElement.remove();
}

const errorView = new ErrorView(null, 'Ничего не найдено', 'Попробуйте поискать что-то другое.');
const errorView = new ErrorView(
null,
"Ничего не найдено",
"Попробуйте поискать что-то другое.",
);
await errorView.render();
}

Expand Down

0 comments on commit 9b5585d

Please sign in to comment.