From a414bd19aeb8ab830ea5c466d87ca0d7fc704a94 Mon Sep 17 00:00:00 2001 From: MohammadTaha Basiri Date: Mon, 18 Jul 2022 15:36:31 +0430 Subject: [PATCH] fcm deep linking & bug fixes (v 2.2.5 build 21) --- .fandogh/fandogh.yaml | 2 +- lib/main.dart | 38 +++++++++++++++++- lib/services/app_initalizer.dart | 25 +++++++++++- lib/views/home/home.dart | 4 ++ .../home/news/news_details/news_details.dart | 2 +- .../radar/radar_details/radar_details.dart | 2 +- lib/views/home/settings/settings.dart | 2 +- pubspec.lock | 40 +++++++++---------- pubspec.yaml | 2 +- 9 files changed, 88 insertions(+), 29 deletions(-) diff --git a/.fandogh/fandogh.yaml b/.fandogh/fandogh.yaml index 8430f46..1ab7d6c 100644 --- a/.fandogh/fandogh.yaml +++ b/.fandogh/fandogh.yaml @@ -3,7 +3,7 @@ name: app-test spec: allow_http: false disable_default_domains: true - image: app:2.2.1.2 + image: app:2.2.5.21 image_pull_policy: IfNotPresent path: / replicas: 1 diff --git a/lib/main.dart b/lib/main.dart index b688a6b..cf57c36 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,20 +1,55 @@ +import 'dart:developer'; + import 'package:bot_toast/bot_toast.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/providers/media.dart'; import 'package:didvan/providers/theme.dart'; import 'package:didvan/providers/user.dart'; import 'package:didvan/routes/route_generator.dart'; +import 'package:didvan/services/app_initalizer.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'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; void main() async { + try { + WidgetsFlutterBinding.ensureInitialized(); + + await Firebase.initializeApp( + options: kIsWeb + ? const FirebaseOptions( + apiKey: "AIzaSyA0HZjKpRuPOi1SC3f_EZTvlS3mcj9UVo0", + authDomain: "didvan-9b7da.firebaseapp.com", + projectId: "didvan-9b7da", + storageBucket: "didvan-9b7da.appspot.com", + messagingSenderId: "935017686266", + appId: "1:935017686266:web:a93f7a19bed23c51d2d543", + measurementId: "G-80B4H9E8Y0") + : const FirebaseOptions( + apiKey: 'AIzaSyBp-UHjWeM0H0UHtX5yguFKG-riMzvvCzw', + appId: '1:935017686266:android:f9cbc9aba8e3d65ed2d543', + messagingSenderId: '935017686266', + projectId: 'didvan-9b7da', + ), + ); + final initMsg = await FirebaseMessaging.instance.getInitialMessage(); + if (initMsg != null) { + AppInitializer.clickAction = initMsg.data['click_action'].replaceAll( + 'navigate-', + '', + ); + } + } catch (e) { + log(e.toString()); + } runApp(const Didvan()); } final GlobalKey navigatorKey = GlobalKey(); -final GlobalKey materialKey = GlobalKey(); class Didvan extends StatelessWidget { const Didvan({Key? key}) : super(key: key); @@ -37,7 +72,6 @@ class Didvan extends StatelessWidget { ], child: Consumer( builder: (context, themeProvider, child) => MaterialApp( - key: materialKey, navigatorKey: navigatorKey, debugShowCheckedModeBanner: false, title: 'Didvan', diff --git a/lib/services/app_initalizer.dart b/lib/services/app_initalizer.dart index cc0bd09..f585f90 100644 --- a/lib/services/app_initalizer.dart +++ b/lib/services/app_initalizer.dart @@ -1,4 +1,8 @@ +import 'package:didvan/main.dart'; +import 'package:didvan/models/requests/news.dart'; +import 'package:didvan/models/requests/radar.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/studio/studio_details/studio_details_state.dart'; @@ -19,9 +23,7 @@ class AppInitializer { (await getApplicationDocumentsDirectory()).path; StorageService.appTempsDir = (await getTemporaryDirectory()).path; } - final studioState = context.read(); - MediaService.audioPlayer.isPlaying.listen((event) { if (event && (MediaService.audioPlayerTag?.contains('podcast') ?? false)) { @@ -77,6 +79,25 @@ class AppInitializer { } } + static void handleCLick() { + if (clickAction != null) { + final isRadar = clickAction!.contains('radar'); + Navigator.of(navigatorKey.currentContext!).pushNamed( + isRadar ? Routes.radarDetails : Routes.newsDetails, + arguments: { + 'id': int.parse(clickAction!.split('-')[1]), + 'args': isRadar + ? const RadarRequestArgs(page: 0) + : const NewsRequestArgs(page: 0), + 'onMarkChanged': (id, value) {}, + 'onCommentsChanged': (id, count) {}, + 'hasUnmarkConfirmation': false, + }, + ); + return; + } + } + static Future initializeFirebase() async { try { await Firebase.initializeApp( diff --git a/lib/views/home/home.dart b/lib/views/home/home.dart index aec1a56..3a2099c 100644 --- a/lib/views/home/home.dart +++ b/lib/views/home/home.dart @@ -1,4 +1,5 @@ import 'package:didvan/config/design_config.dart'; +import 'package:didvan/services/app_initalizer.dart'; import 'package:didvan/views/home/home_state.dart'; import 'package:didvan/views/home/news/news.dart'; import 'package:didvan/views/home/radar/radar.dart'; @@ -26,6 +27,9 @@ class _HomeState extends State with SingleTickerProviderStateMixin { _tabController.addListener(() { context.read().currentPageIndex = _tabController.index; }); + Future.delayed(Duration.zero, () { + AppInitializer.handleCLick(); + }); super.initState(); } diff --git a/lib/views/home/news/news_details/news_details.dart b/lib/views/home/news/news_details/news_details.dart index 0450a2b..398e42e 100644 --- a/lib/views/home/news/news_details/news_details.dart +++ b/lib/views/home/news/news_details/news_details.dart @@ -62,7 +62,7 @@ class _NewsDetailsState extends State { right: 0, child: FloatingNavigationBar( hasUnmarkConfirmation: - widget.pageData['hasUnmarkConfirmation'], + widget.pageData['hasUnmarkConfirmation'] ?? false, scrollController: _scrollController, item: state.currentNews, onCommentsChanged: state.onCommentsChanged, diff --git a/lib/views/home/radar/radar_details/radar_details.dart b/lib/views/home/radar/radar_details/radar_details.dart index 78fb92e..5626d3a 100644 --- a/lib/views/home/radar/radar_details/radar_details.dart +++ b/lib/views/home/radar/radar_details/radar_details.dart @@ -62,7 +62,7 @@ class _RadarDetailsState extends State { right: 0, child: FloatingNavigationBar( hasUnmarkConfirmation: - widget.pageData['hasUnmarkConfirmation'], + widget.pageData['hasUnmarkConfirmation'] ?? false, isRadar: true, scrollController: _scrollController, onMarkChanged: (value) => diff --git a/lib/views/home/settings/settings.dart b/lib/views/home/settings/settings.dart index 6ca9cff..b4a9dd0 100644 --- a/lib/views/home/settings/settings.dart +++ b/lib/views/home/settings/settings.dart @@ -61,7 +61,7 @@ class Settings extends StatelessWidget { MenuOption( title: 'ویرایش پروفایل', icon: DidvanIcons.user_edit_regular, - suffix: context.read().user.fullName, + suffix: context.watch().user.fullName, onTap: () => Navigator.of(context).pushNamed(Routes.profile), ), const DidvanDivider(), diff --git a/pubspec.lock b/pubspec.lock index 183760b..779d0e6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,14 @@ packages: name: assets_audio_player url: "https://pub.dartlang.org" source: hosted - version: "3.0.4+3" + version: "3.0.5" assets_audio_player_web: dependency: transitive description: name: assets_audio_player_web url: "https://pub.dartlang.org" source: hosted - version: "3.0.4+3" + version: "3.0.5" async: dependency: transitive description: @@ -49,7 +49,7 @@ packages: name: bot_toast url: "https://pub.dartlang.org" source: hosted - version: "4.0.2" + version: "4.0.3" cached_network_image: dependency: "direct main" description: @@ -140,7 +140,7 @@ packages: name: day_night_time_picker url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "1.1.2" equatable: dependency: transitive description: @@ -182,42 +182,42 @@ packages: name: firebase_core url: "https://pub.dartlang.org" source: hosted - version: "1.18.0" + version: "1.19.2" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "4.4.1" + version: "4.4.3" firebase_core_web: dependency: transitive description: name: firebase_core_web url: "https://pub.dartlang.org" source: hosted - version: "1.6.5" + version: "1.7.0" firebase_messaging: dependency: "direct main" description: name: firebase_messaging url: "https://pub.dartlang.org" source: hosted - version: "11.4.2" + version: "11.4.4" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "3.5.2" + version: "3.5.4" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web url: "https://pub.dartlang.org" source: hosted - version: "2.4.2" + version: "2.4.4" fl_chart: dependency: "direct main" description: @@ -269,7 +269,7 @@ packages: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.7" flutter_secure_storage: dependency: "direct main" description: @@ -325,7 +325,7 @@ packages: name: flutter_svg url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1+1" flutter_test: dependency: "direct dev" description: flutter @@ -419,7 +419,7 @@ packages: name: image_picker_ios url: "https://pub.dartlang.org" source: hosted - version: "0.8.5+5" + version: "0.8.5+6" image_picker_platform_interface: dependency: transitive description: @@ -524,7 +524,7 @@ packages: name: path_provider_android url: "https://pub.dartlang.org" source: hosted - version: "2.0.15" + version: "2.0.16" path_provider_ios: dependency: transitive description: @@ -692,7 +692,7 @@ packages: name: rxdart url: "https://pub.dartlang.org" source: hosted - version: "0.27.4" + version: "0.27.5" skeleton_text: dependency: "direct main" description: @@ -718,7 +718,7 @@ packages: name: sqflite url: "https://pub.dartlang.org" source: hosted - version: "2.0.2+1" + version: "2.0.3" sqflite_common: dependency: transitive description: @@ -795,7 +795,7 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "6.1.3" + version: "6.1.5" url_launcher_android: dependency: transitive description: @@ -872,7 +872,7 @@ packages: name: wakelock url: "https://pub.dartlang.org" source: hosted - version: "0.6.1+2" + version: "0.6.2" wakelock_macos: dependency: transitive description: @@ -914,7 +914,7 @@ packages: name: webview_flutter_android url: "https://pub.dartlang.org" source: hosted - version: "2.8.11" + version: "2.8.14" webview_flutter_platform_interface: dependency: transitive description: @@ -928,7 +928,7 @@ packages: name: webview_flutter_wkwebview url: "https://pub.dartlang.org" source: hosted - version: "2.8.1" + version: "2.9.1" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index daef981..e85b8ed 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 2.2.2+20 +version: 2.2.5+21 environment: sdk: ">=2.17.0 <3.0.0"