Files
Prisma/lib/features/viewed/presentation/viewed_controller.dart
T

29 lines
817 B
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../backend/backend.dart';
import '../../../core/utils/result.dart';
final viewedControllerProvider =
AsyncNotifierProvider<ViewedController, List<Post>>(ViewedController.new);
class ViewedController extends AsyncNotifier<List<Post>> {
@override
Future<List<Post>> build() => _load();
Future<void> refresh() async {
state = AsyncData(await _load());
}
Future<void> clear() async {
await ref.read(viewedHistoryServiceProvider).clearHistory();
ref.invalidate(viewedKeysProvider);
state = const AsyncData([]);
}
Future<List<Post>> _load() async {
final result =
await ref.read(viewedHistoryServiceProvider).getViewedPosts();
return result is Success<List<Post>> ? result.data : const [];
}
}