mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2024-11-10 19:03:12 +00:00
refactor: Unify calls to show jobs modal sheets
Also open a jobs modal sheet when starting nix collect garbage Closes #541
This commit is contained in:
parent
e13b324afa
commit
a490f5391b
|
@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:ionicons/ionicons.dart';
|
||||
import 'package:selfprivacy/logic/cubit/client_jobs/client_jobs_cubit.dart';
|
||||
import 'package:selfprivacy/ui/components/jobs_content/jobs_content.dart';
|
||||
import 'package:selfprivacy/utils/show_jobs_modal.dart';
|
||||
|
||||
class BrandFab extends StatefulWidget {
|
||||
const BrandFab({
|
||||
|
@ -60,19 +60,7 @@ class _BrandFabState extends State<BrandFab>
|
|||
child: FloatingActionButton(
|
||||
onPressed: () {
|
||||
// TODO: Make a hero animation to the screen
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
useRootNavigator: true,
|
||||
isScrollControlled: true,
|
||||
builder: (final BuildContext context) => DraggableScrollableSheet(
|
||||
expand: false,
|
||||
maxChildSize: 0.9,
|
||||
minChildSize: 0.4,
|
||||
initialChildSize: 0.6,
|
||||
builder: (final context, final scrollController) =>
|
||||
JobsContent(controller: scrollController),
|
||||
),
|
||||
);
|
||||
showModalJobsSheet(context: context);
|
||||
},
|
||||
isExtended: widget.extended,
|
||||
tooltip: 'jobs.title'.tr(),
|
||||
|
|
|
@ -4,9 +4,9 @@ import 'package:flutter/material.dart';
|
|||
import 'package:ionicons/ionicons.dart';
|
||||
import 'package:selfprivacy/logic/cubit/client_jobs/client_jobs_cubit.dart';
|
||||
import 'package:selfprivacy/ui/components/drawers/support_drawer.dart';
|
||||
import 'package:selfprivacy/ui/components/jobs_content/jobs_content.dart';
|
||||
import 'package:selfprivacy/ui/helpers/widget_size.dart';
|
||||
import 'package:selfprivacy/utils/breakpoints.dart';
|
||||
import 'package:selfprivacy/utils/show_jobs_modal.dart';
|
||||
|
||||
class BrandHeroScreen extends StatelessWidget {
|
||||
const BrandHeroScreen({
|
||||
|
@ -146,20 +146,7 @@ class _HeroSliverAppBarState extends State<HeroSliverAppBar> {
|
|||
duration: const Duration(milliseconds: 300),
|
||||
child: IconButton(
|
||||
onPressed: () {
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
useRootNavigator: true,
|
||||
isScrollControlled: true,
|
||||
builder: (final BuildContext context) =>
|
||||
DraggableScrollableSheet(
|
||||
expand: false,
|
||||
maxChildSize: 0.9,
|
||||
minChildSize: 0.4,
|
||||
initialChildSize: 0.6,
|
||||
builder: (final context, final scrollController) =>
|
||||
JobsContent(controller: scrollController),
|
||||
),
|
||||
);
|
||||
showModalJobsSheet(context: context);
|
||||
},
|
||||
icon: Icon(
|
||||
isJobsListEmpty ? Ionicons.flash_outline : Ionicons.flash,
|
||||
|
|
|
@ -9,9 +9,9 @@ import 'package:selfprivacy/logic/models/service.dart';
|
|||
import 'package:selfprivacy/ui/components/brand_header/brand_header.dart';
|
||||
import 'package:selfprivacy/ui/components/buttons/brand_button.dart';
|
||||
import 'package:selfprivacy/ui/components/info_box/info_box.dart';
|
||||
import 'package:selfprivacy/ui/components/jobs_content/jobs_content.dart';
|
||||
import 'package:selfprivacy/ui/components/storage_list_items/server_storage_list_item.dart';
|
||||
import 'package:selfprivacy/ui/components/storage_list_items/service_migration_list_item.dart';
|
||||
import 'package:selfprivacy/utils/show_jobs_modal.dart';
|
||||
|
||||
@RoutePage()
|
||||
class ServicesMigrationPage extends StatefulWidget {
|
||||
|
@ -191,20 +191,7 @@ class _ServicesMigrationPageState extends State<ServicesMigrationPage> {
|
|||
}
|
||||
}
|
||||
context.router.popUntilRoot();
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
useRootNavigator: true,
|
||||
isScrollControlled: true,
|
||||
builder: (final BuildContext context) =>
|
||||
DraggableScrollableSheet(
|
||||
expand: false,
|
||||
maxChildSize: 0.9,
|
||||
minChildSize: 0.4,
|
||||
initialChildSize: 0.6,
|
||||
builder: (final context, final scrollController) =>
|
||||
JobsContent(controller: scrollController),
|
||||
),
|
||||
);
|
||||
showModalJobsSheet(context: context);
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 32),
|
||||
|
|
|
@ -12,6 +12,7 @@ import 'package:selfprivacy/ui/components/buttons/outlined_button.dart';
|
|||
import 'package:selfprivacy/ui/components/storage_list_items/server_storage_list_item.dart';
|
||||
import 'package:selfprivacy/ui/layouts/brand_hero_screen.dart';
|
||||
import 'package:selfprivacy/ui/router/router.dart';
|
||||
import 'package:selfprivacy/utils/show_jobs_modal.dart';
|
||||
|
||||
@RoutePage()
|
||||
class ServerStoragePage extends StatefulWidget {
|
||||
|
@ -73,7 +74,10 @@ class _ServerStoragePageState extends State<ServerStoragePage> {
|
|||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: BrandOutlinedButton(
|
||||
title: 'jobs.collect_nix_garbage'.tr(),
|
||||
onPressed: context.read<JobsCubit>().collectNixGarbage,
|
||||
onPressed: () {
|
||||
context.read<JobsCubit>().collectNixGarbage();
|
||||
showModalJobsSheet(context: context);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
19
lib/utils/show_jobs_modal.dart
Normal file
19
lib/utils/show_jobs_modal.dart
Normal file
|
@ -0,0 +1,19 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:selfprivacy/ui/components/jobs_content/jobs_content.dart';
|
||||
|
||||
Future<T?> showModalJobsSheet<T>({
|
||||
required final BuildContext context,
|
||||
}) =>
|
||||
showModalBottomSheet<T>(
|
||||
context: context,
|
||||
useRootNavigator: true,
|
||||
isScrollControlled: true,
|
||||
builder: (final BuildContext context) => DraggableScrollableSheet(
|
||||
expand: false,
|
||||
maxChildSize: 0.9,
|
||||
minChildSize: 0.4,
|
||||
initialChildSize: 0.6,
|
||||
builder: (final context, final scrollController) =>
|
||||
JobsContent(controller: scrollController),
|
||||
),
|
||||
);
|
Loading…
Reference in a new issue