Feature: Added new commands navigate active media players and tracks. (#979)
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import { errorHandler } from 'src/core/errors/handler';
|
||||
import { Command } from '../../../types';
|
||||
import { MediaPlayerService } from 'src/services/media';
|
||||
import AstalMpris from 'gi://AstalMpris?version=0.1';
|
||||
import { getNextPlayer, getPreviousPlayer } from 'src/components/menus/media/components/controls/helpers';
|
||||
|
||||
const mprisService = AstalMpris.get_default();
|
||||
const mediaPlayerService = MediaPlayerService.getInstance();
|
||||
|
||||
export const mediaCommands: Command[] = [
|
||||
@@ -23,4 +26,98 @@ export const mediaCommands: Command[] = [
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'playNext',
|
||||
aliases: ['pln'],
|
||||
description: 'Plays the next track in the active media player.',
|
||||
category: 'Media',
|
||||
args: [],
|
||||
handler: (): string => {
|
||||
try {
|
||||
const activeMediaPlayer = mediaPlayerService.activePlayer.get();
|
||||
if (activeMediaPlayer === undefined) {
|
||||
return 'No active media player';
|
||||
}
|
||||
|
||||
if (!activeMediaPlayer.get_can_go_next()) {
|
||||
return 'Not allowed';
|
||||
}
|
||||
|
||||
activeMediaPlayer.next();
|
||||
|
||||
return 'Success';
|
||||
} catch (error) {
|
||||
errorHandler(error);
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'playPrev',
|
||||
aliases: ['plp'],
|
||||
description: 'Plays the previous track in the active media player.',
|
||||
category: 'Media',
|
||||
args: [],
|
||||
handler: (): string => {
|
||||
try {
|
||||
const activeMediaPlayer = mediaPlayerService.activePlayer.get();
|
||||
if (activeMediaPlayer === undefined) {
|
||||
return 'No active media player';
|
||||
}
|
||||
|
||||
if (!activeMediaPlayer.get_can_go_previous()) {
|
||||
return 'Not allowed';
|
||||
}
|
||||
|
||||
activeMediaPlayer.previous();
|
||||
|
||||
return 'Success';
|
||||
} catch (error) {
|
||||
errorHandler(error);
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'mediaPlayerNext',
|
||||
aliases: ['mpn'],
|
||||
description: 'Goes to the next available media player (if it exists).',
|
||||
category: 'Media',
|
||||
args: [],
|
||||
handler: (): string => {
|
||||
try {
|
||||
const totalMediaPlayers = mprisService.get_players().length;
|
||||
|
||||
if (totalMediaPlayers <= 1) {
|
||||
return 'Not allowed';
|
||||
}
|
||||
getNextPlayer();
|
||||
|
||||
const activeMediaPlayerName = mediaPlayerService.activePlayer.get()?.busName;
|
||||
return activeMediaPlayerName ?? 'Unknown Player';
|
||||
} catch (error) {
|
||||
errorHandler(error);
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'mediaPlayerPrev',
|
||||
aliases: ['mpp'],
|
||||
description: 'Goes to the previous available media player (if it exists).',
|
||||
category: 'Media',
|
||||
args: [],
|
||||
handler: (): string => {
|
||||
try {
|
||||
const totalMediaPlayers = mprisService.get_players().length;
|
||||
|
||||
if (totalMediaPlayers <= 1) {
|
||||
return 'Not allowed';
|
||||
}
|
||||
getPreviousPlayer();
|
||||
|
||||
const activeMediaPlayerName = mediaPlayerService.activePlayer.get()?.busName;
|
||||
return activeMediaPlayerName ?? 'Unknown Player';
|
||||
} catch (error) {
|
||||
errorHandler(error);
|
||||
}
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user