From e1889d65603aed53ec71501ac4ec1059dabdb80f Mon Sep 17 00:00:00 2001 From: MSOB7YY Date: Mon, 9 Oct 2023 12:14:20 +0300 Subject: [PATCH] chore: few tweaks --- lib/controller/audio_handler.dart | 1 + lib/controller/miniplayer_controller.dart | 12 +++--------- lib/controller/navigator_controller.dart | 14 ++++++++++++++ lib/controller/video_controller.dart | 7 +++++-- lib/core/namida_converter_ext.dart | 13 +++++++++++++ lib/packages/mp.dart | 20 +++++++++++++++++++- lib/youtube/yt_utils.dart | 5 ++--- 7 files changed, 57 insertions(+), 15 deletions(-) diff --git a/lib/controller/audio_handler.dart b/lib/controller/audio_handler.dart index d74081d0..76391059 100644 --- a/lib/controller/audio_handler.dart +++ b/lib/controller/audio_handler.dart @@ -576,6 +576,7 @@ class NamidaAudioVideoHandler extends BasicAudioHandler { setVolume(settings.playerVolume.value); if (waitForBuffer) await _waitForAllBuffers(); await _playAudioThenVideo(); + settings.wakelockMode.value.toggleOn(currentVideoStream.value != null || currentCachedVideo.value != null); } if (!wasPlayingFromCache) { startSleepAfterMinCount(); diff --git a/lib/controller/miniplayer_controller.dart b/lib/controller/miniplayer_controller.dart index 76c6b225..e528bd2a 100644 --- a/lib/controller/miniplayer_controller.dart +++ b/lib/controller/miniplayer_controller.dart @@ -7,13 +7,12 @@ import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; -import 'package:wakelock_plus/wakelock_plus.dart'; +import 'package:namida/core/namida_converter_ext.dart'; import 'package:namida/controller/player_controller.dart'; import 'package:namida/controller/settings_controller.dart'; import 'package:namida/controller/video_controller.dart'; import 'package:namida/core/dimensions.dart'; -import 'package:namida/core/enums.dart'; import 'package:namida/core/extensions.dart'; import 'package:namida/core/icon_fonts/broken_icons.dart'; import 'package:namida/packages/mp.dart'; @@ -294,16 +293,11 @@ class MiniPlayerController { } void _toggleWakelockOn() { - if (settings.wakelockMode.value == WakelockMode.expanded) { - WakelockPlus.enable(); - } - if (settings.wakelockMode.value == WakelockMode.expandedAndVideo && VideoController.inst.shouldShowVideo) { - WakelockPlus.enable(); - } + settings.wakelockMode.value.toggleOn(VideoController.inst.shouldShowVideo); } void _toggleWakelockOff() { - WakelockPlus.disable(); + settings.wakelockMode.value.toggleOff(); } void snapToExpanded({bool haptic = true}) { diff --git a/lib/controller/navigator_controller.dart b/lib/controller/navigator_controller.dart index 0cc31ccc..f8bf6f97 100644 --- a/lib/controller/navigator_controller.dart +++ b/lib/controller/navigator_controller.dart @@ -70,6 +70,16 @@ class NamidaNavigator { MiniPlayerController.inst.ytMiniplayerKey.currentState?.animateToState(false); } + void hideStuff({ + bool searchMenuAndUnfocus = true, + bool minimizeMiniplayers = true, + bool closeDialogs = true, + }) { + if (searchMenuAndUnfocus) _hideSearchMenuAndUnfocus(); + if (minimizeMiniplayers) _minimizeMiniplayer(); + if (closeDialogs) closeAllDialogs(); + } + void _hideEverything() { _hideSearchMenuAndUnfocus(); _minimizeMiniplayer(); @@ -290,6 +300,10 @@ class NamidaNavigator { innerDrawerKey.currentState?.close(); return; } + if (MiniPlayerController.inst.ytMiniplayerKey.currentState?.isExpanded == true) { + MiniPlayerController.inst.ytMiniplayerKey.currentState?.animateToState(false); + return; + } if (ScrollSearchController.inst.isGlobalSearchMenuShown.value) { _hideSearchMenuAndUnfocus(); return; diff --git a/lib/controller/video_controller.dart b/lib/controller/video_controller.dart index b764f42b..f1558fb2 100644 --- a/lib/controller/video_controller.dart +++ b/lib/controller/video_controller.dart @@ -7,7 +7,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart' hide Response; import 'package:http/http.dart' as http; -import 'package:namida/ui/widgets/custom_widgets.dart'; import 'package:newpipeextractor_dart/models/streams.dart'; import 'package:picture_in_picture/picture_in_picture.dart'; import 'package:video_player/video_player.dart'; @@ -21,11 +20,13 @@ import 'package:namida/controller/indexer_controller.dart'; import 'package:namida/controller/navigator_controller.dart'; import 'package:namida/controller/player_controller.dart'; import 'package:namida/controller/settings_controller.dart'; -import 'package:namida/youtube/controller/youtube_controller.dart'; import 'package:namida/core/constants.dart'; import 'package:namida/core/enums.dart'; import 'package:namida/core/extensions.dart'; +import 'package:namida/core/namida_converter_ext.dart'; +import 'package:namida/ui/widgets/custom_widgets.dart'; import 'package:namida/ui/widgets/video_widget.dart'; +import 'package:namida/youtube/controller/youtube_controller.dart'; class NamidaVideoWidget extends StatelessWidget { final bool enableControls; @@ -329,6 +330,8 @@ class VideoController { ]); await Future.delayed(const Duration(milliseconds: 100)); await Player.inst.refreshVideoSeekPosition(delayed: true); + + settings.wakelockMode.value.toggleOn(shouldShowVideo); }); } diff --git a/lib/core/namida_converter_ext.dart b/lib/core/namida_converter_ext.dart index 6152d51e..ab8a778e 100644 --- a/lib/core/namida_converter_ext.dart +++ b/lib/core/namida_converter_ext.dart @@ -10,6 +10,7 @@ import 'package:get/get.dart'; import 'package:history_manager/history_manager.dart'; import 'package:newpipeextractor_dart/newpipeextractor_dart.dart'; import 'package:path/path.dart' as p; +import 'package:wakelock_plus/wakelock_plus.dart'; import 'package:namida/class/lang.dart'; import 'package:namida/class/media_info.dart'; @@ -399,6 +400,18 @@ extension PlaylistToQueueSource on Playlist { extension WAKELOCKMODETEXT on WakelockMode { String toText() => _NamidaConverters.inst.getTitle(this); + void toggleOn(bool isShowingVideo) { + if (settings.wakelockMode.value == WakelockMode.expanded) { + WakelockPlus.enable(); + } + if (settings.wakelockMode.value == WakelockMode.expandedAndVideo && isShowingVideo) { + WakelockPlus.enable(); + } + } + + void toggleOff() { + WakelockPlus.enable(); + } } extension NotificationTapActionTEXT on NotificationTapAction { diff --git a/lib/packages/mp.dart b/lib/packages/mp.dart index b562e3c7..367f4ba5 100644 --- a/lib/packages/mp.dart +++ b/lib/packages/mp.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:namida/controller/settings_controller.dart'; +import 'package:namida/controller/video_controller.dart'; import 'package:namida/core/extensions.dart'; +import 'package:namida/core/namida_converter_ext.dart'; /// Used to retain state for cases like navigating after pip mode. bool _wasExpanded = false; @@ -56,6 +59,8 @@ class NamidaYTMiniplayerState extends State with SingleTicke super.dispose(); } + bool get isExpanded => _dragheight >= widget.maxHeight - widget.minHeight; + double _dragheight = 0; double get percentage => (controller.value - widget.minHeight) / (widget.maxHeight - widget.minHeight); @@ -72,13 +77,26 @@ class NamidaYTMiniplayerState extends State with SingleTicke void animateToState(bool toExpanded, {Duration? dur}) { _updateHeight(toExpanded ? widget.maxHeight : widget.minHeight, duration: dur ?? widget.duration); _wasExpanded = toExpanded; + if (toExpanded) { + _toggleWakelockOn(); + } else { + _toggleWakelockOff(); + } + } + + void _toggleWakelockOn() { + settings.wakelockMode.value.toggleOn(VideoController.vcontroller.isInitialized); + } + + void _toggleWakelockOff() { + settings.wakelockMode.value.toggleOff(); } @override Widget build(BuildContext context) { return WillPopScope( onWillPop: () async { - if (_dragheight >= widget.maxHeight - widget.minHeight) { + if (isExpanded) { animateToState(false); return false; } diff --git a/lib/youtube/yt_utils.dart b/lib/youtube/yt_utils.dart index ca6b7a04..b5d2030b 100644 --- a/lib/youtube/yt_utils.dart +++ b/lib/youtube/yt_utils.dart @@ -172,10 +172,9 @@ class YTUtils { void jump() => YoutubeHistoryController.inst.scrollController.jumpTo(initialScrollOffset); + NamidaNavigator.inst.hideStuff(); + if (YoutubeHistoryController.inst.scrollController.hasClients) { - NamidaNavigator.inst.closeAllDialogs(); - MiniPlayerController.inst.snapToMini(); - MiniPlayerController.inst.ytMiniplayerKey.currentState?.animateToState(false); jump(); } else { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {