refactor(accessibility): simplify label handling

This commit is contained in:
Storm Dragon 2026-02-27 21:07:21 -05:00
parent 53f58aeb8b
commit 72333b7794
2 changed files with 31 additions and 11 deletions

View file

@ -15,6 +15,8 @@ import 'package:vaani/shared/extensions/duration_format.dart';
class SleepTimerButton extends HookConsumerWidget { class SleepTimerButton extends HookConsumerWidget {
const SleepTimerButton({super.key}); const SleepTimerButton({super.key});
static const _sleepTimerLabel = 'Sleep timer';
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final sleepTimer = ref.watch(sleepTimerProvider); final sleepTimer = ref.watch(sleepTimerProvider);
@ -23,10 +25,10 @@ class SleepTimerButton extends HookConsumerWidget {
// if sleep timer is not active, show the button with the sleep timer icon // if sleep timer is not active, show the button with the sleep timer icon
// if the sleep timer is active, show the remaining time in a pill shaped container // if the sleep timer is active, show the remaining time in a pill shaped container
return Tooltip( return Tooltip(
message: 'Sleep Timer', message: _sleepTimerLabel,
child: Semantics( child: Semantics(
button: true, button: true,
label: 'Sleep timer', label: _sleepTimerLabel,
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
appLogger.fine('Sleep Timer button pressed'); appLogger.fine('Sleep Timer button pressed');

View file

@ -206,6 +206,27 @@ class _BookOnShelfPlayButton extends HookConsumerWidget {
/// the id of the library item of the book /// the id of the library item of the book
final String libraryItemId; final String libraryItemId;
String getPlayTooltip({
required bool isCurrentBookSetInPlayer,
required bool isPlayingThisBook,
required bool isBookCompleted,
required bool hasProgress,
}) {
if (isCurrentBookSetInPlayer) {
return isPlayingThisBook ? 'Pause' : 'Resume';
}
if (isBookCompleted) {
return 'Listen again';
}
if (hasProgress) {
return 'Continue listening';
}
return 'Start listening';
}
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final me = ref.watch(meProvider); final me = ref.watch(meProvider);
@ -218,15 +239,12 @@ class _BookOnShelfPlayButton extends HookConsumerWidget {
(element) => element.libraryItemId == libraryItemId, (element) => element.libraryItemId == libraryItemId,
); );
final isBookCompleted = userProgress?.isFinished ?? false; final isBookCompleted = userProgress?.isFinished ?? false;
final playTooltip = isCurrentBookSetInPlayer final playTooltip = getPlayTooltip(
? isPlayingThisBook isCurrentBookSetInPlayer: isCurrentBookSetInPlayer,
? 'Pause' isPlayingThisBook: isPlayingThisBook,
: 'Resume' isBookCompleted: isBookCompleted,
: isBookCompleted hasProgress: userProgress?.progress != null,
? 'Listen again' );
: userProgress?.progress != null
? 'Continue listening'
: 'Start listening';
const size = 40.0; const size = 40.0;