From 21dd426bc7ff622dcaecce68d3fa437c6fce6a0f Mon Sep 17 00:00:00 2001 From: Ameer Abdallah Date: Sun, 21 Apr 2024 21:28:25 -0700 Subject: [PATCH] Add title attribute to stream titles in Tautulli/Jellyfin/Emby so that on hover, the full stream title can be read when it is being covered by an elipses overflow --- src/widgets/emby/component.jsx | 18 +++++++++--------- src/widgets/tautulli/component.jsx | 23 +++++++++++------------ 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/widgets/emby/component.jsx b/src/widgets/emby/component.jsx index 46f352a9c..15d6a0bbd 100644 --- a/src/widgets/emby/component.jsx +++ b/src/widgets/emby/component.jsx @@ -27,22 +27,25 @@ function ticksToString(ticks) { return parts.map((part) => part.toString().padStart(2, "0")).join(":"); } -function generateStreamTitle(session, showEpisodeNumber) { +function generateStreamTitle(session, enableUser, showEpisodeNumber) { const { NowPlayingItem: { Name, SeriesName, Type, ParentIndexNumber, IndexNumber }, + UserName, } = session; + let streamTitle = ""; if (Type === "Episode" && showEpisodeNumber) { - return `${SeriesName}: S${ParentIndexNumber.toString().padStart(2, "0")} · E${IndexNumber.toString().padStart(2, "0")} - ${Name}`; + streamTitle = `${SeriesName}: S${ParentIndexNumber.toString().padStart(2, "0")} · E${IndexNumber.toString().padStart(2, "0")} - ${Name}`; + } else { + streamTitle = `${Name}${SeriesName ? ` - ${SeriesName}` : ""}`; } - return `${Name}${SeriesName ? ` - ${SeriesName}` : ""}`; + return enableUser ? `${streamTitle} (${UserName})` : streamTitle; } function SingleSessionEntry({ playCommand, session, enableUser, showEpisodeNumber }) { const { PlayState: { PositionTicks, IsPaused, IsMuted }, - UserName, } = session; const RunTimeTicks = @@ -59,9 +62,8 @@ function SingleSessionEntry({ playCommand, session, enableUser, showEpisodeNumbe <>
-
+
{streamTitle} - {enableUser && ` (${UserName})`}
@@ -113,7 +115,6 @@ function SingleSessionEntry({ playCommand, session, enableUser, showEpisodeNumbe function SessionEntry({ playCommand, session, enableUser, showEpisodeNumber }) { const { PlayState: { PositionTicks, IsPaused, IsMuted }, - UserName, } = session; const RunTimeTicks = @@ -154,9 +155,8 @@ function SessionEntry({ playCommand, session, enableUser, showEpisodeNumber }) { )}
-
+
{streamTitle} - {enableUser && ` (${UserName})`}
{IsMuted && }
diff --git a/src/widgets/tautulli/component.jsx b/src/widgets/tautulli/component.jsx index ce7c2dd40..a435c890d 100644 --- a/src/widgets/tautulli/component.jsx +++ b/src/widgets/tautulli/component.jsx @@ -25,13 +25,16 @@ function millisecondsToString(milliseconds) { return parts.map((part) => part.toString().padStart(2, "0")).join(":"); } -function generateStreamTitle(session, showEpisodeNumber) { - const { media_type, parent_media_index, media_index, title, grandparent_title, full_title } = session; +function generateStreamTitle(session, enableUser, showEpisodeNumber) { + let stream_title = ""; + const { media_type, parent_media_index, media_index, title, grandparent_title, full_title, username } = session; if (media_type === "episode" && showEpisodeNumber) { - return `${grandparent_title}: S${parent_media_index.toString().padStart(2, "0")} · E${media_index.toString().padStart(2, "0")} - ${title}`; + stream_title = `${grandparent_title}: S${parent_media_index.toString().padStart(2, "0")} · E${media_index.toString().padStart(2, "0")} - ${title}`; + } else { + stream_title = full_title; } - return full_title; + return enableUser ? `${stream_title} (${username})` : stream_title; } function SingleSessionEntry({ session, enableUser, showEpisodeNumber }) { @@ -42,18 +45,16 @@ function SingleSessionEntry({ session, enableUser, showEpisodeNumber }) { state, video_decision, audio_decision, - username } = session; - const stream_title = generateStreamTitle(session, showEpisodeNumber) + const stream_title = generateStreamTitle(session, enableUser, showEpisodeNumber); return ( <>
-
+
{stream_title} - {enableUser && ` (${username})`}
@@ -103,10 +104,9 @@ function SessionEntry({ session, enableUser, showEpisodeNumber }) { state, video_decision, audio_decision, - username } = session; - const stream_title = generateStreamTitle(session, showEpisodeNumber) + const stream_title = generateStreamTitle(session, enableUser, showEpisodeNumber) return (
@@ -125,9 +125,8 @@ function SessionEntry({ session, enableUser, showEpisodeNumber }) { )}
-
+
{stream_title} - {enableUser && ` (${username})`}