* Implemented strict linting standards and prettier formatting config. * More linter fixes and type updates. * More linter updates and type fixes * Remove noisy comments * Linter and type updates * Linter, formatting and type updates. * Linter updates * Type updates * Type updates * fixed all linter errors * Fixed all linting, formatting and type issues. * Resolve merge conflicts.
29 lines
832 B
TypeScript
29 lines
832 B
TypeScript
import { MprisPlayer } from 'types/service/mpris';
|
|
const mpris = await Service.import('mpris');
|
|
|
|
export const getCurrentPlayer = (activePlayer: MprisPlayer = mpris.players[0]): MprisPlayer => {
|
|
const statusOrder = {
|
|
Playing: 1,
|
|
Paused: 2,
|
|
Stopped: 3,
|
|
};
|
|
|
|
if (mpris.players.length === 0) {
|
|
return mpris.players[0];
|
|
}
|
|
|
|
const isPlaying = mpris.players.some((p: MprisPlayer) => p.play_back_status === 'Playing');
|
|
|
|
const playerStillExists = mpris.players.some((p) => activePlayer.bus_name === p.bus_name);
|
|
|
|
const nextPlayerUp = mpris.players.sort(
|
|
(a: MprisPlayer, b: MprisPlayer) => statusOrder[a.play_back_status] - statusOrder[b.play_back_status],
|
|
)[0];
|
|
|
|
if (isPlaying || !playerStillExists) {
|
|
return nextPlayerUp;
|
|
}
|
|
|
|
return activePlayer;
|
|
};
|