From 5d70e1981182886d967e3adfd665cc7b60a3315c Mon Sep 17 00:00:00 2001 From: MohammadTaha Basiri Date: Fri, 9 Dec 2022 00:19:06 +0330 Subject: [PATCH] studio edits --- lib/models/requests/studio.dart | 2 +- lib/services/app_initalizer.dart | 28 +++++++++++++++---- lib/views/home/studio/studio.dart | 8 ++++-- .../studio_details/studio_details.mobile.dart | 1 + .../studio_details/studio_details_state.dart | 5 ++++ lib/views/home/studio/studio_state.dart | 4 ++- lib/views/widgets/didvan/bnb.dart | 13 ++++++++- 7 files changed, 49 insertions(+), 12 deletions(-) diff --git a/lib/models/requests/studio.dart b/lib/models/requests/studio.dart index 53a8dd4..f2d5973 100644 --- a/lib/models/requests/studio.dart +++ b/lib/models/requests/studio.dart @@ -12,7 +12,7 @@ class StudioRequestArgs { this.asc, this.search, this.order, - this.type, + this.type = 'video', this.startDate, this.endDate, }); diff --git a/lib/services/app_initalizer.dart b/lib/services/app_initalizer.dart index f585f90..ee0cb2d 100644 --- a/lib/services/app_initalizer.dart +++ b/lib/services/app_initalizer.dart @@ -1,10 +1,12 @@ import 'package:didvan/main.dart'; import 'package:didvan/models/requests/news.dart'; import 'package:didvan/models/requests/radar.dart'; +import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/models/settings_data.dart'; import 'package:didvan/routes/routes.dart'; import 'package:didvan/services/media/media.dart'; import 'package:didvan/services/storage/storage.dart'; +import 'package:didvan/views/home/home_state.dart'; import 'package:didvan/views/home/studio/studio_details/studio_details_state.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; @@ -79,16 +81,30 @@ class AppInitializer { } } - static void handleCLick() { + static Future handleCLick( + HomeState state, TabController tabController) async { if (clickAction != null) { - final isRadar = clickAction!.contains('radar'); + final action = clickAction!.split('-').first; + final isStudio = action != 'radar' && action != 'news'; + String routeName = '/${isStudio ? 'studio' : action}-details'; + if (action == 'podcast') { + state.currentPageIndex = 3; + tabController.animateTo(3); + await Future.delayed(const Duration(milliseconds: 500)); + clickAction = null; + return; + } Navigator.of(navigatorKey.currentContext!).pushNamed( - isRadar ? Routes.radarDetails : Routes.newsDetails, + routeName, arguments: { 'id': int.parse(clickAction!.split('-')[1]), - 'args': isRadar - ? const RadarRequestArgs(page: 0) - : const NewsRequestArgs(page: 0), + 'args': routeName == Routes.newsDetails + ? const NewsRequestArgs(page: 0) + : routeName == Routes.radarDetails + ? const RadarRequestArgs(page: 0) + : action == 'video' + ? const StudioRequestArgs(page: 0) + : null, 'onMarkChanged': (id, value) {}, 'onCommentsChanged': (id, count) {}, 'hasUnmarkConfirmation': false, diff --git a/lib/views/home/studio/studio.dart b/lib/views/home/studio/studio.dart index f31294b..b4d9885 100644 --- a/lib/views/home/studio/studio.dart +++ b/lib/views/home/studio/studio.dart @@ -21,6 +21,7 @@ import 'package:didvan/views/widgets/didvan/divider.dart'; import 'package:didvan/views/widgets/didvan/icon_button.dart'; import 'package:didvan/views/widgets/didvan/radial_button.dart'; import 'package:didvan/views/widgets/item_title.dart'; +import 'package:didvan/views/widgets/logos/didvan_vertical_logo.dart'; import 'package:didvan/views/widgets/state_handlers/empty_result.dart'; import 'package:didvan/views/widgets/state_handlers/sliver_state_handler.dart'; import 'package:flutter/material.dart'; @@ -51,10 +52,11 @@ class _StudioState extends State { SliverToBoxAdapter( child: Row( children: [ - const Expanded(child: LogoAppBar(type: 'studio')), + const LogoAppBar(), Padding( - padding: - EdgeInsets.only(top: MediaQuery.of(context).padding.top), + padding: EdgeInsets.only( + top: MediaQuery.of(context).padding.top, + ), child: DidvanIconButton( icon: DidvanIcons.bookmark_regular, onPressed: () => Navigator.of(context).pushNamed( diff --git a/lib/views/home/studio/studio_details/studio_details.mobile.dart b/lib/views/home/studio/studio_details/studio_details.mobile.dart index eeb689d..7fba6a4 100644 --- a/lib/views/home/studio/studio_details/studio_details.mobile.dart +++ b/lib/views/home/studio/studio_details/studio_details.mobile.dart @@ -116,6 +116,7 @@ class _StudioDetailsState extends State { final betterPlayerDataSource = BetterPlayerDataSource( BetterPlayerDataSourceType.network, state.studio.link, + videoFormat: BetterPlayerVideoFormat.hls, ); await _betterPlayerController.clearCache(); await _betterPlayerController.setupDataSource(betterPlayerDataSource); diff --git a/lib/views/home/studio/studio_details/studio_details_state.dart b/lib/views/home/studio/studio_details/studio_details_state.dart index d1e810f..723f636 100644 --- a/lib/views/home/studio/studio_details/studio_details_state.dart +++ b/lib/views/home/studio/studio_details/studio_details_state.dart @@ -96,6 +96,11 @@ class StudioDetailsState extends CoreProvier { } final result = service.result; studio = StudioDetailsData.fromJson(result['studio']); + if (args?.page == 0) { + initialIndex = 0; + appState = AppState.idle; + return; + } if (result['nextStudio'].isNotEmpty && this.args?.page != 0) { nextStudio = StudioDetailsData.fromJson(result['nextStudio']); } diff --git a/lib/views/home/studio/studio_state.dart b/lib/views/home/studio/studio_state.dart index d5c003c..3d2c643 100644 --- a/lib/views/home/studio/studio_state.dart +++ b/lib/views/home/studio/studio_state.dart @@ -5,6 +5,7 @@ import 'package:didvan/models/overview_data.dart'; import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/models/slider_data.dart'; import 'package:didvan/providers/core.dart'; +import 'package:didvan/services/app_initalizer.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; @@ -67,7 +68,8 @@ class StudioState extends CoreProvier { void init() { search = ''; lastSearch = ''; - _videosSelected = true; + _videosSelected = + !(AppInitializer.clickAction?.contains('podcast') == true); selectedSortTypeIndex = 0; Future.delayed(Duration.zero, () { _getSliders(); diff --git a/lib/views/widgets/didvan/bnb.dart b/lib/views/widgets/didvan/bnb.dart index 3a6d2d9..7c9f94c 100644 --- a/lib/views/widgets/didvan/bnb.dart +++ b/lib/views/widgets/didvan/bnb.dart @@ -3,7 +3,9 @@ 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/enums.dart'; +import 'package:didvan/models/requests/radar.dart'; import 'package:didvan/providers/user.dart'; +import 'package:didvan/routes/routes.dart'; import 'package:didvan/services/media/media.dart'; import 'package:didvan/utils/action_sheet.dart'; import 'package:didvan/views/home/studio/studio_details/studio_details_state.dart'; @@ -114,7 +116,16 @@ class _PlayerNavBar extends StatelessWidget { builder: (context, snapshot) => GestureDetector( onTap: () => MediaService.currentPodcast == null || MediaService.currentPodcast?.description == 'radar' - ? null + ? Navigator.of(context).pushNamed( + Routes.radarDetails, + arguments: { + 'onMarkChanged': (id, value) {}, + 'onCommentsChanged': (id, value) {}, + 'id': MediaService.currentPodcast?.id, + 'args': const RadarRequestArgs(page: 0), + 'hasUnmarkConfirmation': false, + }, + ) : _showPlayerBottomSheet(context), child: Consumer( builder: (context, state, child) => AnimatedContainer(