D1APP-89 tracking api connected

This commit is contained in:
MohammadTaha Basiri 2022-03-31 00:25:01 +04:30
parent eaec7340db
commit 169b207d9f
5 changed files with 105 additions and 79 deletions

View File

@ -119,6 +119,8 @@ class RequestHelper {
]); ]);
static String mark(int id, String type) => baseUrl + '/$type/$id/mark'; static String mark(int id, String type) => baseUrl + '/$type/$id/mark';
static String tracking(int id, String type) =>
baseUrl + '/$type/$id/tracking';
static String comments(int id, String type) => static String comments(int id, String type) =>
baseUrl + '/$type/$id/comments'; baseUrl + '/$type/$id/comments';
static String feedback(int id, int commentId, String type) => static String feedback(int id, int commentId, String type) =>

View File

@ -38,7 +38,12 @@ class _NewsDetailsState extends State<NewsDetails> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Consumer<NewsDetailsState>( body: Consumer<NewsDetailsState>(
builder: (context, state, child) => StateHandler<NewsDetailsState>( builder: (context, state, child) => WillPopScope(
onWillPop: () async {
state.handleTracking(sendRequest: true);
return true;
},
child: StateHandler<NewsDetailsState>(
onRetry: () => state.getNewsDetails(state.currentNews.id), onRetry: () => state.getNewsDetails(state.currentNews.id),
state: state, state: state,
builder: (context, state) => Stack( builder: (context, state) => Stack(
@ -75,6 +80,7 @@ class _NewsDetailsState extends State<NewsDetails> {
), ),
), ),
), ),
),
); );
} }

View File

@ -32,7 +32,7 @@ class NewsDetailsState extends CoreProvier {
} }
final service = RequestService(RequestHelper.newsDetails(id, args)); final service = RequestService(RequestHelper.newsDetails(id, args));
await service.httpGet(); await service.httpGet();
_handleTracking(sendRequest: isForward != null); handleTracking(sendRequest: isForward != null);
if (service.isSuccess) { if (service.isSuccess) {
final result = service.result; final result = service.result;
final newsItem = NewsDetailsData.fromJson(result['news']); final newsItem = NewsDetailsData.fromJson(result['news']);
@ -88,15 +88,21 @@ class NewsDetailsState extends CoreProvier {
notifyListeners(); notifyListeners();
} }
Future<void> _handleTracking({bool sendRequest = true}) async { Future<void> handleTracking({bool sendRequest = true}) async {
if (!sendRequest) { if (!sendRequest) {
_trackingTimerCounter = 0;
_trackingTimer = Timer.periodic(const Duration(seconds: 1), (timer) { _trackingTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
_trackingTimerCounter++; _trackingTimerCounter++;
}); });
return; return;
} }
//send request final service = RequestService(
_trackingTimerCounter = 0; RequestHelper.tracking(currentNews.id, 'news'),
body: {
'sec': _trackingTimerCounter,
},
);
service.put();
} }
Future<void> getRelatedContents() async { Future<void> getRelatedContents() async {

View File

@ -38,7 +38,12 @@ class _RadarDetailsState extends State<RadarDetails> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Consumer<RadarDetailsState>( body: Consumer<RadarDetailsState>(
builder: (context, state, child) => StateHandler<RadarDetailsState>( builder: (context, state, child) => WillPopScope(
onWillPop: () async {
state.handleTracking(sendRequest: true);
return true;
},
child: StateHandler<RadarDetailsState>(
onRetry: () => state.getRadarDetails(widget.pageData['id']), onRetry: () => state.getRadarDetails(widget.pageData['id']),
state: state, state: state,
builder: (context, state) => Stack( builder: (context, state) => Stack(
@ -82,6 +87,7 @@ class _RadarDetailsState extends State<RadarDetails> {
), ),
), ),
), ),
),
); );
} }

View File

@ -38,7 +38,7 @@ class RadarDetailsState extends CoreProvier {
} }
final service = RequestService(RequestHelper.radarDetails(id, args)); final service = RequestService(RequestHelper.radarDetails(id, args));
await service.httpGet(); await service.httpGet();
_handleTracking(sendRequest: isForward != null); handleTracking(sendRequest: isForward != null);
if (service.isSuccess) { if (service.isSuccess) {
final result = service.result; final result = service.result;
final radar = RadarDetailsData.fromJson(result['radar']); final radar = RadarDetailsData.fromJson(result['radar']);
@ -121,15 +121,21 @@ class RadarDetailsState extends CoreProvier {
notifyListeners(); notifyListeners();
} }
Future<void> _handleTracking({bool sendRequest = true}) async { Future<void> handleTracking({bool sendRequest = true}) async {
if (!sendRequest) { if (!sendRequest) {
_trackingTimerCounter = 0;
_trackingTimer = Timer.periodic(const Duration(seconds: 1), (timer) { _trackingTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
_trackingTimerCounter++; _trackingTimerCounter++;
}); });
return; return;
} }
//send request final service = RequestService(
_trackingTimerCounter = 0; RequestHelper.tracking(currentRadar.id, 'radar'),
body: {
'sec': _trackingTimerCounter,
},
);
service.put();
} }
@override @override