31 lines
980 B
Dart
31 lines
980 B
Dart
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));
|
|
}
|
|
}
|
|
}
|