refactor: split providers into feature modules
This commit is contained in:
30
lib/features/stats/providers/event_log_providers.dart
Normal file
30
lib/features/stats/providers/event_log_providers.dart
Normal file
@@ -0,0 +1,30 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import '../../../app/error_message.dart';
|
||||
import '../../../app/load_state.dart';
|
||||
import '../../../models/event_log_item.dart';
|
||||
import '../../shared/providers/core_providers.dart';
|
||||
|
||||
final eventLogProvider =
|
||||
NotifierProvider<EventLogNotifier, LoadState<List<EventLogItem>>>(
|
||||
() => EventLogNotifier(),
|
||||
);
|
||||
|
||||
class EventLogNotifier extends Notifier<LoadState<List<EventLogItem>>> {
|
||||
@override
|
||||
LoadState<List<EventLogItem>> build() =>
|
||||
const LoadState.idle(<EventLogItem>[]);
|
||||
|
||||
Future<void> load({int limit = 100}) async {
|
||||
state = LoadState.loading(state.data);
|
||||
try {
|
||||
final api = ref.read(apiProvider);
|
||||
final res = await api.getStatsLog(limit: limit);
|
||||
final events = EventLogItem.listFromApi(res.data);
|
||||
|
||||
state = events.isEmpty ? LoadState.empty(events) : LoadState.data(events);
|
||||
} catch (e) {
|
||||
state = LoadState.error(state.data, describeLoadError(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user