feat(live): show language-scoped stream variants
Keep live stream variant expansion scoped to the selected language while preserving the legacy all-language variants response when no language is provided. Display projected current EPG programme data in live rows and distinguish selected streams from actively playing streams in the collapsed variant UI. Refs #43 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -625,8 +625,12 @@ function getChannelPage({ sourceId = null, includeHidden = false, userId = null,
|
||||
};
|
||||
}
|
||||
|
||||
function getChannelVariants({ logicalChannelId, includeHidden = false, userId = null, page = 1, limit = DEFAULT_PAGE_LIMIT }, database = null) {
|
||||
function getChannelVariants({ logicalChannelId, language = null, includeHidden = false, userId = null, page = 1, limit = DEFAULT_PAGE_LIMIT }, database = null) {
|
||||
database ||= defaultDatabase();
|
||||
const languageFilter = language === null
|
||||
? ''
|
||||
: "AND COALESCE(p.language_code, 'und') = ?";
|
||||
const params = language === null ? [] : [language];
|
||||
const rows = database.prepare(`
|
||||
SELECT p.*, CASE WHEN f.id IS NULL THEN 0 ELSE 1 END AS user_favorite,
|
||||
l.display_name, l.preferred_variant_id, c.name AS category_name,
|
||||
@ -636,9 +640,9 @@ function getChannelVariants({ logicalChannelId, includeHidden = false, userId =
|
||||
LEFT JOIN categories c ON c.source_id = p.source_id AND c.type = 'live' AND c.category_id = p.category_id
|
||||
LEFT JOIN favorites f ON f.user_id = ? AND f.source_id = p.source_id
|
||||
AND f.item_id = p.item_id AND f.item_type = 'channel'
|
||||
WHERE p.type = 'live' AND p.logical_channel_id = ?
|
||||
WHERE p.type = 'live' AND p.logical_channel_id = ? ${languageFilter}
|
||||
ORDER BY p.variant_rank, p.id
|
||||
`).all(userId ?? -1, logicalChannelId);
|
||||
`).all(userId ?? -1, logicalChannelId, ...params);
|
||||
const variants = serializeChannels(rows, includeHidden).flatMap(channel => channel.variants);
|
||||
const bounds = pageBounds(page, limit);
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user