fcm deep linking & bug fixes (v 2.2.5 build 21)

This commit is contained in:
MohammadTaha Basiri 2022-07-18 15:36:31 +04:30
parent 053f8d233b
commit a414bd19ae
9 changed files with 88 additions and 29 deletions

View File

@ -3,7 +3,7 @@ name: app-test
spec: spec:
allow_http: false allow_http: false
disable_default_domains: true disable_default_domains: true
image: app:2.2.1.2 image: app:2.2.5.21
image_pull_policy: IfNotPresent image_pull_policy: IfNotPresent
path: / path: /
replicas: 1 replicas: 1

View File

@ -1,20 +1,55 @@
import 'dart:developer';
import 'package:bot_toast/bot_toast.dart'; import 'package:bot_toast/bot_toast.dart';
import 'package:didvan/config/theme_data.dart'; import 'package:didvan/config/theme_data.dart';
import 'package:didvan/providers/media.dart'; import 'package:didvan/providers/media.dart';
import 'package:didvan/providers/theme.dart'; import 'package:didvan/providers/theme.dart';
import 'package:didvan/providers/user.dart'; import 'package:didvan/providers/user.dart';
import 'package:didvan/routes/route_generator.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: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/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
void main() async { 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()); runApp(const Didvan());
} }
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>(); final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
final GlobalKey materialKey = GlobalKey();
class Didvan extends StatelessWidget { class Didvan extends StatelessWidget {
const Didvan({Key? key}) : super(key: key); const Didvan({Key? key}) : super(key: key);
@ -37,7 +72,6 @@ class Didvan extends StatelessWidget {
], ],
child: Consumer<ThemeProvider>( child: Consumer<ThemeProvider>(
builder: (context, themeProvider, child) => MaterialApp( builder: (context, themeProvider, child) => MaterialApp(
key: materialKey,
navigatorKey: navigatorKey, navigatorKey: navigatorKey,
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
title: 'Didvan', title: 'Didvan',

View File

@ -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/models/settings_data.dart';
import 'package:didvan/routes/routes.dart';
import 'package:didvan/services/media/media.dart'; import 'package:didvan/services/media/media.dart';
import 'package:didvan/services/storage/storage.dart'; import 'package:didvan/services/storage/storage.dart';
import 'package:didvan/views/home/studio/studio_details/studio_details_state.dart'; import 'package:didvan/views/home/studio/studio_details/studio_details_state.dart';
@ -19,9 +23,7 @@ class AppInitializer {
(await getApplicationDocumentsDirectory()).path; (await getApplicationDocumentsDirectory()).path;
StorageService.appTempsDir = (await getTemporaryDirectory()).path; StorageService.appTempsDir = (await getTemporaryDirectory()).path;
} }
final studioState = context.read<StudioDetailsState>(); final studioState = context.read<StudioDetailsState>();
MediaService.audioPlayer.isPlaying.listen((event) { MediaService.audioPlayer.isPlaying.listen((event) {
if (event && if (event &&
(MediaService.audioPlayerTag?.contains('podcast') ?? false)) { (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<void> initializeFirebase() async { static Future<void> initializeFirebase() async {
try { try {
await Firebase.initializeApp( await Firebase.initializeApp(

View File

@ -1,4 +1,5 @@
import 'package:didvan/config/design_config.dart'; 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/home_state.dart';
import 'package:didvan/views/home/news/news.dart'; import 'package:didvan/views/home/news/news.dart';
import 'package:didvan/views/home/radar/radar.dart'; import 'package:didvan/views/home/radar/radar.dart';
@ -26,6 +27,9 @@ class _HomeState extends State<Home> with SingleTickerProviderStateMixin {
_tabController.addListener(() { _tabController.addListener(() {
context.read<HomeState>().currentPageIndex = _tabController.index; context.read<HomeState>().currentPageIndex = _tabController.index;
}); });
Future.delayed(Duration.zero, () {
AppInitializer.handleCLick();
});
super.initState(); super.initState();
} }

View File

@ -62,7 +62,7 @@ class _NewsDetailsState extends State<NewsDetails> {
right: 0, right: 0,
child: FloatingNavigationBar( child: FloatingNavigationBar(
hasUnmarkConfirmation: hasUnmarkConfirmation:
widget.pageData['hasUnmarkConfirmation'], widget.pageData['hasUnmarkConfirmation'] ?? false,
scrollController: _scrollController, scrollController: _scrollController,
item: state.currentNews, item: state.currentNews,
onCommentsChanged: state.onCommentsChanged, onCommentsChanged: state.onCommentsChanged,

View File

@ -62,7 +62,7 @@ class _RadarDetailsState extends State<RadarDetails> {
right: 0, right: 0,
child: FloatingNavigationBar( child: FloatingNavigationBar(
hasUnmarkConfirmation: hasUnmarkConfirmation:
widget.pageData['hasUnmarkConfirmation'], widget.pageData['hasUnmarkConfirmation'] ?? false,
isRadar: true, isRadar: true,
scrollController: _scrollController, scrollController: _scrollController,
onMarkChanged: (value) => onMarkChanged: (value) =>

View File

@ -61,7 +61,7 @@ class Settings extends StatelessWidget {
MenuOption( MenuOption(
title: 'ویرایش پروفایل', title: 'ویرایش پروفایل',
icon: DidvanIcons.user_edit_regular, icon: DidvanIcons.user_edit_regular,
suffix: context.read<UserProvider>().user.fullName, suffix: context.watch<UserProvider>().user.fullName,
onTap: () => Navigator.of(context).pushNamed(Routes.profile), onTap: () => Navigator.of(context).pushNamed(Routes.profile),
), ),
const DidvanDivider(), const DidvanDivider(),

View File

@ -7,14 +7,14 @@ packages:
name: assets_audio_player name: assets_audio_player
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.4+3" version: "3.0.5"
assets_audio_player_web: assets_audio_player_web:
dependency: transitive dependency: transitive
description: description:
name: assets_audio_player_web name: assets_audio_player_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.4+3" version: "3.0.5"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -49,7 +49,7 @@ packages:
name: bot_toast name: bot_toast
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.2" version: "4.0.3"
cached_network_image: cached_network_image:
dependency: "direct main" dependency: "direct main"
description: description:
@ -140,7 +140,7 @@ packages:
name: day_night_time_picker name: day_night_time_picker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.5" version: "1.1.2"
equatable: equatable:
dependency: transitive dependency: transitive
description: description:
@ -182,42 +182,42 @@ packages:
name: firebase_core name: firebase_core
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.18.0" version: "1.19.2"
firebase_core_platform_interface: firebase_core_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_platform_interface name: firebase_core_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.4.1" version: "4.4.3"
firebase_core_web: firebase_core_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_web name: firebase_core_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.6.5" version: "1.7.0"
firebase_messaging: firebase_messaging:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_messaging name: firebase_messaging
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "11.4.2" version: "11.4.4"
firebase_messaging_platform_interface: firebase_messaging_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_platform_interface name: firebase_messaging_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.5.2" version: "3.5.4"
firebase_messaging_web: firebase_messaging_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_web name: firebase_messaging_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.4.2" version: "2.4.4"
fl_chart: fl_chart:
dependency: "direct main" dependency: "direct main"
description: description:
@ -269,7 +269,7 @@ packages:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.6" version: "2.0.7"
flutter_secure_storage: flutter_secure_storage:
dependency: "direct main" dependency: "direct main"
description: description:
@ -325,7 +325,7 @@ packages:
name: flutter_svg name: flutter_svg
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0" version: "1.1.1+1"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -419,7 +419,7 @@ packages:
name: image_picker_ios name: image_picker_ios
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.8.5+5" version: "0.8.5+6"
image_picker_platform_interface: image_picker_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -524,7 +524,7 @@ packages:
name: path_provider_android name: path_provider_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.15" version: "2.0.16"
path_provider_ios: path_provider_ios:
dependency: transitive dependency: transitive
description: description:
@ -692,7 +692,7 @@ packages:
name: rxdart name: rxdart
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.27.4" version: "0.27.5"
skeleton_text: skeleton_text:
dependency: "direct main" dependency: "direct main"
description: description:
@ -718,7 +718,7 @@ packages:
name: sqflite name: sqflite
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2+1" version: "2.0.3"
sqflite_common: sqflite_common:
dependency: transitive dependency: transitive
description: description:
@ -795,7 +795,7 @@ packages:
name: url_launcher name: url_launcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.1.3" version: "6.1.5"
url_launcher_android: url_launcher_android:
dependency: transitive dependency: transitive
description: description:
@ -872,7 +872,7 @@ packages:
name: wakelock name: wakelock
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.1+2" version: "0.6.2"
wakelock_macos: wakelock_macos:
dependency: transitive dependency: transitive
description: description:
@ -914,7 +914,7 @@ packages:
name: webview_flutter_android name: webview_flutter_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.8.11" version: "2.8.14"
webview_flutter_platform_interface: webview_flutter_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -928,7 +928,7 @@ packages:
name: webview_flutter_wkwebview name: webview_flutter_wkwebview
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.8.1" version: "2.9.1"
win32: win32:
dependency: transitive dependency: transitive
description: description:

View File

@ -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. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 2.2.2+20 version: 2.2.5+21
environment: environment:
sdk: ">=2.17.0 <3.0.0" sdk: ">=2.17.0 <3.0.0"