Skip to content

Commit 9357a15

Browse files
committed
fix(synced-lyrics): fix type error
1 parent ee820bb commit 9357a15

File tree

3 files changed

+24
-22
lines changed

3 files changed

+24
-22
lines changed

src/plugins/synced-lyrics/renderer/index.ts

+19-15
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
1-
/* eslint-disable prefer-const, @typescript-eslint/no-unused-vars */
2-
31
import { createRenderer } from '@/utils';
4-
import { SongInfo } from '@/providers/song-info';
5-
import { YoutubePlayer } from '@/types/youtube-player';
62

73
import { makeLyricsRequest } from './lyrics';
84
import { selectors, tabStates } from './utils';
95
import { setConfig } from './renderer';
106
import { setCurrentTime } from './components/LyricsContainer';
117

8+
import type { RendererContext } from '@/types/contexts';
9+
import type { YoutubePlayer } from '@/types/youtube-player';
10+
import type { SongInfo } from '@/providers/song-info';
11+
1212
import type { SyncedLyricsPluginConfig } from '../types';
1313

1414
export let _ytAPI: YoutubePlayer | null = null;
1515

16-
export const renderer = createRenderer({
16+
export const renderer = createRenderer<{
17+
observerCallback: MutationCallback;
18+
onPlayerApiReady: (api: YoutubePlayer) => void;
19+
hasAddedEvents: boolean;
20+
observer?: MutationObserver;
21+
videoDataChange: () => void;
22+
progressCallback: (evt: Event) => void;
23+
}, SyncedLyricsPluginConfig>({
1724
onConfigChange(newConfig) {
18-
setConfig(newConfig as SyncedLyricsPluginConfig);
25+
setConfig(newConfig);
1926
},
2027

2128
observerCallback(mutations: MutationRecord[]) {
@@ -35,23 +42,20 @@ export const renderer = createRenderer({
3542
}
3643
},
3744

38-
onPlayerApiReady(api) {
45+
onPlayerApiReady(api: YoutubePlayer) {
3946
_ytAPI = api;
4047

41-
// @ts-expect-error type is 'unknown', so TS complains
4248
api.addEventListener('videodatachange', this.videoDataChange);
4349

44-
// @ts-expect-error type is 'unknown', so TS complains
4550
this.videoDataChange();
4651
},
4752

4853
hasAddedEvents: false,
49-
observer: null as MutationObserver | null,
54+
5055
videoDataChange() {
5156
if (!this.hasAddedEvents) {
5257
const video = document.querySelector('video');
5358

54-
// @ts-expect-error type is 'unknown', so TS complains
5559
video?.addEventListener('timeupdate', this.progressCallback);
5660

5761
if (video) this.hasAddedEvents = true;
@@ -61,7 +65,7 @@ export const renderer = createRenderer({
6165
if (!header) return;
6266

6367
this.observer ??= new MutationObserver(
64-
this.observerCallback as MutationCallback,
68+
this.observerCallback,
6569
);
6670

6771
// Force the lyrics tab to be enabled at all times.
@@ -80,10 +84,10 @@ export const renderer = createRenderer({
8084
}
8185
},
8286

83-
async start({ getConfig, ipc: { on } }) {
84-
setConfig((await getConfig()) as SyncedLyricsPluginConfig);
87+
async start(ctx: RendererContext<SyncedLyricsPluginConfig>) {
88+
setConfig(await ctx.getConfig());
8589

86-
on('ytmd:update-song-info', async (info: SongInfo) => {
90+
ctx.ipc.on('ytmd:update-song-info', async (info: SongInfo) => {
8791
await makeLyricsRequest(info);
8892
});
8993
},

src/plugins/synced-lyrics/renderer/lyrics/index.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
/* eslint-disable import/order */
2-
31
import { createEffect } from 'solid-js';
2+
43
import { config } from '../renderer';
54

65
export { makeLyricsRequest } from './fetch';

src/plugins/synced-lyrics/renderer/renderer.tsx

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
/* eslint-disable import/order */
2-
31
import { createSignal, Show } from 'solid-js';
2+
43
import { VideoDetails } from '@/types/video-details';
5-
import { SyncedLyricsPluginConfig } from '../types';
4+
65
import { LyricsContainer } from './components/LyricsContainer';
76

7+
import { SyncedLyricsPluginConfig } from '../types';
8+
89
export const [isVisible, setIsVisible] = createSignal<boolean>(false);
910

10-
// prettier-ignore
1111
export const [config, setConfig] = createSignal<SyncedLyricsPluginConfig | null>(null);
12-
// prettier-ignore
1312
export const [playerState, setPlayerState] = createSignal<VideoDetails | null>(null);
1413

1514
export const LyricsRenderer = () => {

0 commit comments

Comments
 (0)