import
android.os.Bundle;
import
android.text.TextUtils;
import
android.view.View;
import
android.widget.EditText;
import
android.widget.Toast;
import
androidx.annotation.NonNull;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.recyclerview.widget.LinearLayoutManager;
import
androidx.recyclerview.widget.RecyclerView;
import
com.google.android.gms.tasks.OnFailureListener;
import
com.google.android.gms.tasks.OnSuccessListener;
import
com.google.android.material.floatingactionbutton.FloatingActionButton;
import
com.google.firebase.ml.naturallanguage.FirebaseNaturalLanguage;
import
com.google.firebase.ml.naturallanguage.smartreply.FirebaseSmartReply;
import
com.google.firebase.ml.naturallanguage.smartreply.FirebaseTextMessage;
import
com.google.firebase.ml.naturallanguage.smartreply.SmartReplySuggestionResult;
import
java.util.ArrayList;
import
java.util.List;
public
class
MainActivity
extends
AppCompatActivity {
List<FirebaseTextMessage> messageList;
private
EditText userMsgEdt;
private
RecyclerView msgRV;
private
FloatingActionButton sendFAB;
private
ArrayList<ChatMsgModal> chatMsgModalArrayList;
private
ChatRVAdapter adapter;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userMsgEdt = findViewById(R.id.idEdtUserMsg);
msgRV = findViewById(R.id.idRVMessage);
sendFAB = findViewById(R.id.idBtnFAB);
messageList =
new
ArrayList<>();
chatMsgModalArrayList =
new
ArrayList<>();
adapter =
new
ChatRVAdapter(MainActivity.
this
, chatMsgModalArrayList);
LinearLayoutManager manager =
new
LinearLayoutManager(MainActivity.
this
);
msgRV.setLayoutManager(manager);
msgRV.setAdapter(adapter);
sendFAB.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
if
(TextUtils.isEmpty(userMsgEdt.getText().toString())) {
Toast.makeText(MainActivity.
this
,
"Please enter your message.."
, Toast.LENGTH_SHORT).show();
return
;
}
sendMessage();
userMsgEdt.setText(
""
);
}
});
}
private
void
sendMessage() {
FirebaseTextMessage message = FirebaseTextMessage.createForRemoteUser(
userMsgEdt.getText().toString(),
System.currentTimeMillis(),
"uid"
);
messageList.add(message);
chatMsgModalArrayList.add(
new
ChatMsgModal(userMsgEdt.getText().toString(),
0
));
adapter.notifyDataSetChanged();
FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(messageList).addOnSuccessListener(
new
OnSuccessListener<SmartReplySuggestionResult>() {
@Override
public
void
onSuccess(SmartReplySuggestionResult smartReplySuggestionResult) {
if
(smartReplySuggestionResult.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
Toast.makeText(MainActivity.
this
,
"Language not supported.."
, Toast.LENGTH_SHORT).show();
}
else
if
(smartReplySuggestionResult.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
chatMsgModalArrayList.add(
new
ChatMsgModal(smartReplySuggestionResult.getSuggestions().get(
0
).getText(),
1
));
adapter.notifyDataSetChanged();
}
}
}).addOnFailureListener(
new
OnFailureListener() {
@Override
public
void
onFailure(
@NonNull
Exception e) {
Toast.makeText(MainActivity.
this
,
"Fail to get data.."
+ e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}