diff --git a/src/renderer/features/player/components/center-controls.tsx b/src/renderer/features/player/components/center-controls.tsx
index 8f1b40d69..8f771cf2f 100644
--- a/src/renderer/features/player/components/center-controls.tsx
+++ b/src/renderer/features/player/components/center-controls.tsx
@@ -1,6 +1,7 @@
-import { useEffect, useMemo, useState } from 'react';
+import { useEffect, useState } from 'react';
import styled from '@emotion/styled';
import format from 'format-duration';
+import isElectron from 'is-electron';
import { useTranslation } from 'react-i18next';
import {
RiPauseLine,
@@ -70,24 +71,15 @@ export const CenterControls = ({ playersRef }: CenterControlsProps) => {
} = useCenterControls({ playersRef });
const currentTime = usePlayerStore((state) => state.current.time);
-
const currentPlayerRef = player === 1 ? player1 : player2;
-
- const duration = useMemo(
- () => format((playerData.queue.current?.duration || 0) * 1000),
- [playerData.queue]
- );
-
- const formattedTime = useMemo(
- () => format(currentTime * 1000 || 0),
- [currentTime]
- );
+ const duration = format((playerData.queue.current?.duration || 0) * 1000);
+ const formattedTime = format(currentTime * 1000 || 0);
useEffect(() => {
let interval: any;
if (status === PlayerStatus.PLAYING && !isSeeking) {
- if (settings.type === PlaybackType.WEB) {
+ if (!isElectron() || settings.type === PlaybackType.WEB) {
interval = setInterval(() => {
setCurrentTime(currentPlayerRef.getCurrentTime());
}, 1000);
diff --git a/src/renderer/features/player/components/left-controls.tsx b/src/renderer/features/player/components/left-controls.tsx
index 53605a06e..cb4865387 100644
--- a/src/renderer/features/player/components/left-controls.tsx
+++ b/src/renderer/features/player/components/left-controls.tsx
@@ -1,25 +1,28 @@
import styled from '@emotion/styled';
import { Group } from '@mantine/core';
-import { motion, AnimatePresence } from 'framer-motion';
+import { motion, AnimatePresence, LayoutGroup } from 'framer-motion';
import { RiArrowUpSLine } from 'react-icons/ri';
+import { Link } from 'react-router-dom';
import { Button, Text } from '@/renderer/components';
+import { AppRoute } from '@/renderer/router/routes';
import { useAppStore, usePlayerStore } from '@/renderer/store';
-import { Font } from '@/renderer/styles';
+import { fadeIn, Font } from '@/renderer/styles';
const LeftControlsContainer = styled.div`
display: flex;
width: 100%;
height: 100%;
+ margin-left: 1rem;
`;
const ImageWrapper = styled.div`
display: flex;
align-items: center;
justify-content: center;
- padding: 0.5rem;
+ padding: 1rem 1rem 1rem 0;
`;
-const MetadataStack = styled.div`
+const MetadataStack = styled(motion.div)`
display: flex;
flex-direction: column;
gap: 0.1rem;
@@ -28,9 +31,10 @@ const MetadataStack = styled.div`
overflow: hidden;
`;
-const Image = styled(motion.div)<{ url: string }>`
- width: 70px;
- height: 70px;
+const Image = styled(motion(Link))<{ url: string }>`
+ ${fadeIn};
+ width: 60px;
+ height: 60px;
background-image: url(${(props) => props.url});
background-repeat: no-repeat;
background-size: cover;
@@ -54,67 +58,70 @@ export const LeftControls = () => {
return (
-
-
+
+
{!hideImage && (
-
-
-
-
-
+
+
+
+
+
+
+
)}
-
-
-
- {title || '—'}
-
-
- {artists || '—'}
-
-
- {album?.name || '—'}
-
-
+
+
+ {title || '—'}
+
+
+ {artists || '—'}
+
+
+ {album?.name || '—'}
+
+
+
);
};
diff --git a/src/renderer/features/player/components/playerbar.tsx b/src/renderer/features/player/components/playerbar.tsx
index 9b609648e..5895e0dec 100644
--- a/src/renderer/features/player/components/playerbar.tsx
+++ b/src/renderer/features/player/components/playerbar.tsx
@@ -1,5 +1,6 @@
import { useRef } from 'react';
import styled from '@emotion/styled';
+import isElectron from 'is-electron';
import { PlaybackType } from '@/renderer/types';
import { AudioPlayer } from '../../../components';
import { usePlayerStore } from '../../../store';
@@ -65,7 +66,7 @@ export const Playerbar = () => {
- {settings.type === PlaybackType.WEB && (
+ {(!isElectron() || settings.type === PlaybackType.WEB) && (
{
player2={player2}
status={status}
style={settings.style}
- volume={volume}
+ volume={volume / 100}
/>
)}