Trying to implement a read receipt feature in my app...
Posting Data
private void sendMessage() {
String messageText = messageArea.getText().toString();
if (TextUtils.isEmpty(messageText)) {
Toast.makeText(getApplicationContext(), "Can't Send Blank Message", Toast.LENGTH_SHORT).show();
} else {
String message_sender_ref = "Messages/" + MessageSenderId + "/" + MessageRecieverId;
String message_reciver_ref = "Messages/" + MessageRecieverId + "/" + MessageSenderId;
Map messageTextBody = new HashMap<>();
messageTextBody.put("Message", messageText);
messageTextBody.put("Seen", "False");
messageTextBody.put("Type", "Text");
messageTextBody.put("Time", ServerValue.TIMESTAMP);
messageTextBody.put("From", MessageSenderId);
DatabaseReference user_message_key = mDatabaseReference.child("Messages").child(MessageSenderId).child(MessageRecieverId).push();
String message_push_id = user_message_key.getKey();
Map messageBodyDetails = new HashMap();
messageBodyDetails.put(message_sender_ref + "/" + message_push_id, messageTextBody);
messageBodyDetails.put(message_reciver_ref + "/" + message_push_id, messageTextBody);
mDatabaseReference.updateChildren(messageBodyDetails, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null) {
Log.d("Chat_Log", databaseError.getMessage().toString());
}
messageArea.setText("");
}
});
}
}
Now how do i access the "Seen = False" data which is inside a unique ID... i can access it through ValueEventListener but how do i make changes of that? i know only to fetch the data but i want to change the data of it... Can someone help me out please
Tried method
DatabaseReference seenRef = mDatabaseReference.child("Messages").child(MessageSenderId).child(MessageRecieverId).child("Seen");
seenRef.setValue("True");
I tried this above method but it just creates one more hild alongside it and sets its value to true.... someone please help me out... Thanks in advance
Database - https://ibb.co/js3iDd