mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-07-29 15:28:48 +02:00
fix(navigation): open download queue from snackbar actions
This commit is contained in:
@@ -30,6 +30,7 @@ import 'package:spotiflac_android/utils/clickable_metadata.dart';
|
||||
import 'package:spotiflac_android/widgets/cached_cover_image.dart';
|
||||
import 'package:spotiflac_android/widgets/motion_header_banner.dart';
|
||||
import 'package:spotiflac_android/widgets/cross_extension_share_sheet.dart';
|
||||
import 'package:spotiflac_android/widgets/view_queue_snackbar_action.dart';
|
||||
|
||||
class _ArtistCache {
|
||||
static final _cache = TtlCache<_CacheEntry>(const Duration(minutes: 10));
|
||||
@@ -1055,10 +1056,7 @@ class _ArtistScreenState extends ConsumerState<ArtistScreen>
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(message),
|
||||
action: SnackBarAction(
|
||||
label: context.l10n.snackbarViewQueue,
|
||||
onPressed: () {},
|
||||
),
|
||||
action: buildViewQueueSnackBarAction(context),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ import 'package:spotiflac_android/widgets/error_card.dart';
|
||||
import 'package:spotiflac_android/widgets/in_library_badge.dart';
|
||||
import 'package:spotiflac_android/widgets/preview_button.dart';
|
||||
import 'package:spotiflac_android/widgets/settings_group.dart';
|
||||
import 'package:spotiflac_android/widgets/view_queue_snackbar_action.dart';
|
||||
|
||||
part 'home_tab_helpers.dart';
|
||||
part 'home_tab_widgets.dart';
|
||||
@@ -1077,10 +1078,7 @@ class _HomeTabState extends ConsumerState<HomeTab>
|
||||
ScaffoldMessenger.of(this.context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(queueSnackbarMessage),
|
||||
action: SnackBarAction(
|
||||
label: l10n.snackbarViewQueue,
|
||||
onPressed: () {},
|
||||
),
|
||||
action: buildViewQueueSnackBarAction(this.context),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -1109,10 +1107,7 @@ class _HomeTabState extends ConsumerState<HomeTab>
|
||||
ScaffoldMessenger.of(this.context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(queueSnackbarMessage),
|
||||
action: SnackBarAction(
|
||||
label: l10n.snackbarViewQueue,
|
||||
onPressed: () {},
|
||||
),
|
||||
action: buildViewQueueSnackBarAction(this.context),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -105,6 +105,10 @@ class _MainShellState extends ConsumerState<MainShell>
|
||||
duration: const Duration(milliseconds: 180),
|
||||
value: 1,
|
||||
);
|
||||
ShellNavigationService.registerTabSelectionHandler(
|
||||
owner: this,
|
||||
handler: _onShellTabRequested,
|
||||
);
|
||||
ShellNavigationService.syncState(
|
||||
currentTabIndex: _currentIndex,
|
||||
showRepoTab: false,
|
||||
@@ -433,6 +437,7 @@ class _MainShellState extends ConsumerState<MainShell>
|
||||
@override
|
||||
void dispose() {
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
ShellNavigationService.unregisterTabSelectionHandler(this);
|
||||
_shareSubscription?.cancel();
|
||||
_pageController.dispose();
|
||||
_tabJumpTransitionController.dispose();
|
||||
@@ -452,6 +457,19 @@ class _MainShellState extends ConsumerState<MainShell>
|
||||
ref.read(trackProvider.notifier).clear();
|
||||
}
|
||||
|
||||
void _onShellTabRequested(ShellTab tab) {
|
||||
final showStore = ref.read(
|
||||
settingsProvider.select((s) => s.showExtensionStore),
|
||||
);
|
||||
final index = switch (tab) {
|
||||
ShellTab.home => 0,
|
||||
ShellTab.library => 1,
|
||||
ShellTab.repository => showStore ? 2 : null,
|
||||
ShellTab.settings => showStore ? 3 : 2,
|
||||
};
|
||||
if (index != null) _onNavTap(index);
|
||||
}
|
||||
|
||||
void _onNavTap(int index) {
|
||||
if (index == 0 && _currentIndex == 0) {
|
||||
_resetHomeToMain();
|
||||
|
||||
Reference in New Issue
Block a user