Skip to content

Commit

Permalink
report_anomaly
Browse files Browse the repository at this point in the history
  • Loading branch information
YahiaBouaninba committed Sep 12, 2019
1 parent f6e4387 commit e736a8b
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 33 deletions.
19 changes: 16 additions & 3 deletions lib/actions/report_actions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import '../backend/api.dart';
import '../backend/utils.dart';
import 'dart:async';


Api api = Api();


Expand All @@ -27,10 +28,11 @@ class AddReportAction {



final Function getReport = (BuildContext context,String anomaly_id,String user_id) {
final Function getReport = (BuildContext context,String user_id) {
Api api = Api();
print('test');
return (Store<AppState> store) async{
final response = await api.getReport(anomaly_id,user_id);
final response = await api.getReport(user_id);
List<Report> reports = parseReports(response);
store.dispatch(new GetReportAction(reports));
};
Expand All @@ -39,4 +41,15 @@ final Function getReport = (BuildContext context,String anomaly_id,String user_i
class GetReportAction {
final List<Report> reports;
GetReportAction(this.reports);
}
}

final Function checkAnomaly = (List<Report> reports,int anomaly_id) {
bool reported = false;
reports.forEach((f){
if (int.parse(f.anomaly) == anomaly_id){
reported = true;
}
});
return reported;

};
4 changes: 2 additions & 2 deletions lib/backend/api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -387,8 +387,8 @@ Future getComments(String postId) async {
return response.body;
}

Future getReport(String anomaly_id,String user_id) async {
var url = ProjectSettings.apiUrl+"/api/v1/anomalys/signal/?anomaly=$anomaly_id&user=$user_id";
Future getReport(String user_id) async {
var url = ProjectSettings.apiUrl+"/api/v1/anomalys/signal/?user=$user_id";
var response = await http.get(url);
return response.body;
}
Expand Down
3 changes: 2 additions & 1 deletion lib/screens/event/widgets/event_list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ class EventList extends StatelessWidget {
bool test_user = checkEvent(participations_event,state.auth.user.id);

return EventPreview(
event : events[index]
event : events[index],
closed : test_max | test_user
,
);
},
Expand Down
2 changes: 1 addition & 1 deletion lib/screens/event/widgets/event_preview.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import '../../../styles/colors.dart';
class EventPreview extends StatefulWidget {
Event event;
bool closed;
EventPreview({this.event});
EventPreview({this.event, this.closed});

@override
State<StatefulWidget> createState() {
Expand Down
31 changes: 20 additions & 11 deletions lib/screens/feed/widgets/post_list.dart
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart';
import '../../../actions/report_actions.dart';
import '../../../store/app_state.dart';
import 'post_preview.dart';
import '../../../models/anomaly.dart';
import 'package:sbaclean/screens/anomaly_details/anomaly_details.dart';
import 'package:sbaclean/screens/anomaly_details/anomaly_details.dart';
class PostList extends StatelessWidget {
final List<Anomaly> posts;

PostList({Key key, this.posts}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: posts.length,
itemBuilder: (context, index) {
return GestureDetector(
onLongPress: () => showDialog(context: context, child: SimpleDialog(children: <Widget>[SimpleDialogOption(child: Text("Signalez la publication"),)],)),
onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context)=> AnomalyDetails(anomaly:posts[index]))),
child: PostPreview(anomaly: posts[index],),)
;
return StoreConnector<AppState, AppState>(
onInit: (store) {
store.dispatch(
getReport(context,store.state.auth.user.id.toString()));
},
);
converter: (store) => store.state,
builder: (context, state) {
return ListView.builder(
itemCount: posts.length,
itemBuilder: (context, index) {
return GestureDetector(
onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context)=> AnomalyDetails(anomaly:posts[index]))),
child: new PostPreview(anomaly: posts[index], reported: checkAnomaly(state.reportState.reports,posts[index].id)))
;
},
);});
}
}
}
29 changes: 14 additions & 15 deletions lib/screens/feed/widgets/post_preview.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,24 @@ import 'package:cached_network_image/cached_network_image.dart';

class PostPreview extends StatefulWidget {
final Anomaly anomaly;
PostPreview({Key key, this.anomaly}) : super(key: key);
bool reported;

PostPreview({Key key, this.anomaly, this.reported}) : super(key: key);

@override
PostPreviewState createState() {
return PostPreviewState(
anomaly: this.anomaly,
reported: this.reported
);
}
}

class PostPreviewState extends State<PostPreview> {
final Anomaly anomaly;
bool reported;
bool _isButtonDisabled;
PostPreviewState({Key key, this.anomaly});
PostPreviewState({Key key, this.anomaly, this.reported});

@override
void initState() {
Expand All @@ -41,10 +45,6 @@ class PostPreviewState extends State<PostPreview> {
@override
Widget build(BuildContext context) {
return StoreConnector<AppState, dynamic>(
onInit: (store) {
store.dispatch(
getReport(context,anomaly.id.toString(),store.state.auth.user.id.toString()));
},
converter: (Store<AppState> store) {
return (BuildContext context, String anomaly) =>
store.dispatch(addReport(context, store.state.auth.user.authToken,
Expand Down Expand Up @@ -93,14 +93,12 @@ class PostPreviewState extends State<PostPreview> {
child: Text(
calculateTime(anomaly.post.createdAt)
)
),
new StoreConnector<AppState, AppState>(
converter: (store) => store.state,
builder: (context, state) {
return IconButton(
),
IconButton(
icon: Icon(Icons.info,color: Colors.blueGrey),
onPressed: (){
if(state.reportState.reports.length == 0){
onPressed: () {
print(reported.toString()+"-----------"+anomaly.id.toString());
if(!reported){
_isButtonDisabled = false;
}
else {
Expand All @@ -110,7 +108,7 @@ class PostPreviewState extends State<PostPreview> {
Toast.show("Already reported", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
}
else {
return showDialog<void>(
showDialog<void>(
context: context,
barrierDismissible: false, // user must tap button!
builder: (BuildContext context) {
Expand All @@ -134,6 +132,7 @@ class PostPreviewState extends State<PostPreview> {
child: Text('Report'),
onPressed: () {
addReportAction(context,anomaly.id.toString());
reported = true;
Navigator.of(context).pop();
},
),
Expand All @@ -144,7 +143,7 @@ class PostPreviewState extends State<PostPreview> {
}
},

);}),
),
],
),

Expand Down

0 comments on commit e736a8b

Please sign in to comment.