mirror of
https://github.com/zoriya/noctalia-shell.git
synced 2026-06-06 20:12:29 +00:00
Did some cleanup
This commit is contained in:
+41
-49
@@ -32,46 +32,46 @@ Singleton {
|
|||||||
|
|
||||||
function getAvailablePlayers() {
|
function getAvailablePlayers() {
|
||||||
if (!Mpris.players || !Mpris.players.values) {
|
if (!Mpris.players || !Mpris.players.values) {
|
||||||
return [];
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
let allPlayers = Mpris.players.values;
|
let allPlayers = Mpris.players.values
|
||||||
let finalPlayers = [];
|
let finalPlayers = []
|
||||||
const genericBrowsers = ["firefox", "chromium", "chrome"];
|
const genericBrowsers = ["firefox", "chromium", "chrome"]
|
||||||
|
|
||||||
// 1. Separate players into specific and generic lists
|
// Separate players into specific and generic lists
|
||||||
let specificPlayers = [];
|
let specificPlayers = []
|
||||||
let genericPlayers = [];
|
let genericPlayers = []
|
||||||
for (var i = 0; i < allPlayers.length; i++) {
|
for (var i = 0; i < allPlayers.length; i++) {
|
||||||
const identity = String(allPlayers[i].identity || "").toLowerCase();
|
const identity = String(allPlayers[i].identity || "").toLowerCase()
|
||||||
if (genericBrowsers.some(b => identity.includes(b))) {
|
if (genericBrowsers.some(b => identity.includes(b))) {
|
||||||
genericPlayers.push(allPlayers[i]);
|
genericPlayers.push(allPlayers[i])
|
||||||
} else {
|
} else {
|
||||||
specificPlayers.push(allPlayers[i]);
|
specificPlayers.push(allPlayers[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let matchedGenericIndices = {};
|
let matchedGenericIndices = {}
|
||||||
|
|
||||||
// 2. For each specific player, try to find and pair it with a generic partner
|
// For each specific player, try to find and pair it with a generic partner
|
||||||
for (var i = 0; i < specificPlayers.length; i++) {
|
for (var i = 0; i < specificPlayers.length; i++) {
|
||||||
let specificPlayer = specificPlayers[i];
|
let specificPlayer = specificPlayers[i]
|
||||||
let title1 = String(specificPlayer.trackTitle || "").trim();
|
let title1 = String(specificPlayer.trackTitle || "").trim()
|
||||||
let wasMatched = false;
|
let wasMatched = false
|
||||||
|
|
||||||
if (title1) {
|
if (title1) {
|
||||||
for (var j = 0; j < genericPlayers.length; j++) {
|
for (var j = 0; j < genericPlayers.length; j++) {
|
||||||
if (matchedGenericIndices[j]) continue;
|
if (matchedGenericIndices[j]) continue
|
||||||
let genericPlayer = genericPlayers[j];
|
let genericPlayer = genericPlayers[j]
|
||||||
let title2 = String(genericPlayer.trackTitle || "").trim();
|
let title2 = String(genericPlayer.trackTitle || "").trim()
|
||||||
|
|
||||||
if (title2 && (title1.includes(title2) || title2.includes(title1))) {
|
if (title2 && (title1.includes(title2) || title2.includes(title1))) {
|
||||||
let dataPlayer = genericPlayer;
|
let dataPlayer = genericPlayer
|
||||||
let identityPlayer = specificPlayer;
|
let identityPlayer = specificPlayer
|
||||||
|
|
||||||
let scoreSpecific = (specificPlayer.trackArtUrl ? 1 : 0);
|
let scoreSpecific = (specificPlayer.trackArtUrl ? 1 : 0)
|
||||||
let scoreGeneric = (genericPlayer.trackArtUrl ? 1 : 0);
|
let scoreGeneric = (genericPlayer.trackArtUrl ? 1 : 0)
|
||||||
if(scoreSpecific > scoreGeneric){ dataPlayer = specificPlayer; }
|
if(scoreSpecific > scoreGeneric){ dataPlayer = specificPlayer }
|
||||||
|
|
||||||
let virtualPlayer = {
|
let virtualPlayer = {
|
||||||
identity: identityPlayer.identity,
|
identity: identityPlayer.identity,
|
||||||
@@ -92,35 +92,35 @@ Singleton {
|
|||||||
canControl: dataPlayer.canControl || false,
|
canControl: dataPlayer.canControl || false,
|
||||||
_stateSource: dataPlayer,
|
_stateSource: dataPlayer,
|
||||||
_controlTarget: identityPlayer
|
_controlTarget: identityPlayer
|
||||||
};
|
}
|
||||||
finalPlayers.push(virtualPlayer);
|
finalPlayers.push(virtualPlayer)
|
||||||
matchedGenericIndices[j] = true;
|
matchedGenericIndices[j] = true
|
||||||
wasMatched = true;
|
wasMatched = true
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!wasMatched) {
|
if (!wasMatched) {
|
||||||
finalPlayers.push(specificPlayer);
|
finalPlayers.push(specificPlayer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Add any generic players that were not matched
|
// Add any generic players that were not matched
|
||||||
for (var i = 0; i < genericPlayers.length; i++) {
|
for (var i = 0; i < genericPlayers.length; i++) {
|
||||||
if (!matchedGenericIndices[i]) {
|
if (!matchedGenericIndices[i]) {
|
||||||
finalPlayers.push(genericPlayers[i]);
|
finalPlayers.push(genericPlayers[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Filter for controllable players
|
// Filter for controllable players
|
||||||
let controllablePlayers = [];
|
let controllablePlayers = []
|
||||||
for (var i = 0; i < finalPlayers.length; i++) {
|
for (var i = 0; i < finalPlayers.length; i++) {
|
||||||
let player = finalPlayers[i];
|
let player = finalPlayers[i]
|
||||||
if (player && player.canControl) {
|
if (player && player.canControl) {
|
||||||
controllablePlayers.push(player);
|
controllablePlayers.push(player)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return controllablePlayers;
|
return controllablePlayers
|
||||||
}
|
}
|
||||||
|
|
||||||
function findActivePlayer() {
|
function findActivePlayer() {
|
||||||
@@ -130,16 +130,16 @@ Singleton {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- NEW: Prioritize the actively playing player ---
|
// Prioritize the actively playing player ---
|
||||||
for (var i = 0; i < availablePlayers.length; i++) {
|
for (var i = 0; i < availablePlayers.length; i++) {
|
||||||
if (availablePlayers[i] && availablePlayers[i].playbackState === MprisPlaybackState.Playing) {
|
if (availablePlayers[i] && availablePlayers[i].playbackState === MprisPlaybackState.Playing) {
|
||||||
Logger.log("Media", "Found actively playing player: " + availablePlayers[i].identity);
|
Logger.log("Media", "Found actively playing player: " + availablePlayers[i].identity)
|
||||||
selectedPlayerIndex = i;
|
selectedPlayerIndex = i
|
||||||
return availablePlayers[i];
|
return availablePlayers[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- OLD LOGIC (used as a fallback if nothing is playing) ---
|
// fallback if nothing is playing)
|
||||||
const preferred = (Settings.data.audio.preferredPlayer || "")
|
const preferred = (Settings.data.audio.preferredPlayer || "")
|
||||||
if (preferred !== "") {
|
if (preferred !== "") {
|
||||||
for (var i = 0; i < availablePlayers.length; i++) {
|
for (var i = 0; i < availablePlayers.length; i++) {
|
||||||
@@ -219,14 +219,6 @@ Singleton {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function seekRelative(offset) {
|
|
||||||
if (currentPlayer && currentPlayer.canSeek) {
|
|
||||||
var newPosition = currentPlayer.position + offset
|
|
||||||
currentPlayer.position = newPosition
|
|
||||||
currentPosition = newPosition
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Seek to position based on ratio (0.0 to 1.0)
|
// Seek to position based on ratio (0.0 to 1.0)
|
||||||
function seekByRatio(ratio) {
|
function seekByRatio(ratio) {
|
||||||
let target = currentPlayer ? (currentPlayer._controlTarget || currentPlayer) : null
|
let target = currentPlayer ? (currentPlayer._controlTarget || currentPlayer) : null
|
||||||
|
|||||||
Reference in New Issue
Block a user