diff --git a/lib/screens/common_widgets/sidebar_save_button.dart b/lib/screens/common_widgets/sidebar_save_button.dart index 6084651f..d92b88b0 100644 --- a/lib/screens/common_widgets/sidebar_save_button.dart +++ b/lib/screens/common_widgets/sidebar_save_button.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:apidash/consts.dart'; import 'package:apidash/providers/providers.dart'; -import '../../common/utils.dart'; +import 'package:apidash/utils/utils.dart'; class SaveButton extends ConsumerWidget { const SaveButton({super.key}); @@ -16,7 +16,14 @@ class SaveButton extends ConsumerWidget { onPressed: (savingData || !hasUnsavedChanges) ? null : () async { - await saveData(context, ref); + await saveAndShowDialog(context, onSave: () async { + await ref + .read(collectionStateNotifierProvider.notifier) + .saveData(); + await ref + .read(environmentsStateNotifierProvider.notifier) + .saveEnvironments(); + }); }, icon: const Icon( Icons.save, diff --git a/lib/utils/save_utils.dart b/lib/utils/save_utils.dart index 7bd31903..9f850789 100644 --- a/lib/utils/save_utils.dart +++ b/lib/utils/save_utils.dart @@ -1,7 +1,9 @@ import 'package:apidash_design_system/apidash_design_system.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:apidash/utils/utils.dart'; +import 'package:apidash/widgets/widgets.dart'; Future saveCollection( Map data, @@ -49,3 +51,16 @@ Future saveToDownloads( sm.hideCurrentSnackBar(); sm.showSnackBar(getSnackBar(message, small: false)); } + +Future saveAndShowDialog( + BuildContext context, { + AsyncCallback? onSave, +}) async { + final overlayWidget = OverlayWidgetTemplate(context: context); + overlayWidget.show(widget: const SavingOverlay(saveCompleted: false)); + await onSave?.call(); + overlayWidget.hide(); + overlayWidget.show(widget: const SavingOverlay(saveCompleted: true)); + await Future.delayed(const Duration(seconds: 1)); + overlayWidget.hide(); +}