diff --git a/packages/app/src/components/Player/ExtraActions/index.jsx b/packages/app/src/components/Player/Actions/index.jsx
similarity index 51%
rename from packages/app/src/components/Player/ExtraActions/index.jsx
rename to packages/app/src/components/Player/Actions/index.jsx
index b3be128b..9b873395 100755
--- a/packages/app/src/components/Player/ExtraActions/index.jsx
+++ b/packages/app/src/components/Player/Actions/index.jsx
@@ -6,41 +6,51 @@ import LikeButton from "@components/LikeButton"
import { usePlayerStateContext } from "@contexts/WithPlayerContext"
+import "./index.less"
+
const ExtraActions = (props) => {
- const [playerState] = usePlayerStateContext()
+ const [trackInstance, setTrackInstance] = React.useState({})
+
+ const onPlayerStateChange = React.useCallback((state) => {
+ const instance = app.cores.player.track()
+
+ if (instance) {
+ setTrackInstance(instance)
+ }
+ }, [])
+
+ const [playerState] = usePlayerStateContext(onPlayerStateChange)
const handleClickLike = async () => {
- if (!playerState.track_manifest) {
+ if (!trackInstance) {
console.error("Cannot like a track if nothing is playing")
return false
}
- const track = app.cores.player.track()
-
- await track.manifest.serviceOperations.toggleItemFavourite(
+ await trackInstance.manifest.serviceOperations.toggleItemFavourite(
"track",
- playerState.track_manifest._id,
+ trackInstance.manifest._id,
)
}
return (
-
+
{app.isMobile && (
}
- disabled={!playerState.track_manifest?.lyrics_enabled}
+ disabled={!trackInstance?.manifest?.lyrics_enabled}
/>
)}
{!app.isMobile && (
)}
diff --git a/packages/app/src/components/Player/Actions/index.less b/packages/app/src/components/Player/Actions/index.less
new file mode 100644
index 00000000..7ef2ef0f
--- /dev/null
+++ b/packages/app/src/components/Player/Actions/index.less
@@ -0,0 +1,19 @@
+.player-actions {
+ display: flex;
+ flex-direction: row;
+
+ align-items: center;
+ justify-content: space-between;
+
+ width: 70%;
+ margin: auto;
+
+ padding: 2px 25px;
+
+ background-color: rgba(var(--layoutBackgroundColor), 0.7);
+
+ -webkit-backdrop-filter: blur(5px);
+ backdrop-filter: blur(5px);
+
+ border-radius: 12px;
+}
diff --git a/packages/app/src/components/Player/Controls/index.jsx b/packages/app/src/components/Player/Controls/index.jsx
index 3de4533d..8d520107 100755
--- a/packages/app/src/components/Player/Controls/index.jsx
+++ b/packages/app/src/components/Player/Controls/index.jsx
@@ -47,7 +47,17 @@ const EventsHandlers = {
}
const Controls = (props) => {
- const [playerState] = usePlayerStateContext()
+ const [trackInstance, setTrackInstance] = React.useState({})
+
+ const onPlayerStateChange = React.useCallback((state) => {
+ const instance = app.cores.player.track()
+
+ if (instance) {
+ setTrackInstance(instance)
+ }
+ }, [])
+
+ const [playerState] = usePlayerStateContext(onPlayerStateChange)
const handleAction = (event, ...args) => {
if (typeof EventsHandlers[event] !== "function") {
@@ -122,10 +132,11 @@ const Controls = (props) => {
{app.isMobile && (
handleAction("like")}
+ disabled={!trackInstance?.manifest?._id}
/>
)}
diff --git a/packages/app/src/components/Player/ToolBarPlayer/index.jsx b/packages/app/src/components/Player/ToolBarPlayer/index.jsx
index fac61db7..14f671ac 100755
--- a/packages/app/src/components/Player/ToolBarPlayer/index.jsx
+++ b/packages/app/src/components/Player/ToolBarPlayer/index.jsx
@@ -8,11 +8,10 @@ import { usePlayerStateContext } from "@contexts/WithPlayerContext"
import LiveInfo from "@components/Player/LiveInfo"
import SeekBar from "@components/Player/SeekBar"
import Controls from "@components/Player/Controls"
+import Actions from "@components/Player/Actions"
import RGBStringToValues from "@utils/rgbToValues"
-import ExtraActions from "../ExtraActions"
-
import "./index.less"
function isOverflown(parent, element) {
@@ -93,7 +92,7 @@ const Player = (props) => {
}
}
- const { title, artistStr, service, cover_analysis, cover } =
+ const { title, artist, service, cover_analysis, cover } =
playerState.track_manifest ?? {}
const playing = playerState.playback_status === "playing"
@@ -201,7 +200,7 @@ const Player = (props) => {
)}
- {artistStr ?? ""}
+ {artist ?? ""}
@@ -218,7 +217,7 @@ const Player = (props) => {
streamMode={playerState.live}
/>
-