From 0e933d7d5cf80f1f2900747480e9c3de612f9dea Mon Sep 17 00:00:00 2001 From: Ankit Mahato Date: Sun, 6 Apr 2025 15:43:57 +0530 Subject: [PATCH] update --- .../common_widgets/sidebar_save_button.dart | 11 +++++++++-- lib/utils/save_utils.dart | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) 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(); +}