Skip to content

Commit 8aed7d8

Browse files
refresh indicator added to user profile
1 parent 738c50c commit 8aed7d8

5 files changed

Lines changed: 46 additions & 19 deletions

File tree

lib/data/api/activity_api.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class ActivityApi {
4848
String userId, int pageNumber) async {
4949
Response? response = await ApiHelper.makeRequest(
5050
'${ActivityApi.url}user/$userId', 'GET',
51-
queryParams: {'page': pageNumber, 'size': 5});
51+
queryParams: {'page': pageNumber, 'size': 5}, noCache: true);
5252
PageResponse pageResponse = PageResponse.fromMap(response?.data);
5353
final data = List<Map<String, dynamic>>.from(pageResponse.list);
5454
List<ActivityResponse> activities =

lib/presentation/common/activity/widgets/activity_item_interaction.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:hooks_riverpod/hooks_riverpod.dart';
3+
34
import '../../../../domain/entities/activity.dart';
45
import '../../core/utils/color_utils.dart';
56
import '../view_model/activity_item_comments_view_model.dart';

lib/presentation/common/user/screens/profile_screen.dart

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import '../widgets/friend_request.dart';
1515
class ProfileScreen extends HookConsumerWidget {
1616
final User user;
1717

18+
final GlobalKey<RefreshIndicatorState> _refreshIndicatorKey = GlobalKey();
19+
1820
ProfileScreen({super.key, required this.user});
1921

2022
final futureDataProvider =
@@ -99,21 +101,34 @@ class ProfileScreen extends HookConsumerWidget {
99101
)),
100102
const Divider(),
101103
const SizedBox(height: 20),
102-
activitiesStateProvider.when(
103-
data: (initialData) {
104-
return ActivityList(
105-
id: '${InfiniteScrollListEnum.profile}_${user.id}',
106-
activities: initialData.list,
107-
total: initialData.total,
108-
canOpenActivity: false,
109-
bottomListScrollFct: provider.fetchActivities);
110-
},
111-
loading: () {
112-
return Center(child: UIUtils.loader);
113-
},
114-
error: (error, stackTrace) {
115-
return Text('$error');
116-
},
104+
Expanded(
105+
child: RefreshIndicator(
106+
key: _refreshIndicatorKey,
107+
onRefresh: () async {
108+
provider.refreshList();
109+
return ref
110+
.refresh(activitiesDataFutureProvider(user));
111+
},
112+
child: Column(children: [
113+
activitiesStateProvider.when(
114+
data: (initialData) {
115+
return ActivityList(
116+
id:
117+
'${InfiniteScrollListEnum.profile}_${user.id}',
118+
activities: initialData.list,
119+
total: initialData.total,
120+
canOpenActivity: false,
121+
bottomListScrollFct:
122+
provider.fetchActivities);
123+
},
124+
loading: () {
125+
return Center(child: UIUtils.loader);
126+
},
127+
error: (error, stackTrace) {
128+
return Text('$error');
129+
},
130+
)
131+
])),
117132
)
118133
],
119134
),

lib/presentation/common/user/view_model/profile_view_model.dart

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import 'package:hooks_riverpod/hooks_riverpod.dart';
2-
import '../../../../domain/entities/activity.dart';
3-
import '../../../../core/utils/storage_utils.dart';
42

3+
import '../../../../core/utils/storage_utils.dart';
54
import '../../../../data/repositories/activity_repository_impl.dart';
65
import '../../../../data/repositories/friend_request_repository_impl.dart';
76
import '../../../../data/repositories/user_repository_impl.dart';
7+
import '../../../../domain/entities/activity.dart';
88
import '../../../../domain/entities/enum/friend_request_status.dart';
99
import '../../../../domain/entities/page.dart';
10+
import '../../core/enums/infinite_scroll_list.enum.dart';
11+
import '../../core/widgets/view_model/infinite_scroll_list_view_model.dart';
1012
import 'state/profile_state.dart';
1113

1214
/// Provider for the profile view model.
@@ -69,4 +71,12 @@ class ProfileViewModel extends StateNotifier<ProfileState> {
6971
.downloadProfilePicture(userId)
7072
.then((value) => state = state.copyWith(profilePicture: value));
7173
}
74+
75+
void refreshList() {
76+
ref
77+
.read(infiniteScrollListViewModelProvider(
78+
'${InfiniteScrollListEnum.profile}_$userId',
79+
).notifier)
80+
.reset();
81+
}
7282
}

lib/presentation/community/widgets/pending_request_list.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import 'package:flutter/material.dart';
22
import 'package:hooks_riverpod/hooks_riverpod.dart';
3+
34
import '../../../domain/entities/page.dart';
4-
import '../../common/core/utils/user_utils.dart';
55
import '../../../domain/entities/user.dart';
6+
import '../../common/core/utils/user_utils.dart';
67
import '../../common/core/widgets/infinite_scroll_list.dart';
78
import '../../common/friendship/widgets/accept_refuse.dart';
89

0 commit comments

Comments
 (0)