diff --git a/docs/widgets/services/emby.md b/docs/widgets/services/emby.md index f262bfc66..1d70fdf30 100644 --- a/docs/widgets/services/emby.md +++ b/docs/widgets/services/emby.md @@ -16,4 +16,5 @@ widget: key: apikeyapikeyapikeyapikeyapikey enableBlocks: true # optional, defaults to false enableNowPlaying: true # optional, defaults to true + enableUser: true # optional, defaults to false ``` diff --git a/docs/widgets/services/plex-tautulli.md b/docs/widgets/services/plex-tautulli.md index b88f6eeb8..cce45fc3e 100644 --- a/docs/widgets/services/plex-tautulli.md +++ b/docs/widgets/services/plex-tautulli.md @@ -14,4 +14,5 @@ widget: type: tautulli url: http://tautulli.host.or.ip key: apikeyapikeyapikeyapikeyapikey + enableUser: true # optional, defaults to false ``` diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index d6552253f..7fb810881 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -393,6 +393,9 @@ export function cleanServiceGroups(groups) { enableBlocks, enableNowPlaying, + // emby, jellyfin, tautulli + enableUser, + // glances, pihole version, @@ -517,6 +520,14 @@ export function cleanServiceGroups(groups) { if (["emby", "jellyfin"].includes(type)) { if (enableBlocks !== undefined) cleanedService.widget.enableBlocks = JSON.parse(enableBlocks); if (enableNowPlaying !== undefined) cleanedService.widget.enableNowPlaying = JSON.parse(enableNowPlaying); + if (enableUser !== undefined) { + cleanedService.widget.enableUser = !!JSON.parse(enableUser); + } + } + if (["tautulli"].includes(type)) { + if (enableUser !== undefined) { + cleanedService.widget.enableUser = !!JSON.parse(enableUser); + } } if (["sonarr", "radarr"].includes(type)) { if (enableQueue !== undefined) cleanedService.widget.enableQueue = JSON.parse(enableQueue); diff --git a/src/widgets/emby/component.jsx b/src/widgets/emby/component.jsx index 89fd44c36..f11a689d5 100644 --- a/src/widgets/emby/component.jsx +++ b/src/widgets/emby/component.jsx @@ -27,10 +27,11 @@ function ticksToString(ticks) { return parts.map((part) => part.toString().padStart(2, "0")).join(":"); } -function SingleSessionEntry({ playCommand, session }) { +function SingleSessionEntry({ playCommand, session, enableUser }) { const { NowPlayingItem: { Name, SeriesName }, PlayState: { PositionTicks, IsPaused, IsMuted }, + UserName, } = session; const RunTimeTicks = @@ -49,6 +50,7 @@ function SingleSessionEntry({ playCommand, session }) {
{Name} {SeriesName && ` - ${SeriesName}`} + {enableUser && ` (${UserName})`}
@@ -97,10 +99,11 @@ function SingleSessionEntry({ playCommand, session }) { ); } -function SessionEntry({ playCommand, session }) { +function SessionEntry({ playCommand, session, enableUser }) { const { NowPlayingItem: { Name, SeriesName }, PlayState: { PositionTicks, IsPaused, IsMuted }, + UserName, } = session; const RunTimeTicks = @@ -142,6 +145,7 @@ function SessionEntry({ playCommand, session }) {
{Name} {SeriesName && ` - ${SeriesName}`} + {enableUser && ` (${UserName})`}
{IsMuted && }
@@ -215,6 +219,7 @@ export default function Component({ service }) { const enableBlocks = service.widget?.enableBlocks; const enableNowPlaying = service.widget?.enableNowPlaying ?? true; + const enableUser = !!service.widget?.enableUser; if (!sessionsData || !countData) { return ( @@ -272,6 +277,7 @@ export default function Component({ service }) { handlePlayCommand(currentSession, command)} session={session} + enableUser={enableUser} /> @@ -288,6 +294,7 @@ export default function Component({ service }) { key={session.Id} playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)} session={session} + enableUser={enableUser} /> ))} diff --git a/src/widgets/tautulli/component.jsx b/src/widgets/tautulli/component.jsx index e1a4df00d..d224391b7 100644 --- a/src/widgets/tautulli/component.jsx +++ b/src/widgets/tautulli/component.jsx @@ -25,14 +25,18 @@ function millisecondsToString(milliseconds) { return parts.map((part) => part.toString().padStart(2, "0")).join(":"); } -function SingleSessionEntry({ session }) { - const { full_title, duration, view_offset, progress_percent, state, video_decision, audio_decision } = session; +function SingleSessionEntry({ session, enableUser }) { + const { full_title, duration, view_offset, progress_percent, state, video_decision, audio_decision, username } = + session; return ( <>
-
{full_title}
+
+ {full_title} + {enableUser && ` (${username})`} +
{video_decision === "direct play" && audio_decision === "direct play" && ( @@ -74,8 +78,8 @@ function SingleSessionEntry({ session }) { ); } -function SessionEntry({ session }) { - const { full_title, view_offset, progress_percent, state, video_decision, audio_decision } = session; +function SessionEntry({ session, enableUser }) { + const { full_title, view_offset, progress_percent, state, video_decision, audio_decision, username } = session; return (
@@ -94,7 +98,10 @@ function SessionEntry({ session }) { )}
-
{full_title}
+
+ {full_title} + {enableUser && ` (${username})`} +
{video_decision === "direct play" && audio_decision === "direct play" && ( @@ -162,11 +169,13 @@ export default function Component({ service }) { ); } + const enableUser = !!service.widget?.enableUser; + if (playing.length === 1) { const session = playing[0]; return (
- +
); } @@ -174,7 +183,7 @@ export default function Component({ service }) { return (
{playing.map((session) => ( - + ))}
);