Notification To Specific Screen

merge-requests/142/head
Aamir Muhammad 3 years ago
parent 75eab961ce
commit 948689b67a

@ -181,21 +181,4 @@ class AppState {
bool cancelRequestTrancsection = true; bool cancelRequestTrancsection = true;
bool _isAppOpendByChat = false;
bool get getIsAppOpendByChat => _isAppOpendByChat;
set setIsAppOpendByChat(bool isAppOpendByChat) {
_isAppOpendByChat = isAppOpendByChat;
}
RemoteMessage? _notificationData;
RemoteMessage? get getNotificationData => _notificationData;
set setNotificationData(RemoteMessage? notificationData) {
_notificationData = notificationData;
}
} }

@ -1,8 +1,10 @@
import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/main.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
@ -58,12 +60,12 @@ class AppNotifications {
} }
void _handleMessage(RemoteMessage message) { void _handleMessage(RemoteMessage message) {
AppState().setIsAppOpendByChat = true; Utils.saveStringFromPrefs("isAppOpendByChat", "true");
} }
void _handleOpenApp(RemoteMessage message) { void _handleOpenApp(RemoteMessage message) {
AppState().setIsAppOpendByChat = true; Utils.saveStringFromPrefs("isAppOpendByChat", "true");
AppState().setNotificationData = message; Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString());
} }
} }
@ -75,6 +77,7 @@ AndroidNotificationChannel channel = const AndroidNotificationChannel(
Future<dynamic> backgroundMessageHandler(RemoteMessage message) async { Future<dynamic> backgroundMessageHandler(RemoteMessage message) async {
await Firebase.initializeApp(); await Firebase.initializeApp();
AppState().setIsAppOpendByChat = true; Utils.saveStringFromPrefs("isAppOpendByChat", "true");
AppState().setNotificationData = message; logger.w(message.data["user_chat_history_response"]);
Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString());
} }

@ -16,6 +16,7 @@ import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/classes/encryption.dart';
import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/main.dart';
import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart';
import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart';
@ -23,6 +24,7 @@ import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.da
import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as userLoginToken; import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as userLoginToken;
import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav;
import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart'; import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart';
import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart';
import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart';
import 'package:mohem_flutter_app/widgets/image_picker.dart'; import 'package:mohem_flutter_app/widgets/image_picker.dart';
import 'package:open_file/open_file.dart'; import 'package:open_file/open_file.dart';
@ -125,9 +127,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
ChatUserModel favUList = await ChatApiClient().getFavUsers(); ChatUserModel favUList = await ChatApiClient().getFavUsers();
if (favUList.response != null && recentChat.response != null) { if (favUList.response != null && recentChat.response != null) {
favUsersList = favUList.response!; favUsersList = favUList.response!;
favUsersList.sort( favUsersList.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase()));
(ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase()),
);
for (dynamic user in recentChat.response!) { for (dynamic user in recentChat.response!) {
for (dynamic favUser in favUList.response!) { for (dynamic favUser in favUList.response!) {
if (user.id == favUser.id) { if (user.id == favUser.id) {
@ -319,7 +319,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
user.userStatus = items.first["userStatus"]; user.userStatus = items.first["userStatus"];
} }
} }
if (teamMembersList != null) {
if (teamMembersList.isNotEmpty) { if (teamMembersList.isNotEmpty) {
for (ChatUser user in teamMembersList!) { for (ChatUser user in teamMembersList!) {
if (user.id == items.first["id"]) { if (user.id == items.first["id"]) {
@ -327,7 +326,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
} }
} }
}
notifyListeners(); notifyListeners();
} }
@ -1453,24 +1451,19 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
void openChatByNoti(BuildContext context) async { void openChatByNoti(BuildContext context) async {
print(AppState().getNotificationData!.messageId); SingleUserChatModel nUser = SingleUserChatModel.fromJson(
logger.d(AppState().getNotificationData!.toMap()); jsonDecode(await Utils.getStringFromPrefs("notificationData")),
if (AppState().getNotificationData!.data != null) { );
logger.d(AppState().getNotificationData!.data["user_chat_history_response"]); Utils.saveStringFromPrefs("isAppOpendByChat", "false");
logger.w("-----------------------This is the Read Data------------------------------------"); Utils.saveStringFromPrefs("notificationData", "null");
var tempData = jsonDecode(AppState().getNotificationData!.data["user_chat_history_response"]); Future.delayed(const Duration(seconds: 1));
// List<SingleUserChatModel> Temp = singleUserChatModelFromJson(); for (ChatUser user in searchedChats!) {
// print(Temp.first.contant); if (user.id == nUser.targetUserId) {
AppState().setIsAppOpendByChat = false; Navigator.pushNamed(context, AppRoutes.chatDetailed, arguments: ChatDetailedScreenParams(user, false));
AppState().setNotificationData = null; return;
// Navigator.pushNamed( } else {
// context, openChatByNoti(context);
// AppRoutes.chatDetailed, }
// arguments: ChatDetailedScreenParams(m.searchedChats![index], false),
// ).then((Object? value) {
// clearSelections();
// notifyListeners();
// });
} }
} }
} }

