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 _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 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/foundation.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/classes/utils.dart';
import 'package:mohem_flutter_app/main.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:firebase_core/firebase_core.dart';
@ -58,12 +60,12 @@ class AppNotifications {
}
void _handleMessage(RemoteMessage message) {
AppState().setIsAppOpendByChat = true;
Utils.saveStringFromPrefs("isAppOpendByChat", "true");
}
void _handleOpenApp(RemoteMessage message) {
AppState().setIsAppOpendByChat = true;
AppState().setNotificationData = message;
Utils.saveStringFromPrefs("isAppOpendByChat", "true");
Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString());
}
}
@ -75,6 +77,7 @@ AndroidNotificationChannel channel = const AndroidNotificationChannel(
Future<dynamic> backgroundMessageHandler(RemoteMessage message) async {
await Firebase.initializeApp();
AppState().setIsAppOpendByChat = true;
AppState().setNotificationData = message;
Utils.saveStringFromPrefs("isAppOpendByChat", "true");
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/encryption.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/models/chat/chat_user_image_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/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/ui/chat/chat_detailed_screen.dart';
import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart';
import 'package:mohem_flutter_app/widgets/image_picker.dart';
import 'package:open_file/open_file.dart';
@ -125,9 +127,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
ChatUserModel favUList = await ChatApiClient().getFavUsers();
if (favUList.response != null && recentChat.response != null) {
favUsersList = favUList.response!;
favUsersList.sort(
(ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase()),
);
favUsersList.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase()));
for (dynamic user in recentChat.response!) {
for (dynamic favUser in favUList.response!) {
if (user.id == favUser.id) {
@ -319,12 +319,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
user.userStatus = items.first["userStatus"];
}
}
if (teamMembersList != null) {
if (teamMembersList.isNotEmpty) {
for (ChatUser user in teamMembersList!) {
if (user.id == items.first["id"]) {
user.userStatus = items.first["userStatus"];
}
if (teamMembersList.isNotEmpty) {
for (ChatUser user in teamMembersList!) {
if (user.id == items.first["id"]) {
user.userStatus = items.first["userStatus"];
}
}
}
@ -1453,24 +1451,19 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
}
void openChatByNoti(BuildContext context) async {
print(AppState().getNotificationData!.messageId);
logger.d(AppState().getNotificationData!.toMap());
if (AppState().getNotificationData!.data != null) {
logger.d(AppState().getNotificationData!.data["user_chat_history_response"]);
logger.w("-----------------------This is the Read Data------------------------------------");
var tempData = jsonDecode(AppState().getNotificationData!.data["user_chat_history_response"]);
// List<SingleUserChatModel> Temp = singleUserChatModelFromJson();
// print(Temp.first.contant);
AppState().setIsAppOpendByChat = false;
AppState().setNotificationData = null;
// Navigator.pushNamed(
// context,
// AppRoutes.chatDetailed,
// arguments: ChatDetailedScreenParams(m.searchedChats![index], false),
// ).then((Object? value) {
// clearSelections();
// notifyListeners();
// });
SingleUserChatModel nUser = SingleUserChatModel.fromJson(
jsonDecode(await Utils.getStringFromPrefs("notificationData")),
);
Utils.saveStringFromPrefs("isAppOpendByChat", "false");
Utils.saveStringFromPrefs("notificationData", "null");
Future.delayed(const Duration(seconds: 1));
for (ChatUser user in searchedChats!) {
if (user.id == nUser.targetUserId) {
Navigator.pushNamed(context, AppRoutes.chatDetailed, arguments: ChatDetailedScreenParams(user, false));
return;
} else {
openChatByNoti(context);
}
}
}
}

@ -2,11 +2,11 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.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/utils.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/widget_extensions.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/ui/chat/chat_home_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) {
data.isLoading = true;
data.getUserRecentChats().whenComplete(() {
if (AppState().getNotificationData != null) {
data.getUserRecentChats().whenComplete(() async {
String isAppOpendByChat = await Utils.getStringFromPrefs("isAppOpendByChat");
String notificationData = await Utils.getStringFromPrefs("notificationData");
if (isAppOpendByChat != "null" || isAppOpendByChat == "true" && notificationData != "null") {
data.openChatByNoti(context);
}
});
}
}

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

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

Loading…
Cancel
Save