-
Notifications
You must be signed in to change notification settings - Fork 535
/
Copy pathstatus_message_provider.dart
37 lines (30 loc) · 1.17 KB
/
status_message_provider.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:apidash_core/apidash_core.dart';
import 'package:apidash/providers/collection_providers.dart';
import 'package:apidash/utils/status_validator.dart';
enum StatusMessageType { defaultType, info, warning, error }
class StatusMessage {
final String message;
final StatusMessageType type;
StatusMessage(this.message, this.type);
}
final statusMessageProvider =
StateNotifierProvider<GlobalStatusBarManager, StatusMessage>((ref) {
return GlobalStatusBarManager(ref);
});
class GlobalStatusBarManager extends StateNotifier<StatusMessage> {
final Ref ref;
GlobalStatusBarManager(this.ref)
: super(StatusMessage("Global Status Bar", StatusMessageType.defaultType)) {
// Listen for request changes and validate
ref.listen(selectedRequestModelProvider, (previous, next) {
final method = next?.httpRequestModel?.method ?? HTTPVerb.get;
final body = next?.httpRequestModel?.body;
_updateStatusMessage(StatusValidator().validateRequest(method, body));
});
}
// Updates the status message
void _updateStatusMessage(StatusMessage newMessage) {
state = newMessage;
}
}