From f000a73cab5ea93192548a13866dff7855b30baa Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Wed, 24 Jul 2024 13:08:13 -0400 Subject: [PATCH] Add stand-in focus mode disable screen --- lib/controls/focus_mode_menu_item.dart | 6 ++-- lib/routes.dart | 7 ++++ lib/screens/disable_focus_mode_screen.dart | 41 ++++++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 lib/screens/disable_focus_mode_screen.dart diff --git a/lib/controls/focus_mode_menu_item.dart b/lib/controls/focus_mode_menu_item.dart index 2a5a270..018c7f4 100644 --- a/lib/controls/focus_mode_menu_item.dart +++ b/lib/controls/focus_mode_menu_item.dart @@ -28,9 +28,8 @@ class FocusModeMenuItem extends ConsumerWidget { title: Text(title), onTap: () async { if (focusMode.enabled) { - ref - .read(focusModeProvider.notifier) - .setMode(const FocusModeData(false)); + context.pop(); + context.push(ScreenPaths.focusModeDisable); } else { final result = await showChooseOptions(context, 'How long would you like to focus?', _options.keys.toList()); @@ -40,6 +39,7 @@ class FocusModeMenuItem extends ConsumerWidget { final disableTime = DateTime.now().add(_options[result]!); final update = FocusModeData(true, disableTime: disableTime); ref.read(focusModeProvider.notifier).setMode(update); + context.pop(); context.go(ScreenPaths.timelines); } }, diff --git a/lib/routes.dart b/lib/routes.dart index 8457991..c10147e 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -7,6 +7,7 @@ import 'screens/circle_create_screen.dart'; import 'screens/circle_editor_screen.dart'; import 'screens/circle_management_screen.dart'; import 'screens/contacts_screen.dart'; +import 'screens/disable_focus_mode_screen.dart'; import 'screens/editor.dart'; import 'screens/filter_editor_screen.dart'; import 'screens/filters_screen.dart'; @@ -35,6 +36,7 @@ class ScreenPaths { static String thread = '/thread'; static String connectHandle = '/connect'; static String contacts = '/contacts'; + static String focusModeDisable = '/focus_mode_disable'; static String splash = '/splash'; static String settings = '/settings'; static String messages = '/messages'; @@ -66,6 +68,11 @@ final routes = [ name: ScreenPaths.blocks, builder: (context, state) => const BlocksScreen(), ), + GoRoute( + path: ScreenPaths.focusModeDisable, + name: ScreenPaths.focusModeDisable, + builder: (context, state) => const DisableFocusModeScreen(), + ), GoRoute( path: ScreenPaths.filters, name: ScreenPaths.filters, diff --git a/lib/screens/disable_focus_mode_screen.dart b/lib/screens/disable_focus_mode_screen.dart new file mode 100644 index 0000000..8edce16 --- /dev/null +++ b/lib/screens/disable_focus_mode_screen.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; +import 'package:relatica/models/focus_mode_data.dart'; +import 'package:relatica/riverpod_controllers/focus_mode.dart'; +import 'package:relatica/routes.dart'; + +class DisableFocusModeScreen extends ConsumerStatefulWidget { + const DisableFocusModeScreen({super.key}); + + @override + ConsumerState createState() => + _DisableFocusModeScreenState(); +} + +class _DisableFocusModeScreenState + extends ConsumerState { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Unlock Focus Mode?'), + ), + body: Center( + child: Column( + children: [ + Text('Want to disable focus mode?'), + ElevatedButton( + onPressed: () { + ref + .read(focusModeProvider.notifier) + .setMode(FocusModeData(false)); + context.go(ScreenPaths.timelines); + }, + child: Text('Disable')) + ], + ), + ), + ); + } +}