@@ -41,9 +41,7 @@ public class FirebaseMessagingService extends com.google.firebase.messaging.Fire
41
41
private SimpleDateFormat dateFormat = new SimpleDateFormat ("hh:mm aa" , Locale .ENGLISH );
42
42
43
43
private DatabaseReference messageData ;
44
- private DatabaseReference rootData ;
45
44
private DatabaseReference usersData ;
46
- private DatabaseReference chatData ;
47
45
48
46
private String uID ;
49
47
@@ -57,66 +55,72 @@ public void onMessageReceived(@NonNull final RemoteMessage remoteMessage) {
57
55
super .onMessageReceived (remoteMessage );
58
56
59
57
if (remoteMessage .getData ().size () > 0 ) {
58
+ try {
59
+ DatabaseReference rootData = FirebaseDatabase .getInstance ().getReference ();
60
60
61
- rootData = FirebaseDatabase . getInstance ().getReference ();
61
+ uID = Objects . requireNonNull ( FirebaseAuth . getInstance ().getCurrentUser ()). getUid ();
62
62
63
- uID = Objects . requireNonNull ( FirebaseAuth . getInstance (). getCurrentUser ()). getUid ( );
63
+ DatabaseReference chatData = rootData . child ( "Chat" ). child ( uID );
64
64
65
- chatData = rootData .child ("Chat" ). child ( uID );
65
+ messageData = rootData .child ("messages" );
66
66
67
- messageData = rootData .child ("messages " );
67
+ usersData = rootData .child ("Users " );
68
68
69
- usersData = rootData .child ("Users" );
69
+ notificationManager = (NotificationManager ) getSystemService (Context .NOTIFICATION_SERVICE );
70
+ assert notificationManager != null ;
71
+ notificationManager .cancelAll ();
70
72
71
- notificationManager = ( NotificationManager ) getSystemService ( Context . NOTIFICATION_SERVICE );
72
- assert notificationManager != null ;
73
- notificationManager . cancelAll ( );
73
+ final String pushID = remoteMessage . getData (). get ( "pushID" );
74
+ String times = remoteMessage . getData (). get ( "times" ) ;
75
+ String messageNode = remoteMessage . getData (). get ( "messageID" );
74
76
75
- final String pushID = remoteMessage .getData ().get ("pushID" );
76
- String times = remoteMessage .getData ().get ("times" );
77
- String messageNode = remoteMessage .getData ().get ("messageID" );
77
+ assert times != null ;
78
+ String [] split = times .split ("," , 3 );
78
79
79
- String [] split = times .split ("," , 3 );
80
+ assert messageNode != null ;
81
+ assert pushID != null ;
82
+ messageData .child (messageNode ).child (pushID ).child ("state" ).setValue (2 );
83
+ messageData .child (messageNode ).child (pushID ).child ("times" ).setValue (split [0 ] + "," + dateFormat .format (new Date ()) + ",null" );
80
84
81
- assert messageNode != null ;
82
- assert pushID != null ;
83
- messageData .child (messageNode ).child (pushID ).child ("state" ).setValue (2 );
84
- messageData .child (messageNode ).child (pushID ).child ("times" ).setValue (split [0 ]+"," +dateFormat .format (new Date ())+",null" );
85
+ chatData .addListenerForSingleValueEvent (new ValueEventListener () {
85
86
86
- chatData .addListenerForSingleValueEvent (new ValueEventListener () {
87
+ @ Override
88
+ public void onDataChange (@ NonNull DataSnapshot dataSnapshot ) {
87
89
88
- @ Override
89
- public void onDataChange ( @ NonNull DataSnapshot dataSnapshot ) {
90
+ for ( DataSnapshot children : dataSnapshot . getChildren ()) {
91
+ Chat chat = children . getValue ( Chat . class );
90
92
91
- for (DataSnapshot children : dataSnapshot .getChildren ()) {
92
- Chat chat = children .getValue (Chat .class );
93
+ String childKey = children .getKey ();
93
94
94
- String childKey = children .getKey ();
95
+ assert chat != null ;
96
+ if (chat .getUnSeen () != 0 ) {
95
97
96
- assert chat != null ;
97
- if (chat .getUnSeen () != 0 ) {
98
+ assert childKey != null ;
99
+ usersData .child (childKey ).addListenerForSingleValueEvent (new ValueEventListener () {
100
+ @ Override
101
+ public void onDataChange (@ NonNull DataSnapshot dataSnapshot ) {
102
+ Users users = dataSnapshot .getValue (Users .class );
103
+ sendNotificationToUser (chat .getUnSeen (), chat .getMessageNode (), users );
104
+ }
98
105
99
- usersData .child (childKey ).addListenerForSingleValueEvent (new ValueEventListener () {
100
- @ Override
101
- public void onDataChange (@ NonNull DataSnapshot dataSnapshot ) {
102
- Users users = dataSnapshot .getValue (Users .class );
103
- sendNotificationToUser (chat .getUnSeen (), chat .getMessageNode () , users );
104
- }
106
+ @ Override
107
+ public void onCancelled (@ NonNull DatabaseError databaseError ) {
105
108
106
- @ Override
107
- public void onCancelled (@ NonNull DatabaseError databaseError ) {
108
-
109
- }
110
- });
109
+ }
110
+ });
111
+ }
111
112
}
112
113
}
113
- }
114
114
115
- @ Override
116
- public void onCancelled (@ NonNull DatabaseError databaseError ) {
115
+ @ Override
116
+ public void onCancelled (@ NonNull DatabaseError databaseError ) {
117
117
118
- }
119
- });
118
+ }
119
+ });
120
+
121
+ } catch (NullPointerException e ) {
122
+ e .printStackTrace ();
123
+ }
120
124
}
121
125
}
122
126
@@ -128,6 +132,7 @@ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
128
132
for (DataSnapshot children : dataSnapshot .getChildren ()) {
129
133
130
134
Messages messages = children .getValue (Messages .class );
135
+ assert messages != null ;
131
136
notifyUserWithNotification (users .getName () , messages .getFrom () , users .getImage () , users .getThumbnail () , messages .getMessage ());
132
137
}
133
138
}
0 commit comments