Compare commits

...

3 Commits

Author SHA1 Message Date
jeffvli 6b0c57998b Update to v0.8.1 2024-09-03 21:53:19 -07:00
jeffvli 6587e9cac8 Fix invalid DOM prop on playerbar 2024-09-03 21:51:50 -07:00
jeffvli 2e3c69e61c Fix song index skip when viewing synchronized lyrics 2024-09-03 21:51:18 -07:00
6 changed files with 34 additions and 12 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "feishin",
"version": "0.8.0",
"version": "0.8.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "feishin",
"version": "0.8.0",
"version": "0.8.1",
"hasInstallScript": true,
"license": "GPL-3.0",
"dependencies": {
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "feishin",
"productName": "Feishin",
"description": "Feishin music server",
"version": "0.8.0",
"version": "0.8.1",
"scripts": {
"build": "concurrently \"npm run build:main\" \"npm run build:renderer\" \"npm run build:remote\"",
"build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.prod.ts",
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "feishin",
"version": "0.8.0",
"version": "0.8.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "feishin",
"version": "0.8.0",
"version": "0.8.1",
"hasInstallScript": true,
"license": "GPL-3.0",
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "feishin",
"version": "0.8.0",
"version": "0.8.1",
"description": "",
"main": "./dist/main/main.js",
"author": {
@@ -1,11 +1,13 @@
import { useCallback, useEffect, useRef } from 'react';
import {
useCurrentPlayer,
useCurrentStatus,
useCurrentTime,
useLyricsSettings,
usePlaybackType,
usePlayerData,
useSeeked,
useSetCurrentTime,
} from '/@/renderer/store';
import { PlaybackType, PlayerStatus } from '/@/renderer/types';
import { LyricLine } from '/@/renderer/features/lyrics/lyric-line';
@@ -13,9 +15,11 @@ import isElectron from 'is-electron';
import { PlayersRef } from '/@/renderer/features/player/ref/players-ref';
import { FullLyricsMetadata, SynchronizedLyricsArray } from '/@/renderer/api/types';
import styled from 'styled-components';
import { useCenterControls } from '/@/renderer/features/player/hooks/use-center-controls';
import { useScrobble } from '/@/renderer/features/player/hooks/use-scrobble';
const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null;
const utils = isElectron() ? window.electron.utils : null;
const mpris = isElectron() && utils?.isLinux() ? window.electron.mpris : null;
const SynchronizedLyricsContainer = styled.div<{ $gap: number }>`
display: flex;
@@ -66,7 +70,25 @@ export const SynchronizedLyrics = ({
const playerData = usePlayerData();
const now = useCurrentTime();
const settings = useLyricsSettings();
const centerControls = useCenterControls({ playersRef });
const currentPlayer = useCurrentPlayer();
const currentPlayerRef =
currentPlayer === 1 ? playersRef.current?.player1 : playersRef.current?.player2;
const setCurrentTime = useSetCurrentTime();
const { handleScrobbleFromSeek } = useScrobble();
const handleSeek = useCallback(
(time: number) => {
if (playbackType === PlaybackType.LOCAL && mpvPlayer) {
mpvPlayer.seekTo(time);
} else {
setCurrentTime(time, true);
handleScrobbleFromSeek(time);
mpris?.updateSeek(time);
currentPlayerRef?.seekTo(time);
}
},
[currentPlayerRef, handleScrobbleFromSeek, playbackType, setCurrentTime],
);
const seeked = useSeeked();
@@ -349,7 +371,7 @@ export const SynchronizedLyrics = ({
fontSize={settings.fontSize}
id={`lyric-${idx}`}
text={text}
onClick={() => centerControls.handleSeekSlider(time / 1000)}
onClick={() => handleSeek(time / 1000)}
/>
))}
</SynchronizedLyricsContainer>
@@ -3,7 +3,7 @@ import { Playerbar } from '/@/renderer/features/player';
import { useGeneralSettings } from '/@/renderer/store/settings.store';
interface PlayerbarContainerProps {
drawerEffect: boolean;
$drawerEffect: boolean;
}
const PlayerbarContainer = styled.footer<PlayerbarContainerProps>`
@@ -13,7 +13,7 @@ const PlayerbarContainer = styled.footer<PlayerbarContainerProps>`
transition: background 0.5s;
${(props) =>
props.drawerEffect &&
props.$drawerEffect &&
`
&:hover {
background: var(--playerbar-bg-active);
@@ -26,7 +26,7 @@ export const PlayerBar = () => {
return (
<PlayerbarContainer
drawerEffect={playerbarOpenDrawer}
$drawerEffect={playerbarOpenDrawer}
id="player-bar"
>
<Playerbar />