Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fec2e9b

Browse files
committed
Saving user and bot message to database
1 parent b5cdb00 commit fec2e9b

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

app/src/main/java/com/example/nobulijava/activity/UserChatBotActivity.java

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.example.nobulijava.activity;
22

3-
import static android.view.View.GONE;
4-
3+
import androidx.annotation.NonNull;
54
import androidx.appcompat.app.AppCompatActivity;
65
import androidx.recyclerview.widget.RecyclerView;
76

@@ -18,6 +17,8 @@
1817
import com.example.nobulijava.interfaces.BotReply;
1918
import com.example.nobulijava.model.MessageObj;
2019
import com.example.nobulijava.utils.SendMessageInBg;
20+
import com.google.android.gms.tasks.OnCompleteListener;
21+
import com.google.android.gms.tasks.Task;
2122
import com.google.api.gax.core.FixedCredentialsProvider;
2223
import com.google.auth.oauth2.GoogleCredentials;
2324
import com.google.auth.oauth2.ServiceAccountCredentials;
@@ -28,6 +29,9 @@
2829
import com.google.cloud.dialogflow.v2.SessionsSettings;
2930
import com.google.cloud.dialogflow.v2.TextInput;
3031
import com.google.common.collect.Lists;
32+
import com.google.firebase.database.DataSnapshot;
33+
import com.google.firebase.database.DatabaseReference;
34+
import com.google.firebase.database.FirebaseDatabase;
3135

3236
import java.io.InputStream;
3337
import java.util.ArrayList;
@@ -43,7 +47,9 @@ public class UserChatBotActivity extends AppCompatActivity implements BotReply {
4347
TextView textViewDisclaimer;
4448

4549
MessageAdapter messageAdapter;
46-
List<MessageObj> messageList = new ArrayList<>();
50+
List<MessageObj> messageObjArrayList = new ArrayList<>();
51+
52+
private DatabaseReference mDatabase;
4753

4854
//dialogFlow
4955
private SessionsClient sessionsClient;
@@ -58,27 +64,41 @@ protected void onCreate(Bundle savedInstanceState) {
5864

5965
getSupportActionBar().setTitle("Nobuli Chatbot");
6066

67+
mDatabase = FirebaseDatabase.getInstance().getReference();
68+
6169
recyclerViewChat = findViewById(R.id.chatRecyclerView);
6270
editTextMessageBox = findViewById(R.id.messageBoxEditText);
6371
btnSend = findViewById(R.id.sendButton);
6472
textViewDisclaimer = findViewById(R.id.textView_userChatBot_textDisclaimer);
6573

66-
messageAdapter = new MessageAdapter(messageList, this);
74+
messageAdapter = new MessageAdapter(messageObjArrayList, this);
6775
recyclerViewChat.setAdapter(messageAdapter);
6876

77+
mDatabase.child("Message").get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
78+
@Override
79+
public void onComplete(@NonNull Task<DataSnapshot> task) {
80+
for (DataSnapshot msgSnapshot: task.getResult().getChildren()){
81+
MessageObj msgObj = msgSnapshot.getValue(MessageObj.class);
82+
messageObjArrayList.add(msgObj);
83+
}
84+
Objects.requireNonNull(recyclerViewChat.getAdapter()).notifyDataSetChanged();
85+
}
86+
});
87+
6988
btnSend.setOnClickListener(new View.OnClickListener() {
7089
@Override
7190
public void onClick(View view) {
72-
textViewDisclaimer.setVisibility(GONE);
73-
String message = editTextMessageBox.getText().toString();
91+
textViewDisclaimer.setVisibility(View.GONE);
92+
String message = editTextMessageBox.getText().toString().trim();
7493
if (!message.isEmpty()) {
75-
76-
messageList.add(new MessageObj(message, false));
94+
MessageObj newMessage = new MessageObj(message, false);
95+
messageObjArrayList.add(newMessage);
96+
mDatabase.child("Message").push().setValue(newMessage);
7797
editTextMessageBox.setText("");
7898
sendMessageToBot(message);
7999
Objects.requireNonNull(recyclerViewChat.getAdapter()).notifyDataSetChanged();
80100
Objects.requireNonNull(recyclerViewChat.getLayoutManager())
81-
.scrollToPosition(messageList.size() - 1);
101+
.scrollToPosition(messageObjArrayList.size() - 1);
82102
} else {
83103
Toast.makeText(UserChatBotActivity.this, "Please enter text!", Toast.LENGTH_SHORT).show();
84104
}
@@ -118,13 +138,15 @@ public void callback(DetectIntentResponse returnResponse) {
118138
if (returnResponse != null) {
119139
String botReply = returnResponse.getQueryResult().getFulfillmentText();
120140
if (!botReply.isEmpty()) {
121-
messageList.add(new MessageObj(botReply, true, returnResponse.getQueryResult().getIntent().getDisplayName()));
141+
MessageObj newBotMsg = new MessageObj(botReply, true, returnResponse.getQueryResult().getIntent().getDisplayName());
142+
mDatabase.child("Message").push().setValue(newBotMsg);
143+
messageObjArrayList.add(newBotMsg);
122144
messageAdapter.notifyDataSetChanged();
123145
if (returnResponse.getQueryResult().getIntent().getDisplayName().equals("Identify Cyberbully - report")){
124-
messageList.add(new MessageObj("Is there anything I can help you with?", true, "null"));
146+
messageObjArrayList.add(new MessageObj("Is there anything I can help you with?", true, "null"));
125147
}
126148
messageAdapter.notifyDataSetChanged();
127-
Objects.requireNonNull(recyclerViewChat.getLayoutManager()).scrollToPosition(messageList.size() - 1);
149+
Objects.requireNonNull(recyclerViewChat.getLayoutManager()).scrollToPosition(messageObjArrayList.size() - 1);
128150
} else {
129151
Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
130152
}

app/src/main/java/com/example/nobulijava/model/MessageObj.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ public MessageObj(String text, boolean isBot) {
1111
this.isBot = isBot;
1212
}
1313

14+
public MessageObj() {
15+
}
16+
1417
public MessageObj(String text, boolean isBot, String intent) {
1518
this.text = text;
1619
this.isBot = isBot;

0 commit comments

Comments
 (0)