fix: prompt only when changes made

This commit is contained in:
Yashas H Majmudar
2024-03-27 22:06:32 +05:30
parent f3a7865459
commit 017bc4f108
2 changed files with 15 additions and 5 deletions

View File

@ -57,7 +57,7 @@ class _AppState extends ConsumerState<App> with WindowListener {
bool isPreventClose = await windowManager.isPreventClose(); bool isPreventClose = await windowManager.isPreventClose();
if (isPreventClose) { if (isPreventClose) {
if (ref.watch( if (ref.watch(
settingsProvider.select((value) => value.promptBeforeClosing))) { settingsProvider.select((value) => value.promptBeforeClosing)) && ref.watch(collectionStateNotifierProvider.notifier).changed) {
showDialog( showDialog(
context: context, context: context,
builder: (_) => AlertDialog( builder: (_) => AlertDialog(

View File

@ -1,11 +1,12 @@
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'settings_providers.dart'; import 'package:http/http.dart' as http;
import 'ui_providers.dart';
import '../consts.dart';
import '../models/models.dart'; import '../models/models.dart';
import '../services/services.dart' show hiveHandler, HiveHandler, request; import '../services/services.dart' show hiveHandler, HiveHandler, request;
import '../utils/utils.dart' show getNewUuid, collectionToHAR; import '../utils/utils.dart' show getNewUuid, collectionToHAR;
import '../consts.dart'; import 'settings_providers.dart';
import 'package:http/http.dart' as http; import 'ui_providers.dart';
final selectedIdStateProvider = StateProvider<String?>((ref) => null); final selectedIdStateProvider = StateProvider<String?>((ref) => null);
@ -46,6 +47,7 @@ class CollectionStateNotifier
final Ref ref; final Ref ref;
final HiveHandler hiveHandler; final HiveHandler hiveHandler;
final baseResponseModel = const ResponseModel(); final baseResponseModel = const ResponseModel();
bool changed = false;
bool hasId(String id) => state?.keys.contains(id) ?? false; bool hasId(String id) => state?.keys.contains(id) ?? false;
@ -61,6 +63,7 @@ class CollectionStateNotifier
var map = {...state!}; var map = {...state!};
map[id] = newRequestModel; map[id] = newRequestModel;
state = map; state = map;
changed = true;
ref ref
.read(requestSequenceProvider.notifier) .read(requestSequenceProvider.notifier)
.update((state) => [id, ...state]); .update((state) => [id, ...state]);
@ -94,6 +97,7 @@ class CollectionStateNotifier
var map = {...state!}; var map = {...state!};
map.remove(id); map.remove(id);
state = map; state = map;
changed = true;
} }
void clearResponse(String? id) { void clearResponse(String? id) {
@ -107,6 +111,7 @@ class CollectionStateNotifier
var map = {...state!}; var map = {...state!};
map[id] = newModel; map[id] = newModel;
state = map; state = map;
changed = true;
} }
void duplicate(String id) { void duplicate(String id) {
@ -123,6 +128,7 @@ class CollectionStateNotifier
var map = {...state!}; var map = {...state!};
map[newId] = newModel; map[newId] = newModel;
state = map; state = map;
changed = true;
ref.read(requestSequenceProvider.notifier).state = [...itemIds]; ref.read(requestSequenceProvider.notifier).state = [...itemIds];
ref.read(selectedIdStateProvider.notifier).state = newId; ref.read(selectedIdStateProvider.notifier).state = newId;
@ -167,6 +173,7 @@ class CollectionStateNotifier
var map = {...state!}; var map = {...state!};
map[id] = newModel; map[id] = newModel;
state = map; state = map;
changed = true;
} }
Future<void> sendRequest(String id) async { Future<void> sendRequest(String id) async {
@ -183,6 +190,7 @@ class CollectionStateNotifier
var map = {...state!}; var map = {...state!};
map[id] = requestModel.copyWith(isWorking: true); map[id] = requestModel.copyWith(isWorking: true);
state = map; state = map;
changed = true;
(http.Response?, Duration?, String?)? responseRec = await request( (http.Response?, Duration?, String?)? responseRec = await request(
requestModel, requestModel,
@ -213,6 +221,7 @@ class CollectionStateNotifier
map = {...state!}; map = {...state!};
map[id] = newRequestModel; map[id] = newRequestModel;
state = map; state = map;
changed = true;
} }
Future<void> clearData() async { Future<void> clearData() async {
@ -222,6 +231,7 @@ class CollectionStateNotifier
ref.read(clearDataStateProvider.notifier).state = false; ref.read(clearDataStateProvider.notifier).state = false;
ref.read(requestSequenceProvider.notifier).state = []; ref.read(requestSequenceProvider.notifier).state = [];
state = {}; state = {};
changed = true;
} }
bool loadData() { bool loadData() {