mirror of
https://github.com/foss42/apidash.git
synced 2025-06-06 11:28:07 +08:00
fix: prompt only when changes made
This commit is contained in:
@ -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(
|
||||||
|
@ -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() {
|
||||||
|
Reference in New Issue
Block a user