Skip to content

Commit

Permalink
Merge pull request #58 from WAVONA-team/revert-56-test-4
Browse files Browse the repository at this point in the history
Revert "feat(TEST-4): track fix"
  • Loading branch information
Vo7kov authored Jun 4, 2024
2 parents 77ccbfa + c6e001b commit 9b8ec63
Show file tree
Hide file tree
Showing 16 changed files with 150 additions and 205 deletions.
3 changes: 2 additions & 1 deletion src/components/TrackInfo/TrackInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ const TrackInfo: React.FC<Props> = React.memo(
className={classNames(
'cursor-pointer relative w-full grid grid-cols-[64px_1fr_24px] gap-x-4 lg:grid-cols-[64px_1fr_1fr_1fr_24px] lg:rounded-[4px] items-center py-2 px-4 lg:px-2',
{
'bg-background-trackInfo': isPlay && playerState,
'bg-background-trackInfo':
isPlay && playerState,
},
)}
>
Expand Down
6 changes: 3 additions & 3 deletions src/modules/Player/components/Playback/Playback.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -70,16 +70,16 @@ export const Playback: React.FC = React.memo(() => {
changeDuration(state);
};

const handlerOnEnded = async () => {
const handlerOnEnded = () => {
const currentTrackIndex = tracks?.findIndex(
(track) => track.url === currentTrack?.url,
) as number;

if (tracks && tracks[currentTrackIndex + 1]) {
await changeCurrentTrack(tracks[currentTrackIndex + 1]);
changeCurrentTrack(tracks[currentTrackIndex + 1]);
} else {
changePlayerState(false);
await changeCurrentTrack(null);
changeCurrentTrack(null);
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,35 +15,35 @@ export const TrackControlButtons: React.FC = React.memo(() => {
}),
);

const NextTrack = async () => {
const NextTrack = () => {
const currentTrackIndex = tracks?.findIndex(
(track) => track.url === currentTrack?.url,
) as number;

const nextTrack = tracks![currentTrackIndex + 1];

if (tracks && nextTrack) {
return await changeCurrentTrack(nextTrack);
return changeCurrentTrack(nextTrack);
}

if (tracks && !nextTrack) {
return await changeCurrentTrack(tracks[0]);
return changeCurrentTrack(tracks[0]);
}
};

const PreviosTrack = async () => {
const PreviosTrack = () => {
const currentTrackIndex = tracks?.findIndex(
(track) => track.url === currentTrack?.url,
) as number;

const previousTrack = tracks![currentTrackIndex - 1];

if (tracks && previousTrack) {
return await changeCurrentTrack(previousTrack);
return changeCurrentTrack(previousTrack);
}

if (tracks && !previousTrack) {
return await changeCurrentTrack(tracks[tracks.length - 1]);
return changeCurrentTrack(tracks[tracks.length - 1]);
}
};

Expand Down
5 changes: 2 additions & 3 deletions src/modules/Player/store/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,11 @@ export const createPlayerSlice: StateCreator<PlayerState> = (set) => ({
duration: 0,
seekTo: 0,
seeking: false,
setTracks: (tracks) => set({ tracks }),
setTracks: (tracks: Track[]) => set({ tracks }),
changePlayerState: (playerState: boolean) => set({ playerState }),
changeIsLoop: (isLoop: boolean) => set({ isLoop }),
changeVolume: (volume: number) => set({ volume }),
changeCurrentTrack: async (currentTrack: Track | null) =>
set({ currentTrack }),
changeCurrentTrack: (currentTrack: Track | null) => set({ currentTrack }),
changeCurrentTime: (currentTime: number) => set({ currentTime }),
changeSecondsLoaded: (secondsLoaded: number) => set({ secondsLoaded }),
changeDuration: (duration: number) => set({ duration }),
Expand Down
4 changes: 2 additions & 2 deletions src/modules/Player/store/types/PlayerState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ export type PlayerState = {
duration: number;
seekTo: number;
seeking: boolean;
setTracks: (tracks: Track[] | null) => void;
setTracks: (tracks: Track[]) => void;
changePlayerState: (playerState: boolean) => void;
changeIsLoop: (isLoop: boolean) => void;
changeVolume: (volume: number) => void;
changeCurrentTrack: (track: Track | null) => Promise<void>;
changeCurrentTrack: (track: Track | null) => void;
changeCurrentTime: (currentTime: number) => void;
changeSecondsLoaded: (secondsLoaded: number) => void;
changeDuration: (duration: number) => void;
Expand Down
104 changes: 48 additions & 56 deletions src/modules/TrackAddition/components/TrackAddition/TrackAddition.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ const TrackAddition: React.FC = memo(() => {
watch,
control,
setError,
clearErrors,
formState: { errors },
} = useForm({
defaultValues: {
Expand Down Expand Up @@ -121,9 +120,6 @@ const TrackAddition: React.FC = memo(() => {
className="mb-8 max-w-sm lg:mb-12"
onChange={(event) => {
onChange(event.target.value);
clearErrors('url');
changePlayerState(false);
changeCurrentTrack(null);

if (!event.target.value.length) {
clearParsedTrack();
Expand Down Expand Up @@ -153,58 +149,54 @@ const TrackAddition: React.FC = memo(() => {

{parsedTrack && !isParsedTrackLoading && (
<>
<div className="xl:hidden">
<AnimatePresence>
<motion.div
initial={{ opacity: 0, y: -10 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -10, display: 'none' }}
transition={{ duration: 0.2 }}
>
<TrackInfo
artist={parsedTrack.author as string}
name={parsedTrack.title}
provider={parsedTrack.source}
duration={parsedTrackDuration || parsedTrack.duration}
imgUrl={parsedTrack.imgUrl as string}
isPlay={parsedTrack.url === currentTrack?.url}
handlerPlay={async () => {
await changeCurrentTrack(parsedTrack).then(() =>
changePlayerState(!playerState),
);
}}
handlerModal={() => {}}
/>
</motion.div>
</AnimatePresence>
</div>

<div className="hidden xl:block">
<AnimatePresence>
<motion.div
initial={{ opacity: 0, y: -10, display: 'none' }}
animate={{ opacity: 1, y: 0, display: 'block' }}
exit={{ opacity: 0, y: -10, display: 'none' }}
transition={{ duration: 0.2, delay: 0.1 }}
>
<TrackInfo
isDesktop={true}
artist={parsedTrack.author as string}
name={parsedTrack.title}
provider={parsedTrack.source}
duration={parsedTrackDuration || parsedTrack.duration}
imgUrl={parsedTrack.imgUrl as string}
isPlay={parsedTrack.url === currentTrack?.url}
handlerPlay={async () => {
await changeCurrentTrack(parsedTrack).then(() =>
changePlayerState(!playerState),
);
}}
handlerModal={() => {}}
/>
</motion.div>
</AnimatePresence>
</div>
<AnimatePresence>
<motion.div
className="xl:hidden"
initial={{ opacity: 0, y: -10, display: 'none' }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -10, display: 'none' }}
transition={{ duration: 0.2 }}
>
<TrackInfo
artist={parsedTrack.author as string}
name={parsedTrack.title}
provider={parsedTrack.source}
duration={parsedTrackDuration || parsedTrack.duration}
imgUrl={parsedTrack.imgUrl as string}
isPlay={parsedTrack.url === currentTrack?.url}
handlerPlay={() => {
changeCurrentTrack(parsedTrack);
changePlayerState(!playerState);
}}
handlerModal={() => {}}
/>
</motion.div>
</AnimatePresence>

<AnimatePresence>
<motion.div
className="hidden xl:block"
initial={{ opacity: 0, y: -10, display: 'none' }}
animate={{ opacity: 1, y: 0, display: 'block' }}
exit={{ opacity: 0, y: -10, display: 'none' }}
transition={{ duration: 0.2, delay: 0.1 }}
>
<TrackInfo
isDesktop={true}
artist={parsedTrack.author as string}
name={parsedTrack.title}
provider={parsedTrack.source}
duration={parsedTrackDuration || parsedTrack.duration}
imgUrl={parsedTrack.imgUrl as string}
isPlay={parsedTrack.url === currentTrack?.url}
handlerPlay={() => {
changeCurrentTrack(parsedTrack);
changePlayerState(!playerState);
}}
handlerModal={() => {}}
/>
</motion.div>
</AnimatePresence>
</>
)}

Expand Down
14 changes: 7 additions & 7 deletions src/modules/TrackHistory/components/TrackHistory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,13 @@ export const TrackHistory: React.FC = React.memo(() => {
duration={track.duration}
imgUrl={track.imgUrl as string}
isPlay={currentTrack?.url === track.url}
handlerPlay={async () => {
await changeCurrentTrack(track).then(() => {
changePlayerState(
currentTrack?.url !== track.url ? true : !playerState,
);
updateHistoryOrder(track.id);
});
handlerPlay={() => {
changeCurrentTrack(track);
changePlayerState(
currentTrack?.url !== track.url ? true : !playerState,
);

updateHistoryOrder(track.id);
}}
handlerModal={() => {}}
/>
Expand Down
53 changes: 21 additions & 32 deletions src/modules/TrackList/components/TrackList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,11 @@ type Props = {
setIsLoading: (state: boolean) => void;
tracks: Track[];
totalTracks: number;
header: string;
headerCondition?: boolean;
header?: string;
};

const TrackList: React.FC<Props> = React.memo(
({
isLoading,
setIsLoading,
tracks,
totalTracks,
header,
headerCondition = true,
}) => {
({ isLoading, setIsLoading, tracks, totalTracks, header }) => {
const { currentTrack, changeCurrentTrack, changePlayerState, playerState } =
useStore(
({
Expand All @@ -42,12 +34,9 @@ const TrackList: React.FC<Props> = React.memo(
}),
);

const handleTrack = async (track: Track) => {
await changeCurrentTrack(track).then(() =>
changePlayerState(
track.url === currentTrack?.url ? !playerState : true,
),
);
const handleTrack = (track: Track) => {
changeCurrentTrack(track);
changePlayerState(track.url === currentTrack?.url ? !playerState : true);
};

const scrollHandler = useCallback(() => {
Expand All @@ -72,25 +61,19 @@ const TrackList: React.FC<Props> = React.memo(
}, [scrollHandler]);

return (
<div className="mb-8 sm:mb-12 flex flex-col gap-11 relative">
{isLoading && (
<Container className="flex justify-center absolute left-1/2 -translate-x-1/2 -top-4">
<Spinner width="w-7" height="h-7" />
</Container>
)}

{!isLoading && !tracks.length && headerCondition && (
<div className="mb-8 sm:mb-12 flex flex-col gap-11">
{!isLoading && !tracks.length && (
<Container>
<h2
className="
font-rubik
font-semibold
text-secondary-cadet-gray
text-2xl
sm:text-2xl
lg:text-xl
tracking-wide
"
font-rubik
font-semibold
text-secondary-cadet-gray
text-2xl
sm:text-2xl
lg:text-xl
tracking-wide
"
>
{header}
</h2>
Expand Down Expand Up @@ -123,6 +106,12 @@ const TrackList: React.FC<Props> = React.memo(
</div>
)}
</AnimatePresence>

{isLoading && (
<Container className="flex justify-center">
<Spinner width="w-7" height="h-7" />
</Container>
)}
</div>
);
},
Expand Down
32 changes: 2 additions & 30 deletions src/pages/SettingsPage/SettingsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,7 @@ import { Container } from '@/ui/Container';
import arrowIcon from '../../../public/arrows/arrowIcon.svg';

export const SettingsPage: React.FC = React.memo(() => {
const {
logout,
setTracks,
changePlayerState,
changeCurrentTrack,
setUserTracks,
} = useStore(
({
logout,
setTracks,
changePlayerState,
changeCurrentTrack,
setUserTracks,
}) => ({
logout,
setTracks,
changePlayerState,
changeCurrentTrack,
setUserTracks,
}),
);

const logoutHandler = async () => {
setUserTracks([]);
setTracks(null);
changePlayerState(false);
changeCurrentTrack(null);
logout();
};
const { logout } = useStore(({ logout }) => ({ logout }));

return (
<Container
Expand Down Expand Up @@ -123,7 +95,7 @@ export const SettingsPage: React.FC = React.memo(() => {
text-start
focus:outline-none
"
onClick={logoutHandler}
onClick={logout}
>
<span>Выйти</span>
</button>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/TrackSearchPage/TrackSearchPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const TrackSearchPage: React.FC = React.memo(() => {
<Container>
<Search />

<div className="mt-4 relative">
<div className="mt-4">
<TracksContainer />
</div>
</Container>
Expand Down
Loading

0 comments on commit 9b8ec63

Please sign in to comment.