41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
import { LastFMScrobbler } from './lastfm.js';
|
|
import { ListenBrainzScrobbler } from './listenbrainz.js';
|
|
|
|
export class MultiScrobbler {
|
|
constructor() {
|
|
this.lastfm = new LastFMScrobbler();
|
|
this.listenbrainz = new ListenBrainzScrobbler();
|
|
}
|
|
|
|
// Proxy method for Last.fm specific usage (auth flow)
|
|
getLastFM() {
|
|
return this.lastfm;
|
|
}
|
|
|
|
isAuthenticated() {
|
|
// Return true if any service is configured, so events.js will proceed to call updateNowPlaying
|
|
// Individual services check their own enabled/auth state internally
|
|
return this.lastfm.isAuthenticated() || this.listenbrainz.isEnabled();
|
|
}
|
|
|
|
updateNowPlaying(track) {
|
|
this.lastfm.updateNowPlaying(track);
|
|
this.listenbrainz.updateNowPlaying(track);
|
|
}
|
|
|
|
onTrackChange(track) {
|
|
this.lastfm.onTrackChange(track);
|
|
this.listenbrainz.onTrackChange(track);
|
|
}
|
|
|
|
onPlaybackStop() {
|
|
this.lastfm.onPlaybackStop();
|
|
this.listenbrainz.onPlaybackStop();
|
|
}
|
|
|
|
// Love/Like is currently Last.fm specific in the UI, but we can extend later
|
|
async loveTrack(track) {
|
|
await this.lastfm.loveTrack(track);
|
|
// ListenBrainz feedback could be added here
|
|
}
|
|
}
|