Skip to content

Commit bcae51a

Browse files
committed
Providers refactoring
1 parent 2668f04 commit bcae51a

18 files changed

+51
-52
lines changed

lib/src/model/account/account_repository.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ final kidModeProvider = FutureProvider.autoDispose<bool>((ref) async {
2424

2525
/// A provider for the [AccountRepository].
2626
final accountRepositoryProvider = Provider<AccountRepository>((ref) {
27-
final client = ref.read(lichessClientProvider);
28-
final aggregator = ref.read(aggregatorProvider);
27+
final client = ref.watch(lichessClientProvider);
28+
final aggregator = ref.watch(aggregatorProvider);
2929
return AccountRepository(client, aggregator);
3030
}, name: 'AccountRepositoryProvider');
3131

lib/src/model/blog/blog_repository.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ final blogCarouselProvider = FutureProvider.autoDispose<IList<BlogPost>>((ref) {
99
}, name: 'BlogCarouselProvider');
1010

1111
final blogRepositoryProvider = Provider<BlogRepository>((ref) {
12-
final client = ref.read(lichessClientProvider);
13-
final aggregator = ref.read(aggregatorProvider);
12+
final client = ref.watch(lichessClientProvider);
13+
final aggregator = ref.watch(aggregatorProvider);
1414
return BlogRepository(client, aggregator);
1515
}, name: 'BlogRepositoryProvider');
1616

lib/src/model/broadcast/broadcast_repository.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import 'package:lichess_mobile/src/utils/json.dart';
1212

1313
/// A provider for the [BroadcastRepository].
1414
final broadcastRepositoryProvider = Provider<BroadcastRepository>((ref) {
15-
final client = ref.read(lichessClientProvider);
16-
final aggregator = ref.read(aggregatorProvider);
15+
final client = ref.watch(lichessClientProvider);
16+
final aggregator = ref.watch(aggregatorProvider);
1717
return BroadcastRepository(client, aggregator);
1818
}, name: 'BroadcastRepositoryProvider');
1919

lib/src/model/challenge/challenge_repository.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import 'package:lichess_mobile/src/network/http.dart';
1010

1111
/// A provider for [ChallengeRepository].
1212
final challengeRepositoryProvider = Provider<ChallengeRepository>((Ref ref) {
13-
return ChallengeRepository(ref.read(lichessClientProvider), ref.read(aggregatorProvider));
13+
return ChallengeRepository(ref.watch(lichessClientProvider), ref.watch(aggregatorProvider));
1414
}, name: 'ChallengeRepositoryProvider');
1515

1616
typedef ChallengesList = ({IList<Challenge> inward, IList<Challenge> outward});

lib/src/model/game/game_repository.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import 'package:lichess_mobile/src/network/http.dart';
1212

1313
/// A provider for the [GameRepository].
1414
final gameRepositoryProvider = Provider<GameRepository>((ref) {
15-
final client = ref.read(lichessClientProvider);
16-
final aggregator = ref.read(aggregatorProvider);
15+
final client = ref.watch(lichessClientProvider);
16+
final aggregator = ref.watch(aggregatorProvider);
1717
return GameRepository(client, aggregator);
1818
}, name: 'GameRepositoryProvider');
1919

lib/src/model/message/message_repository.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import 'package:lichess_mobile/src/network/http.dart';
77

88
/// A provider that gets the conversation data for the current user.
99
final contactsProvider = FutureProvider.autoDispose<Contacts>((ref) {
10-
return ref.read(messageRepositoryProvider).loadContacts();
10+
return ref.watch(messageRepositoryProvider).loadContacts();
1111
}, name: 'ContactsProvider');
1212

1313
/// A provider for [MessageRepository].
1414
final messageRepositoryProvider = Provider<MessageRepository>((ref) {
15-
return MessageRepository(ref.read(lichessClientProvider), ref.read(aggregatorProvider));
15+
return MessageRepository(ref.watch(lichessClientProvider), ref.watch(aggregatorProvider));
1616
}, name: 'MessageRepositoryProvider');
1717

1818
/// A provider that gets the unread messages count for the current user.

lib/src/model/puzzle/puzzle_activity.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import 'package:freezed_annotation/freezed_annotation.dart';
66
import 'package:lichess_mobile/src/model/puzzle/puzzle.dart';
77
import 'package:lichess_mobile/src/model/puzzle/puzzle_providers.dart';
88
import 'package:lichess_mobile/src/model/puzzle/puzzle_repository.dart';
9-
import 'package:lichess_mobile/src/network/http.dart';
109
import 'package:lichess_mobile/src/utils/riverpod.dart';
1110

1211
part 'puzzle_activity.freezed.dart';
@@ -67,9 +66,9 @@ class PuzzleActivity extends AsyncNotifier<PuzzleActivityState> {
6766
if (currentVal.hasMore && _list.length < _maxPuzzles) {
6867
state = AsyncData(currentVal.copyWith(isLoading: true));
6968
try {
70-
final value = await ref.withClient(
71-
(client) => PuzzleRepository(client).puzzleActivity(_nbPerPage, before: _list.last.date),
72-
);
69+
final value = await ref
70+
.read(puzzleRepositoryProvider)
71+
.puzzleActivity(_nbPerPage, before: _list.last.date);
7372
if (value.isEmpty) {
7473
state = AsyncData(currentVal.copyWith(hasMore: false, isLoading: false));
7574
return;

lib/src/model/puzzle/puzzle_controller.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ class PuzzleController extends Notifier<PuzzleState> {
6060
return _loadNewContext(initialContext);
6161
}
6262

63-
PuzzleRepository _repository(LichessClient client) => PuzzleRepository(client);
63+
PuzzleRepository get _repository => ref.read(puzzleRepositoryProvider);
6464

6565
Future<void> _updateUserRating() async {
6666
try {
67-
final data = await ref.withClient((client) => _repository(client).selectBatch(nb: 0));
67+
final data = await _repository.selectBatch(nb: 0);
6868
final glicko = data.glicko;
6969
if (glicko != null) {
7070
state = state.copyWith(glicko: glicko);

lib/src/model/puzzle/puzzle_providers.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ final nextPuzzleProvider = FutureProvider.autoDispose.family<PuzzleContext?, Puz
3232

3333
/// Fetches a storm of puzzles.
3434
final stormProvider = FutureProvider.autoDispose<PuzzleStormResponse>((Ref ref) {
35-
return ref.withClient((client) => PuzzleRepository(client).storm());
35+
return ref.read(puzzleRepositoryProvider).storm();
3636
}, name: 'StormProvider');
3737

3838
/// Fetches a puzzle from the local storage if available, otherwise fetches it from the server.
@@ -43,7 +43,7 @@ final puzzleProvider = FutureProvider.autoDispose.family<Puzzle, PuzzleId>((
4343
final puzzleStorage = await ref.watch(puzzleStorageProvider.future);
4444
final puzzle = await puzzleStorage.fetch(puzzleId: id);
4545
if (puzzle != null) return puzzle;
46-
return ref.withClient((client) => PuzzleRepository(client).fetch(id));
46+
return ref.read(puzzleRepositoryProvider).fetch(id);
4747
}, name: 'PuzzleProvider');
4848

4949
/// Fetches the daily puzzle.
@@ -107,7 +107,7 @@ final stormDashboardProvider = FutureProvider.autoDispose.family<StormDashboard?
107107
Ref ref,
108108
UserId id,
109109
) {
110-
return ref.withClient((client) => PuzzleRepository(client).stormDashboard(id));
110+
return ref.read(puzzleRepositoryProvider).stormDashboard(id);
111111
}, name: 'StormDashboardProvider');
112112

113113
/// Fetches available puzzle themes.

lib/src/model/puzzle/puzzle_repository.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:collection/collection.dart';
44
import 'package:dartchess/dartchess.dart';
55
import 'package:deep_pick/deep_pick.dart';
66
import 'package:fast_immutable_collections/fast_immutable_collections.dart';
7+
import 'package:flutter_riverpod/flutter_riverpod.dart';
78
import 'package:freezed_annotation/freezed_annotation.dart';
89
import 'package:intl/intl.dart';
910
import 'package:lichess_mobile/src/model/common/chess.dart';
@@ -21,6 +22,12 @@ import 'package:lichess_mobile/src/utils/json.dart';
2122

2223
part 'puzzle_repository.freezed.dart';
2324

25+
/// A provider for the [PuzzleRepository].
26+
final puzzleRepositoryProvider = Provider<PuzzleRepository>((ref) {
27+
final client = ref.watch(lichessClientProvider);
28+
return PuzzleRepository(client);
29+
}, name: 'PuzzleRepositoryProvider');
30+
2431
class PuzzleRepository {
2532
PuzzleRepository(this.client);
2633

0 commit comments

Comments
 (0)