mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-08 23:18:16 -07:00
fix: Not parsing audio/sub model selected inside of details view (#379)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
parent
bfcadb9396
commit
d10dfdd09d
1 changed files with 25 additions and 11 deletions
|
|
@ -128,6 +128,7 @@ class PlaybackModelHelper {
|
||||||
)) ??
|
)) ??
|
||||||
await _createOfflinePlaybackModel(
|
await _createOfflinePlaybackModel(
|
||||||
newItem,
|
newItem,
|
||||||
|
null,
|
||||||
ref.read(syncProvider.notifier).getSyncedItem(newItem),
|
ref.read(syncProvider.notifier).getSyncedItem(newItem),
|
||||||
oldModel: currentModel,
|
oldModel: currentModel,
|
||||||
);
|
);
|
||||||
|
|
@ -138,6 +139,7 @@ class PlaybackModelHelper {
|
||||||
|
|
||||||
Future<OfflinePlaybackModel?> _createOfflinePlaybackModel(
|
Future<OfflinePlaybackModel?> _createOfflinePlaybackModel(
|
||||||
ItemBaseModel item,
|
ItemBaseModel item,
|
||||||
|
MediaStreamsModel? streamModel,
|
||||||
SyncedItem? syncedItem, {
|
SyncedItem? syncedItem, {
|
||||||
PlaybackModel? oldModel,
|
PlaybackModel? oldModel,
|
||||||
}) async {
|
}) async {
|
||||||
|
|
@ -206,28 +208,39 @@ class PlaybackModelHelper {
|
||||||
return switch (playbackType) {
|
return switch (playbackType) {
|
||||||
PlaybackType.directStream || PlaybackType.transcode => await _createServerPlaybackModel(
|
PlaybackType.directStream || PlaybackType.transcode => await _createServerPlaybackModel(
|
||||||
fullItem,
|
fullItem,
|
||||||
|
item.streamModel,
|
||||||
playbackType,
|
playbackType,
|
||||||
oldModel: oldModel,
|
oldModel: oldModel,
|
||||||
libraryQueue: queue,
|
libraryQueue: queue,
|
||||||
startPosition: startPosition,
|
startPosition: startPosition,
|
||||||
),
|
),
|
||||||
PlaybackType.offline => await _createOfflinePlaybackModel(fullItem, syncedItem),
|
PlaybackType.offline => await _createOfflinePlaybackModel(
|
||||||
|
fullItem,
|
||||||
|
item.streamModel,
|
||||||
|
syncedItem,
|
||||||
|
),
|
||||||
null => null
|
null => null
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
return (await _createServerPlaybackModel(
|
return (await _createServerPlaybackModel(
|
||||||
fullItem,
|
fullItem,
|
||||||
|
item.streamModel,
|
||||||
PlaybackType.directStream,
|
PlaybackType.directStream,
|
||||||
startPosition: startPosition,
|
startPosition: startPosition,
|
||||||
oldModel: oldModel,
|
oldModel: oldModel,
|
||||||
libraryQueue: queue,
|
libraryQueue: queue,
|
||||||
)) ??
|
)) ??
|
||||||
await _createOfflinePlaybackModel(fullItem, syncedItem);
|
await _createOfflinePlaybackModel(
|
||||||
|
fullItem,
|
||||||
|
item.streamModel,
|
||||||
|
syncedItem,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<PlaybackModel?> _createServerPlaybackModel(
|
Future<PlaybackModel?> _createServerPlaybackModel(
|
||||||
ItemBaseModel item,
|
ItemBaseModel item,
|
||||||
|
MediaStreamsModel? streamModel,
|
||||||
PlaybackType? type, {
|
PlaybackType? type, {
|
||||||
PlaybackModel? oldModel,
|
PlaybackModel? oldModel,
|
||||||
required List<ItemBaseModel> libraryQueue,
|
required List<ItemBaseModel> libraryQueue,
|
||||||
|
|
@ -237,25 +250,26 @@ class PlaybackModelHelper {
|
||||||
final userId = ref.read(userProvider)?.id;
|
final userId = ref.read(userProvider)?.id;
|
||||||
if (userId?.isEmpty == true) return null;
|
if (userId?.isEmpty == true) return null;
|
||||||
|
|
||||||
|
final newStreamModel = streamModel ?? item.streamModel;
|
||||||
|
|
||||||
Map<Bitrate, bool> qualityOptions = getVideoQualityOptions(
|
Map<Bitrate, bool> qualityOptions = getVideoQualityOptions(
|
||||||
VideoQualitySettings(
|
VideoQualitySettings(
|
||||||
maxBitRate: ref.read(videoPlayerSettingsProvider.select((value) => value.maxHomeBitrate)),
|
maxBitRate: ref.read(videoPlayerSettingsProvider.select((value) => value.maxHomeBitrate)),
|
||||||
videoBitRate: item.streamModel?.videoStreams.firstOrNull?.bitRate ?? 0,
|
videoBitRate: newStreamModel?.videoStreams.firstOrNull?.bitRate ?? 0,
|
||||||
videoCodec: item.streamModel?.videoStreams.firstOrNull?.codec,
|
videoCodec: newStreamModel?.videoStreams.firstOrNull?.codec,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
final streamModel = item.streamModel;
|
|
||||||
final audioStreamIndex = selectAudioStream(
|
final audioStreamIndex = selectAudioStream(
|
||||||
ref.read(userProvider.select((value) => value?.userConfiguration?.rememberAudioSelections ?? true)),
|
ref.read(userProvider.select((value) => value?.userConfiguration?.rememberAudioSelections ?? true)),
|
||||||
oldModel?.mediaStreams?.currentAudioStream,
|
oldModel?.mediaStreams?.currentAudioStream,
|
||||||
streamModel?.audioStreams,
|
newStreamModel?.audioStreams,
|
||||||
streamModel?.defaultAudioStreamIndex);
|
newStreamModel?.defaultAudioStreamIndex);
|
||||||
final subStreamIndex = selectSubStream(
|
final subStreamIndex = selectSubStream(
|
||||||
ref.read(userProvider.select((value) => value?.userConfiguration?.rememberSubtitleSelections ?? true)),
|
ref.read(userProvider.select((value) => value?.userConfiguration?.rememberSubtitleSelections ?? true)),
|
||||||
oldModel?.mediaStreams?.currentSubStream,
|
oldModel?.mediaStreams?.currentSubStream,
|
||||||
streamModel?.subStreams,
|
newStreamModel?.subStreams,
|
||||||
streamModel?.defaultSubStreamIndex);
|
newStreamModel?.defaultSubStreamIndex);
|
||||||
|
|
||||||
final Response<PlaybackInfoResponse> response = await api.itemsItemIdPlaybackInfoPost(
|
final Response<PlaybackInfoResponse> response = await api.itemsItemIdPlaybackInfoPost(
|
||||||
itemId: item.id,
|
itemId: item.id,
|
||||||
|
|
@ -270,7 +284,7 @@ class PlaybackModelHelper {
|
||||||
enableDirectPlay: type != PlaybackType.transcode,
|
enableDirectPlay: type != PlaybackType.transcode,
|
||||||
enableDirectStream: type != PlaybackType.transcode,
|
enableDirectStream: type != PlaybackType.transcode,
|
||||||
maxStreamingBitrate: qualityOptions.enabledFirst.keys.firstOrNull?.bitRate,
|
maxStreamingBitrate: qualityOptions.enabledFirst.keys.firstOrNull?.bitRate,
|
||||||
mediaSourceId: streamModel?.currentVersionStream?.id,
|
mediaSourceId: newStreamModel?.currentVersionStream?.id,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -278,7 +292,7 @@ class PlaybackModelHelper {
|
||||||
|
|
||||||
if (playbackInfo == null) return null;
|
if (playbackInfo == null) return null;
|
||||||
|
|
||||||
final mediaSource = playbackInfo.mediaSources?[streamModel?.versionStreamIndex ?? 0];
|
final mediaSource = playbackInfo.mediaSources?[newStreamModel?.versionStreamIndex ?? 0];
|
||||||
|
|
||||||
if (mediaSource == null) return null;
|
if (mediaSource == null) return null;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue