From f5656848427289e64c15a439d25e3e5277697c0b Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Wed, 20 May 2026 19:10:46 +0200 Subject: [PATCH] fix(ci): stabilize analyzer and linux builds --- .github/workflows/build.yml | 46 ++++++++- lib/screens/video_player/parts/build.dart | 6 +- lib/widgets/side_navigation_rail.dart | 3 +- .../video_controls/video_controls.dart | 99 ------------------- 4 files changed, 46 insertions(+), 108 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1f8ea118..ba14606c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -554,8 +554,27 @@ jobs: - name: Install Linux dependencies run: | - sudo apt-get update - sudo apt-get install -y clang cmake meson ninja-build pkg-config nasm libgtk-3-dev libevdev-dev liblzma-dev libstdc++-12-dev libasound2-dev libass-dev libfreetype-dev libfontconfig-dev libfribidi-dev libharfbuzz-dev libepoxy-dev libegl-dev libgl-dev libgnutls28-dev libpipewire-0.3-dev libva-dev libvdpau-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev libxpresent-dev libxkbcommon-dev libpulse-dev libdbus-1-dev libdrm-dev libgbm-dev libwayland-dev wayland-protocols liblcms2-dev ruby ruby-dev rubygems build-essential rpm libarchive-tools imagemagick libcurl4-openssl-dev + packages=( + clang cmake meson ninja-build pkg-config nasm libgtk-3-dev libevdev-dev liblzma-dev + libstdc++-12-dev libasound2-dev libass-dev libfreetype-dev libfontconfig-dev libfribidi-dev + libharfbuzz-dev libepoxy-dev libegl-dev libgl-dev libgnutls28-dev libpipewire-0.3-dev + libva-dev libvdpau-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev + libxss-dev libxpresent-dev libxkbcommon-dev libpulse-dev libdbus-1-dev libdrm-dev + libgbm-dev libwayland-dev wayland-protocols liblcms2-dev ruby ruby-dev rubygems + build-essential rpm libarchive-tools imagemagick libcurl4-openssl-dev + ) + + for attempt in 1 2 3; do + if sudo apt-get update -o Acquire::Retries=3 && sudo apt-get install -y -o Acquire::Retries=3 "${packages[@]}"; then + exit 0 + fi + + sudo apt-get clean + sudo rm -rf /var/lib/apt/lists/* + sleep $((attempt * 15)) + done + + exit 1 - name: Cache libmpv build id: libmpv-cache @@ -669,8 +688,27 @@ jobs: - name: Install Linux dependencies run: | - sudo apt-get update - sudo apt-get install -y clang cmake meson ninja-build pkg-config nasm libgtk-3-dev libevdev-dev liblzma-dev libstdc++-12-dev libasound2-dev libass-dev libfreetype-dev libfontconfig-dev libfribidi-dev libharfbuzz-dev libepoxy-dev libegl-dev libgl-dev libgnutls28-dev libpipewire-0.3-dev libva-dev libvdpau-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev libxpresent-dev libxkbcommon-dev libpulse-dev libdbus-1-dev libdrm-dev libgbm-dev libwayland-dev wayland-protocols liblcms2-dev ruby ruby-dev rubygems build-essential rpm libarchive-tools imagemagick libcurl4-openssl-dev + packages=( + clang cmake meson ninja-build pkg-config nasm libgtk-3-dev libevdev-dev liblzma-dev + libstdc++-12-dev libasound2-dev libass-dev libfreetype-dev libfontconfig-dev libfribidi-dev + libharfbuzz-dev libepoxy-dev libegl-dev libgl-dev libgnutls28-dev libpipewire-0.3-dev + libva-dev libvdpau-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev + libxss-dev libxpresent-dev libxkbcommon-dev libpulse-dev libdbus-1-dev libdrm-dev + libgbm-dev libwayland-dev wayland-protocols liblcms2-dev ruby ruby-dev rubygems + build-essential rpm libarchive-tools imagemagick libcurl4-openssl-dev + ) + + for attempt in 1 2 3; do + if sudo apt-get update -o Acquire::Retries=3 && sudo apt-get install -y -o Acquire::Retries=3 "${packages[@]}"; then + exit 0 + fi + + sudo apt-get clean + sudo rm -rf /var/lib/apt/lists/* + sleep $((attempt * 15)) + done + + exit 1 - name: Cache libmpv build id: libmpv-cache diff --git a/lib/screens/video_player/parts/build.dart b/lib/screens/video_player/parts/build.dart index b44ca5c9..2bb2920e 100644 --- a/lib/screens/video_player/parts/build.dart +++ b/lib/screens/video_player/parts/build.dart @@ -225,9 +225,9 @@ extension _VideoPlayerBuildMethods on VideoPlayerScreenState { return Video( player: player!, - controls: (context) => plexVideoControlsBuilder( - player!, - _currentMetadata, + controls: (context) => PlexVideoControls( + player: player!, + metadata: _currentMetadata, onNext: onNext, onPrevious: onPrevious, availableVersions: _availableVersions, diff --git a/lib/widgets/side_navigation_rail.dart b/lib/widgets/side_navigation_rail.dart index 11e44e89..2f5a8604 100644 --- a/lib/widgets/side_navigation_rail.dart +++ b/lib/widgets/side_navigation_rail.dart @@ -201,8 +201,7 @@ class SideNavigationRailState extends State with MountedSetS static const double _defaultIconSize = 22.0; static const Duration _collapseDelay = Duration(milliseconds: 150); - static double collapsedWidthForContext(BuildContext context) => - PlatformDetector.isTV() ? tvCollapsedWidth : collapsedWidth; + static double collapsedWidthForContext(BuildContext _) => PlatformDetector.isTV() ? tvCollapsedWidth : collapsedWidth; static double horizontalPaddingForContext(BuildContext context, {required bool isCollapsed}) { if (!isCollapsed) return _horizontalPadding; diff --git a/lib/widgets/video_controls/video_controls.dart b/lib/widgets/video_controls/video_controls.dart index 9db39b90..aa714208 100644 --- a/lib/widgets/video_controls/video_controls.dart +++ b/lib/widgets/video_controls/video_controls.dart @@ -76,105 +76,6 @@ part 'parts/playback_input.dart'; part 'parts/track_controls.dart'; part 'parts/visibility.dart'; -/// Custom video controls builder for Plex with chapter, audio, and subtitle support -Widget plexVideoControlsBuilder( - Player player, - MediaItem metadata, { - VoidCallback? onNext, - VoidCallback? onPrevious, - List? availableVersions, - int? selectedMediaIndex, - String? selectedMediaSourceId, - TranscodeQualityPreset selectedQualityPreset = TranscodeQualityPreset.original, - bool serverSupportsTranscoding = false, - bool isTranscoding = false, - bool isOfflinePlayback = false, - List sourceAudioTracks = const [], - int? selectedAudioStreamId, - List sourceSubtitleTracks = const [], - int? selectedSubtitleStreamId, - int? sourcePartId, - VoidCallback? onTogglePIPMode, - int boxFitMode = 0, - VoidCallback? onCycleBoxFitMode, - VoidCallback? onCycleAudioTrack, - VoidCallback? onCycleSubtitleTrack, - Function(AudioTrack)? onAudioTrackChanged, - Function(SubtitleTrack)? onSubtitleTrackChanged, - Function(SubtitleTrack)? onSecondarySubtitleTrackChanged, - Future Function(Duration position)? onSeekRequested, - Function(Duration position)? onSeekCompleted, - VoidCallback? onBack, - void Function({required bool skipAutoPlayCountdown})? onReachedEnd, - bool canControl = true, - ValueNotifier? hasFirstFrame, - FocusNode? playNextFocusNode, - ValueNotifier? controlsVisible, - ShaderService? shaderService, - VoidCallback? onShaderChanged, - ScrubFrame? Function(Duration time)? thumbnailDataBuilder, - bool isLive = false, - String? liveChannelName, - CaptureBuffer? captureBuffer, - bool isAtLiveEdge = true, - double streamStartEpoch = 0, - int? currentPositionEpoch, - ValueChanged? onLiveSeek, - VoidCallback? onJumpToLive, - bool isAmbientLightingEnabled = false, - VoidCallback? onToggleAmbientLighting, - required PlayerToastController toastController, -}) { - return PlexVideoControls( - player: player, - metadata: metadata, - toastController: toastController, - onNext: onNext, - onPrevious: onPrevious, - availableVersions: availableVersions ?? [], - selectedMediaIndex: selectedMediaIndex ?? 0, - selectedMediaSourceId: selectedMediaSourceId, - selectedQualityPreset: selectedQualityPreset, - serverSupportsTranscoding: serverSupportsTranscoding, - isTranscoding: isTranscoding, - isOfflinePlayback: isOfflinePlayback, - sourceAudioTracks: sourceAudioTracks, - selectedAudioStreamId: selectedAudioStreamId, - sourceSubtitleTracks: sourceSubtitleTracks, - selectedSubtitleStreamId: selectedSubtitleStreamId, - sourcePartId: sourcePartId, - boxFitMode: boxFitMode, - onTogglePIPMode: onTogglePIPMode, - onCycleBoxFitMode: onCycleBoxFitMode, - onCycleAudioTrack: onCycleAudioTrack, - onCycleSubtitleTrack: onCycleSubtitleTrack, - onAudioTrackChanged: onAudioTrackChanged, - onSubtitleTrackChanged: onSubtitleTrackChanged, - onSecondarySubtitleTrackChanged: onSecondarySubtitleTrackChanged, - onSeekRequested: onSeekRequested, - onSeekCompleted: onSeekCompleted, - onBack: onBack, - onReachedEnd: onReachedEnd, - canControl: canControl, - hasFirstFrame: hasFirstFrame, - playNextFocusNode: playNextFocusNode, - controlsVisible: controlsVisible, - shaderService: shaderService, - onShaderChanged: onShaderChanged, - thumbnailDataBuilder: thumbnailDataBuilder, - isLive: isLive, - liveChannelName: liveChannelName, - captureBuffer: captureBuffer, - isAtLiveEdge: isAtLiveEdge, - streamStartEpoch: streamStartEpoch, - currentPositionEpoch: currentPositionEpoch, - onLiveSeek: onLiveSeek, - onJumpToLive: onJumpToLive, - isAmbientLightingEnabled: isAmbientLightingEnabled, - onToggleAmbientLighting: onToggleAmbientLighting, - ); -} - @visibleForTesting ({ List availableVersions,