1- import 'dart:async' ;
21import 'dart:convert' ;
3-
4- import 'package:firebase_analytics/firebase_analytics.dart' ;
2+ import 'package:firebase_remote_config/firebase_remote_config.dart' ;
53import 'package:flutter_twitter_clone/helper/enum.dart' ;
64import 'package:http/http.dart' as http;
75import 'package:firebase_database/firebase_database.dart' ;
@@ -18,6 +16,9 @@ class ChatState extends AppState {
1816 List <ChatMessage > _messageList;
1917 List <User > _chatUserList;
2018 User _chatUser;
19+ String serverToken = "<FCM SERVER KEY>" ;
20+
21+ /// Get FCM server key from firebase project settings
2122 User get chatUser => _chatUser;
2223 set setChatUser (User model) {
2324 _chatUser = model;
@@ -47,7 +48,7 @@ class ChatState extends AppState {
4748 }
4849 }
4950
50- void databaseInit (String userId, String myId) {
51+ void databaseInit (String userId, String myId) async {
5152 _messageList = null ;
5253 if (_channelName == null ) {
5354 getChannelName (userId, myId);
@@ -65,6 +66,28 @@ class ChatState extends AppState {
6566 }
6667 }
6768
69+ /// FCM server key is stored in firebase remote config
70+ /// you have to save server key in firebase remote config
71+ /// To fetch this key go to project setting in firebase
72+ /// Click on `cloud messaging` tab
73+ /// Copy server key from `Project credentials`
74+ /// Now goto `Remote Congig` section in fireabse
75+ /// Add [FcmServerKey] as paramerter key and below json in Default vslue
76+ /// ``` json
77+ /// {
78+ /// "key": "FCM server key here"
79+ /// } ```
80+ /// For more detail visit:- https://pub.dev/packages/firebase_remote_config#-readme-tab-
81+ void getFCMServerKey () async {
82+ final RemoteConfig remoteConfig = await RemoteConfig .instance;
83+ await remoteConfig.fetch (expiration: const Duration (hours: 5 ));
84+ await remoteConfig.activateFetched ();
85+ var data = remoteConfig.getString ('FcmServerKey' );
86+ if (data != null ) {
87+ serverToken = jsonDecode (data)["key" ];
88+ }
89+ }
90+
6891 void getUserchatList (String userId) {
6992 try {
7093 final databaseReference = FirebaseDatabase .instance.reference ();
@@ -93,7 +116,7 @@ class ChatState extends AppState {
93116 }
94117 }
95118
96- void getchatDetailAsync () {
119+ void getchatDetailAsync () async {
97120 try {
98121 final databaseReference = FirebaseDatabase .instance.reference ();
99122 databaseReference
@@ -242,8 +265,7 @@ class ChatState extends AppState {
242265 if (chatUser.fcmToken == null ) {
243266 return ;
244267 }
245- final String serverToken = "ADD FIREBASE SERVER KEY HERE" ;
246-
268+
247269 var body = jsonEncode (< String , dynamic > {
248270 'notification' : < String , dynamic > {
249271 'body' : model.message,
0 commit comments