mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-14 20:01:47 +00:00
fix: apply fix from eslint
This commit is contained in:
@ -1,6 +1,9 @@
|
||||
import { BrowserWindow } from 'electron';
|
||||
|
||||
import registerCallback, { MediaType, type SongInfo } from '@/providers/song-info';
|
||||
import registerCallback, {
|
||||
MediaType,
|
||||
type SongInfo,
|
||||
} from '@/providers/song-info';
|
||||
import { createBackend } from '@/utils';
|
||||
|
||||
import { LastFmScrobbler } from './services/lastfm';
|
||||
@ -13,14 +16,23 @@ export type SetConfType = (
|
||||
conf: Partial<Omit<ScrobblerPluginConfig, 'enabled'>>,
|
||||
) => void | Promise<void>;
|
||||
|
||||
export const backend = createBackend<{
|
||||
config?: ScrobblerPluginConfig;
|
||||
window?: BrowserWindow;
|
||||
enabledScrobblers: Map<string, ScrobblerBase>;
|
||||
toggleScrobblers(config: ScrobblerPluginConfig, window: BrowserWindow): void;
|
||||
createSessions(config: ScrobblerPluginConfig, setConfig: SetConfType): Promise<void>;
|
||||
setConfig?: SetConfType;
|
||||
}, ScrobblerPluginConfig>({
|
||||
export const backend = createBackend<
|
||||
{
|
||||
config?: ScrobblerPluginConfig;
|
||||
window?: BrowserWindow;
|
||||
enabledScrobblers: Map<string, ScrobblerBase>;
|
||||
toggleScrobblers(
|
||||
config: ScrobblerPluginConfig,
|
||||
window: BrowserWindow,
|
||||
): void;
|
||||
createSessions(
|
||||
config: ScrobblerPluginConfig,
|
||||
setConfig: SetConfType,
|
||||
): Promise<void>;
|
||||
setConfig?: SetConfType;
|
||||
},
|
||||
ScrobblerPluginConfig
|
||||
>({
|
||||
enabledScrobblers: new Map(),
|
||||
|
||||
toggleScrobblers(config: ScrobblerPluginConfig, window: BrowserWindow) {
|
||||
@ -30,7 +42,10 @@ export const backend = createBackend<{
|
||||
this.enabledScrobblers.delete('lastfm');
|
||||
}
|
||||
|
||||
if (config.scrobblers.listenbrainz && config.scrobblers.listenbrainz.enabled) {
|
||||
if (
|
||||
config.scrobblers.listenbrainz &&
|
||||
config.scrobblers.listenbrainz.enabled
|
||||
) {
|
||||
this.enabledScrobblers.set('listenbrainz', new ListenbrainzScrobbler());
|
||||
} else {
|
||||
this.enabledScrobblers.delete('listenbrainz');
|
||||
@ -45,12 +60,8 @@ export const backend = createBackend<{
|
||||
}
|
||||
},
|
||||
|
||||
async start({
|
||||
getConfig,
|
||||
setConfig,
|
||||
window,
|
||||
}) {
|
||||
const config = this.config = await getConfig();
|
||||
async start({ getConfig, setConfig, window }) {
|
||||
const config = (this.config = await getConfig());
|
||||
// This will store the timeout that will trigger addScrobble
|
||||
let scrobbleTimer: NodeJS.Timeout | undefined;
|
||||
|
||||
@ -65,21 +76,38 @@ export const backend = createBackend<{
|
||||
if (!songInfo.isPaused) {
|
||||
const configNonnull = this.config!;
|
||||
// Scrobblers normally have no trouble working with official music videos
|
||||
if (!configNonnull.scrobbleOtherMedia && (songInfo.mediaType !== MediaType.Audio && songInfo.mediaType !== MediaType.OriginalMusicVideo)) {
|
||||
if (
|
||||
!configNonnull.scrobbleOtherMedia &&
|
||||
songInfo.mediaType !== MediaType.Audio &&
|
||||
songInfo.mediaType !== MediaType.OriginalMusicVideo
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Scrobble when the song is halfway through, or has passed the 4-minute mark
|
||||
const scrobbleTime = Math.min(Math.ceil(songInfo.songDuration / 2), 4 * 60);
|
||||
const scrobbleTime = Math.min(
|
||||
Math.ceil(songInfo.songDuration / 2),
|
||||
4 * 60,
|
||||
);
|
||||
if (scrobbleTime > (songInfo.elapsedSeconds ?? 0)) {
|
||||
// Scrobble still needs to happen
|
||||
const timeToWait = (scrobbleTime - (songInfo.elapsedSeconds ?? 0)) * 1000;
|
||||
scrobbleTimer = setTimeout((info, config) => {
|
||||
this.enabledScrobblers.forEach((scrobbler) => scrobbler.addScrobble(info, config, setConfig));
|
||||
}, timeToWait, songInfo, configNonnull);
|
||||
const timeToWait =
|
||||
(scrobbleTime - (songInfo.elapsedSeconds ?? 0)) * 1000;
|
||||
scrobbleTimer = setTimeout(
|
||||
(info, config) => {
|
||||
this.enabledScrobblers.forEach((scrobbler) =>
|
||||
scrobbler.addScrobble(info, config, setConfig),
|
||||
);
|
||||
},
|
||||
timeToWait,
|
||||
songInfo,
|
||||
configNonnull,
|
||||
);
|
||||
}
|
||||
|
||||
this.enabledScrobblers.forEach((scrobbler) => scrobbler.setNowPlaying(songInfo, configNonnull, setConfig));
|
||||
this.enabledScrobblers.forEach((scrobbler) =>
|
||||
scrobbler.setNowPlaying(songInfo, configNonnull, setConfig),
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
@ -88,11 +116,15 @@ export const backend = createBackend<{
|
||||
this.enabledScrobblers.clear();
|
||||
|
||||
this.toggleScrobblers(newConfig, this.window!);
|
||||
for (const [scrobblerName, scrobblerConfig] of Object.entries(newConfig.scrobblers)) {
|
||||
for (const [scrobblerName, scrobblerConfig] of Object.entries(
|
||||
newConfig.scrobblers,
|
||||
)) {
|
||||
if (scrobblerConfig.enabled) {
|
||||
const scrobbler = this.enabledScrobblers.get(scrobblerName);
|
||||
if (
|
||||
this.config?.scrobblers?.[scrobblerName as keyof typeof newConfig.scrobblers]?.enabled !== scrobblerConfig.enabled &&
|
||||
this.config?.scrobblers?.[
|
||||
scrobblerName as keyof typeof newConfig.scrobblers
|
||||
]?.enabled !== scrobblerConfig.enabled &&
|
||||
scrobbler &&
|
||||
!scrobbler.isSessionCreated(newConfig) &&
|
||||
this.setConfig
|
||||
@ -103,6 +135,5 @@ export const backend = createBackend<{
|
||||
}
|
||||
|
||||
this.config = newConfig;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user