Skip to content

Commit a9ba57d

Browse files
Profile picture and better UI on Community activity list (#30)
* improve activity list on community screen * edit screenshot
1 parent 2afa7f7 commit a9ba57d

10 files changed

Lines changed: 270 additions & 96 deletions

File tree

lib/data/api/user_api.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ class UserApi {
114114
'${ApiHelper.apiUrl}user/picture/download/$id', 'GET',
115115
noCache: !useCache, responseType: ResponseType.bytes);
116116

117-
if (response != null && response.statusCode == 404) {
117+
if (response != null &&
118+
(response.statusCode == 404 || (response.statusCode == 500))) {
118119
return null;
119120
}
120121

lib/domain/entities/enum/friend_request_status.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
22

33
/// Enum representing different status of friend requests.
4-
enum FriendRequestStatus { pending, accepted, rejected, canceled }
4+
enum FriendRequestStatus { pending, accepted, rejected, canceled, noDisplay }
55

66
/// Extension on FriendRequestStatus to provide translated names based on the given localization.
77
extension FriendRequestStatusExtension on FriendRequestStatus {
@@ -16,6 +16,8 @@ extension FriendRequestStatusExtension on FriendRequestStatus {
1616
return localization.rejected;
1717
case FriendRequestStatus.canceled:
1818
return localization.canceled;
19+
case FriendRequestStatus.noDisplay:
20+
return '';
1921
default:
2022
return '';
2123
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import 'dart:typed_data';
2+
3+
import 'package:hooks_riverpod/hooks_riverpod.dart';
4+
import '../../../../data/repositories/user_repository_impl.dart';
5+
import 'state/activity_item_state.dart';
6+
7+
/// Provider for the activity item view model.
8+
final activityItemViewModelProvider =
9+
StateNotifierProvider.autoDispose<ActivityItemViewModel, ActivityItemState>(
10+
(ref) => ActivityItemViewModel(ref));
11+
12+
/// View model for the activity item widget.
13+
class ActivityItemViewModel extends StateNotifier<ActivityItemState> {
14+
late final Ref ref;
15+
16+
ActivityItemViewModel(this.ref) : super(ActivityItemState.initial());
17+
18+
Future<Uint8List?> getProfilePicture(String userId) async {
19+
return ref.read(userRepositoryProvider).downloadProfilePicture(userId);
20+
}
21+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/// The state class for activity item.
2+
class ActivityItemState {
3+
const ActivityItemState();
4+
5+
/// Factory method to create the initial state.
6+
factory ActivityItemState.initial() {
7+
return const ActivityItemState();
8+
}
9+
}

0 commit comments

Comments
 (0)