Skip to content

Commit 61895eb

Browse files
committed
rfac: revamps integration of feedback with backend
1 parent b8e5ed9 commit 61895eb

8 files changed

Lines changed: 34 additions & 63 deletions

File tree

lib/data/services/remote/api_service.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ abstract class ApiService {
5454
Future<List<FeedbackResponse>> responseOfFeedbacks();
5555

5656
@POST(ApiEndpoints.newFeedback)
57-
Future<AppetizerFeedback> newFeedback(
57+
Future<void> newFeedback(
5858
@Body() Map<String, dynamic> map,
5959
);
6060

lib/domain/models/feedback/appetizer_feedback.dart

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,17 @@ part 'appetizer_feedback.g.dart';
44

55
@JsonSerializable(fieldRename: FieldRename.snake)
66
class AppetizerFeedback {
7-
int id;
87
String title;
98
String message;
10-
int timestamp;
119
dynamic mealId;
12-
dynamic imageUrl;
13-
int dateIssue;
14-
dynamic response;
15-
List<Map<String, dynamic>> ratings;
10+
// dynamic imageUrl;
11+
int ratings;
1612

1713
AppetizerFeedback({
18-
required this.id,
1914
required this.title,
2015
required this.message,
21-
required this.timestamp,
2216
required this.mealId,
23-
required this.imageUrl,
24-
required this.dateIssue,
25-
required this.response,
17+
// required this.imageUrl,
2618
required this.ratings,
2719
});
2820

lib/domain/repositories/feedback_repository.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,16 @@ class FeedbackRepository {
2828
}
2929
}
3030

31-
Future<AppetizerFeedback> newFeedback(AppetizerFeedback feedback) async {
31+
Future<void> newFeedback(AppetizerFeedback feedback) async {
3232
Map<String, dynamic> map = {
3333
'title': feedback.title,
3434
'message': feedback.message,
35-
'date_issue': feedback.dateIssue,
3635
'meal_id': feedback.mealId,
3736
'ratings': feedback.ratings,
38-
'image_url': feedback.imageUrl,
37+
// 'image_url': feedback.imageUrl,
3938
};
4039
try {
41-
return await _apiService.newFeedback(map);
40+
await _apiService.newFeedback(map);
4241
} catch (e) {
4342
debugPrint(e.toString());
4443
throw Failure(AppConstants.GENERIC_FAILURE);

lib/presentation/feedback/bloc/feedback_page_bloc.dart

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,12 @@ class FeedbackPageBloc extends Bloc<FeedbackPageEvent, FeedbackPageState> {
2020
void _onSubmit(
2121
FeedbackPageSubmitEvent event, Emitter<FeedbackPageState> emit) async {
2222
try {
23-
List<Map<String, dynamic>> ratings = [
24-
{"type": "am", "stars": event.rating[0]},
25-
{"type": "hc", "stars": event.rating[1]},
26-
{"type": "wm", "stars": event.rating[2]},
27-
{"type": "ws", "stars": event.rating[3]},
28-
{"type": "dn", "stars": event.rating[4]}
29-
];
23+
int ratings = event.rating;
3024
AppetizerFeedback feedback = AppetizerFeedback(
31-
id: 0,
3225
title: 'Feedback',
3326
message: event.description,
34-
timestamp: DateTime.now().millisecondsSinceEpoch,
3527
mealId: event.mealId,
36-
imageUrl: null,
37-
dateIssue: DateTime.now().millisecondsSinceEpoch,
38-
response: null,
28+
// imageUrl: null,
3929
ratings: ratings,
4030
);
4131
await repo.newFeedback(feedback);

lib/presentation/feedback/bloc/feedback_page_event.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class FeedbackPageSubmitEvent extends FeedbackPageEvent {
1313
required this.description,
1414
required this.mealId,
1515
});
16-
final List<int> rating;
16+
final int rating;
1717
final String description;
1818
final int mealId;
1919

lib/presentation/feedback/bloc/feedback_page_state.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ class FeedbackPageState extends Equatable {
1111
});
1212

1313
FeedbackPageState.initial()
14-
: rating = [0, 0, 0, 0, 0],
14+
: rating = 0,
1515
description = '',
1616
mealId = 0,
1717
submitted = false,
1818
error = false;
1919

20-
List<int> rating;
20+
int rating;
2121
final String description;
2222
final int mealId;
2323
final bool submitted;

lib/presentation/feedback/components/FeedbackTile/feedback_tile.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@ class FeedbackTile extends StatelessWidget {
99
const FeedbackTile({
1010
required this.title,
1111
required this.parentState,
12-
required this.index,
1312
super.key,
1413
});
1514

1615
final String title;
1716
final FeedbackPageState parentState;
18-
final int index;
1917

2018
@override
2119
Widget build(BuildContext context) {
@@ -44,7 +42,7 @@ class FeedbackTile extends StatelessWidget {
4442
onPressed: () {
4543
context.read<FeedbackTileBloc>().add(
4644
FeedbackRatingChangedEvent(newRating: index + 1));
47-
parentState.rating[this.index] = index + 1;
45+
parentState.rating = index + 1;
4846
},
4947
icon: index < state.rating
5048
? SvgPicture.asset('assets/images/filledStar.svg')

lib/presentation/feedback/feedback_view.dart

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,7 @@ class FeedbackScreen extends StatelessWidget {
1717
final TextEditingController textController = TextEditingController();
1818
final int mealId;
1919
static const List<String> feedbackHeadings = [
20-
"Ambience",
21-
"Hygiene and Cleanliness",
22-
"Weekly Menu",
23-
"Worker and Services",
24-
"Diet and Nutrition",
20+
"Your Feedback",
2521
];
2622

2723
@override
@@ -54,17 +50,14 @@ class FeedbackScreen extends StatelessWidget {
5450
),
5551
),
5652
6.toVerticalSizedBox,
57-
...List.generate(feedbackHeadings.length, (ind) {
58-
return Padding(
59-
padding: EdgeInsets.symmetric(
60-
vertical: 2.toAutoScaledHeight),
61-
child: FeedbackTile(
62-
parentState: state,
63-
title: feedbackHeadings[ind],
64-
index: ind,
65-
),
66-
);
67-
}, growable: false),
53+
Padding(
54+
padding: EdgeInsets.symmetric(
55+
vertical: 2.toAutoScaledHeight),
56+
child: FeedbackTile(
57+
parentState: state,
58+
title: "Your Feedback",
59+
),
60+
),
6861
2.toVerticalSizedBox,
6962
Text(
7063
'If any other feeback, please describe below',
@@ -103,19 +96,18 @@ class FeedbackScreen extends StatelessWidget {
10396
alignment: Alignment.bottomRight,
10497
child: BlackIconButton(
10598
onTap: () {
106-
for (var rating in state.rating) {
107-
if (rating == 0) {
108-
Fluttertoast.showToast(
109-
msg: "Please rate all the categories!",
110-
toastLength: Toast.LENGTH_SHORT,
111-
gravity: ToastGravity.BOTTOM,
112-
timeInSecForIosWeb: 1,
113-
textColor: Colors.white,
114-
backgroundColor: AppTheme.red,
115-
fontSize: 12.toAutoScaledFont);
116-
return;
117-
}
99+
if (state.rating == 0) {
100+
Fluttertoast.showToast(
101+
msg: "Please rate before submitting!",
102+
toastLength: Toast.LENGTH_SHORT,
103+
gravity: ToastGravity.BOTTOM,
104+
timeInSecForIosWeb: 1,
105+
textColor: Colors.white,
106+
backgroundColor: AppTheme.red,
107+
fontSize: 12.toAutoScaledFont);
108+
return;
118109
}
110+
119111
if (state.description.trim().isEmpty) {
120112
Fluttertoast.showToast(
121113
msg: "Please describe your Feedback!",
@@ -160,7 +152,7 @@ class FeedbackScreen extends StatelessWidget {
160152
}
161153
if (state.error) {
162154
Fluttertoast.showToast(
163-
msg: "Unable to submit feedback!",
155+
msg: state.description,
164156
toastLength: Toast.LENGTH_SHORT,
165157
gravity: ToastGravity.BOTTOM,
166158
timeInSecForIosWeb: 1,

0 commit comments

Comments
 (0)