@ -2,11 +2,11 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/main.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/ui/chat/chat_home_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_home_screen.dart';
import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart';
@ -51,12 +51,13 @@ class _ChatHomeState extends State<ChatHome> {
} }
if (data.searchedChats == null || data.searchedChats!.isEmpty) { if (data.searchedChats == null || data.searchedChats!.isEmpty) {
data.isLoading = true; data.isLoading = true;
data.getUserRecentChats().whenComplete(() { data.getUserRecentChats().whenComplete(() async {
if (AppState().getNotificationData != null) { String isAppOpendByChat = await Utils.getStringFromPrefs("isAppOpendByChat");
String notificationData = await Utils.getStringFromPrefs("notificationData");
if (isAppOpendByChat != "null" || isAppOpendByChat == "true" && notificationData != "null") {
data.openChatByNoti(context); data.openChatByNoti(context);
} }
}); });
} }
} }

@ -26,14 +26,10 @@ class ChatHomeScreen extends StatefulWidget {
class _ChatHomeScreenState extends State<ChatHomeScreen> { class _ChatHomeScreenState extends State<ChatHomeScreen> {
TextEditingController search = TextEditingController(); TextEditingController search = TextEditingController();
late ChatProviderModel data;
final RefreshController _rc = RefreshController(initialRefresh: false);
@override @override
void initState() { void initState() {
super.initState(); super.initState();
data = Provider.of<ChatProviderModel>(context, listen: false);
} }
@override @override

@ -93,17 +93,14 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
} }
void _bHubCon() { void _bHubCon() {
cProvider.getUserAutoLoginToken().whenComplete(() { cProvider.getUserAutoLoginToken().whenComplete(() async {
if (AppState().getIsAppOpendByChat) { String isAppOpendByChat = await Utils.getStringFromPrefs("isAppOpendByChat");
logger.w("From Notification"); if (isAppOpendByChat != null && isAppOpendByChat == "true") {
Utils.showLoading(context); Utils.showLoading(context);
cProvider.buildHubConnection(); cProvider.buildHubConnection();
Future.delayed(const Duration(seconds: 2), () async { Future.delayed(const Duration(seconds: 2), () async {
if (AppState().getIsAppOpendByChat) {
cProvider.invokeChatCounter(userId: AppState().chatDetails!.response!.id!); cProvider.invokeChatCounter(userId: AppState().chatDetails!.response!.id!);
Utils.hideLoading(context);
gotoChat(context); gotoChat(context);
}
}); });
} else { } else {
cProvider.buildHubConnection(); cProvider.buildHubConnection();
@ -115,7 +112,6 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
} }
Future<void> checkHubCon() async { Future<void> checkHubCon() async {
print("-------------------------Again Hub Connection --------------------------------");
if (chatHubConnection.state == HubConnectionState.Connected) { if (chatHubConnection.state == HubConnectionState.Connected) {
await chatHubConnection.stop(); await chatHubConnection.stop();
await chatHubConnection.start(); await chatHubConnection.start();
@ -126,7 +122,6 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
void gotoChat(BuildContext context) async { void gotoChat(BuildContext context) async {
if (chatHubConnection.state == HubConnectionState.Connected) { if (chatHubConnection.state == HubConnectionState.Connected) {
logger.w("Hub Connection Connected + App Opened From Chat Notification");
Utils.hideLoading(context); Utils.hideLoading(context);
Navigator.pushNamed(context, AppRoutes.chat); Navigator.pushNamed(context, AppRoutes.chat);
} }

Loading…
Cancel
Save