DEV Community

Discussion on: So I created Spotify Clone in React(kinda)

Collapse
bryanelalami profile image
bryanelalami • Edited on

Thank you Ferdo for your work, I'm super pumped to get this project done. But actually, I'm facing an issue. After so many researches, I'm stucked. I'm trying to add the play music functionality .

Error React JS

Collapse
fvukojevic profile image
Ferdo Vukojević Author

The play music functionality should already be implemented. If you can see your playlists, just click on the song so it is shown in the footer and then the play button should work.

2 potential issues could be that a specific track doesnt have a previrew url
Or that you didnt set up your spotify clientId and redirectUrl

Can you confirm that both of those things are set up correctly and that your playlist is pulled after login?

Collapse
bryanelalami profile image
bryanelalami

Spotify clientID and redirectUri are set up. The problems comes from

import React from "react";
import "./Body.css";
import Header from "./Header";
import { useDataLayerValue } from "./DataLayer";
import PlayCircleFilledIcon from "@material-ui/icons/PlayCircleFilled";
import PauseCircleFilledIcon from "@material-ui/icons/PauseCircleFilled";
import FavoriteIcon from "@material-ui/icons/Favorite";
import MoreHorizIcon from "@material-ui/icons/MoreHoriz";
import SongRow from "./SongRow";
import {useSoundLayerValue} from "./SoundLayer";

function Body({ spotify }) {
  const [{current_playlist, tracks, track}] = useDataLayerValue();
  const [{playing, volume}, soundDispatch] = useSoundLayerValue();

  const startPlaying = () => {
    soundDispatch({
      type: "SET_PLAYING",
      playing: true,
    });
    soundDispatch({
      type: "SET_VOLUME",
      volume: volume / 100,
    });
  };
  const stopPlaying = () => {
    soundDispatch({
      type: "SET_PLAYING",
      playing: false,
    });
  };
  return (
    
      
      
        
        
          PLAYLIST
          

Discover Weekly

{current_playlist?.description}

{playing ? : } {tracks?.items.map(track => { return ; })} ); } export default Body;
Thread Thread
bryanelalami profile image
bryanelalami

Everything is working fine right now !

Thread Thread
fvukojevic profile image
Ferdo Vukojević Author

I love to hear. The functionalities are just getting started. Right now play button, volume and repeat should work (volume has a bit of a bug on it). I will try to add functionality to shuffle/prev/next buttons today

Thread Thread
bryanelalami profile image
bryanelalami

We can do together if you want to ! What is the bug about he volume button ? What's the logic behind shuffle/prev/next buttons ?

Thread Thread
fvukojevic profile image
Ferdo Vukojević Author

The volume button doesn't seem to transfer it's state when you change the song while the one is playing. It will reset again to the starting position.

Yea getting the help from the community would be lovely because as I said, I am very much a newbie to React (would be a lot more comfortable in Vue.js)

So the functionality of buttons is quite simple really

  • Shuffle -> When the song ends, random one from playlist starts
  • Next -> Starts the next from the playlist (basically find the current one by id, and go next)
  • Prev -> Does the opposite, and starts the one previous in the playlist

After those footer functionalities I will start working on the Home & Search buttons. I might refactor the design prior to that šŸ˜

Thread Thread
bryanelalami profile image
bryanelalami

Would be great to collaborate and help each other !

I'm new as well in React Dev so that's I sound like a newbie.

Can you help me out with this ?

alt text for accessibility

Thread Thread
bryanelalami profile image
bryanelalami

There is also another problem that I'm facing... const redirectUri seems to be incorrect. When deploying the website with firebase , when logged in, it redirects me to localhost:3000 and because the server is down, it keeps me redirecting to the wrong URL

Thread Thread
fvukojevic profile image
Ferdo Vukojević Author

I would suggest you use your own clientId. It is very simple to get at developer.spotify.com/dashboard
RedirectUri gets pulled from window.location.origin so it should work as long as you setup inside your dashboard the same uri your app is hosted on.

So steps would be:
Go to spotify dashboard for developers, create an app, take the clientId and place it inside spotify.js file.
And then inside the spotify dashboard in edit settings, set the redirect url to match the url your app is hosted.

Thread Thread
bryanelalami profile image
bryanelalami

It would be great to jump on a call , are you available ?