This commit is contained in:
MohammadTaha Basiri 2022-04-28 13:48:32 +00:00
parent b47badf3cf
commit 93bac3a349
9 changed files with 146 additions and 103 deletions

View File

@ -37,6 +37,14 @@ class UserProvider extends CoreProvier {
}
if (service.isSuccess) {
user = User.fromJson(service.result['user']);
await StorageService.setValue(
key: 'notificationTimeRangeStart',
value: service.result['user']['start'],
);
await StorageService.setValue(
key: 'notificationTimeRangeEnd',
value: service.result['user']['end'],
);
AppInitializer.initializeFirebase().then((_) => _registerFirebaseToken());
_registerFirebaseToken();
return true;

View File

@ -3,7 +3,7 @@ import 'package:didvan/models/requests/radar.dart';
import 'package:didvan/models/requests/studio.dart';
class RequestHelper {
static const String baseUrl = 'https://api.didvan.app';
static const String baseUrl = 'https://test.api.didvan.app';
static const String _baseUserUrl = baseUrl + '/user';
static const String _baseRadarUrl = baseUrl + '/radar';
static const String _baseNewsUrl = baseUrl + '/news';

View File

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

View File

@ -32,7 +32,7 @@ class NewsDetailsState extends CoreProvier {
}
final service = RequestService(RequestHelper.newsDetails(id, args));
await service.httpGet();
handleTracking(sendRequest: isForward != null);
_handleTracking(sendRequest: isForward != null);
if (service.isSuccess) {
final result = service.result;
final newsItem = NewsDetailsData.fromJson(result['news']);
@ -88,7 +88,7 @@ class NewsDetailsState extends CoreProvier {
notifyListeners();
}
Future<void> handleTracking({bool sendRequest = true}) async {
Future<void> _handleTracking({bool sendRequest = true}) async {
if (!sendRequest) {
_trackingTimerCounter = 0;
_trackingTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
@ -103,6 +103,7 @@ class NewsDetailsState extends CoreProvier {
},
);
service.put();
_trackingTimerCounter = 0;
}
Future<void> getRelatedContents() async {
@ -129,6 +130,7 @@ class NewsDetailsState extends CoreProvier {
@override
void dispose() {
_handleTracking(sendRequest: true);
_trackingTimer.cancel();
super.dispose();
}

View File

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

View File

@ -38,7 +38,7 @@ class RadarDetailsState extends CoreProvier {
}
final service = RequestService(RequestHelper.radarDetails(id, args));
await service.httpGet();
handleTracking(sendRequest: isForward != null);
_handleTracking(sendRequest: isForward != null);
if (service.isSuccess) {
final result = service.result;
final radar = RadarDetailsData.fromJson(result['radar']);
@ -121,7 +121,7 @@ class RadarDetailsState extends CoreProvier {
notifyListeners();
}
Future<void> handleTracking({bool sendRequest = true}) async {
Future<void> _handleTracking({bool sendRequest = true}) async {
if (!sendRequest) {
_trackingTimerCounter = 0;
_trackingTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
@ -136,10 +136,12 @@ class RadarDetailsState extends CoreProvier {
},
);
service.put();
_trackingTimerCounter = 0;
}
@override
void dispose() {
_handleTracking(sendRequest: true);
_trackingTimer.cancel();
super.dispose();
}

View File

@ -54,12 +54,13 @@ class _GeneralSettingsState extends State<GeneralSettings> {
title: 'زمان دریافت اعلان',
onTap: () => _pickTimeRange(context),
icon: DidvanIcons.notification_regular,
suffix: DateTimeUtils.normalizeTimeDuration(
Duration(minutes: state.notificationTimeRange[1]),
) +
' - ' +
suffix: 'از' +
DateTimeUtils.normalizeTimeDuration(
Duration(minutes: state.notificationTimeRange[0]),
) +
' تا ' +
DateTimeUtils.normalizeTimeDuration(
Duration(minutes: state.notificationTimeRange[1]),
),
),
),

View File

@ -72,7 +72,7 @@ class _StudioState extends State<Studio> {
child: Padding(
padding: const EdgeInsets.all(16.0),
child: SearchField(
title: 'استودیو',
title: state.videosSelected ? 'ویدئو' : 'پادکست',
onChanged: _onChanged,
focusNode: _focusNode,
),

View File

@ -2,6 +2,8 @@ import 'package:carousel_slider/carousel_slider.dart';
import 'package:didvan/config/design_config.dart';
import 'package:didvan/config/theme_data.dart';
import 'package:didvan/constants/app_icons.dart';
import 'package:didvan/models/requests/news.dart';
import 'package:didvan/models/requests/radar.dart';
import 'package:didvan/routes/routes.dart';
import 'package:didvan/utils/action_sheet.dart';
import 'package:didvan/utils/date_time.dart';
@ -195,24 +197,64 @@ class _DidvanPageViewState extends State<DidvanPageView> {
data: content.text,
onAnchorTap: (href, context, map, element) {
if (href!.contains('navigate-')) {
if (href.contains('statistic')) {
Navigator.of(ActionSheetUtils.context)
.pushNamed(Routes.statisticDetails, arguments: {
'onMarkChanged': (value) {},
'label': href.split('-')[1],
'label': href.split('-')[2],
'title': href.split('-').last,
'marked': false,
});
} else if (href.contains('radar')) {
Navigator.of(ActionSheetUtils.context).pushNamed(
Routes.radarDetails,
arguments: {
'onMarkChanged': (id, value) {},
'onCommentsChanged': (id, count) {},
'id': int.parse(href.split('-').last),
'args': const RadarRequestArgs(page: 0),
'hasUnmarkConfirmation': false,
},
);
} else if (href.contains('news')) {
Navigator.of(ActionSheetUtils.context).pushNamed(
Routes.newsDetails,
arguments: {
'onMarkChanged': (id, value) {},
'id': int.parse(href.split('-').last),
'args': const NewsRequestArgs(page: 0),
'hasUnmarkConfirmation': false,
},
);
}
} else if (href.contains('popup-')) {
showDialog(
context: ActionSheetUtils.context,
builder: (context) => Dialog(
shape: const RoundedRectangleBorder(
borderRadius: DesignConfig.lowBorderRadius,
),
alignment: Alignment.center,
child: DidvanCard(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
children: [
Icon(
DidvanIcons.info_circle_solid,
color: Theme.of(context).colorScheme.primary,
),
const SizedBox(width: 8),
DidvanText(
element!.text,
style: Theme.of(context).textTheme.subtitle2,
),
],
),
const SizedBox(height: 8),
DidvanText(href.split('-').last),
const DidvanDivider(),
const SizedBox(height: 16),
const DidvanButton(
title: 'بستن',
onPressed: ActionSheetUtils.pop,