diff --git a/android/app/src/main/java/com/chatman/activity/ChatRoomActivity.java b/android/app/src/main/java/com/chatman/activity/ChatRoomActivity.java index 86babf70fbe3fc82710bdce7b97893ec4c08a20f..1637daa955b91e3ee52b553725963b041b91a639 100644 --- a/android/app/src/main/java/com/chatman/activity/ChatRoomActivity.java +++ b/android/app/src/main/java/com/chatman/activity/ChatRoomActivity.java @@ -2,11 +2,14 @@ package com.chatman.activity; import android.content.Intent; import android.os.Build; +import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; +import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.EditText; @@ -14,15 +17,30 @@ import android.widget.ImageButton; import android.widget.TextView; import com.chatman.R; +import com.chatman.adapter.ChatAdapter; +import com.chatman.helper.FirebaseHelper; +import com.chatman.helper.PreferencesHelper; +import com.chatman.model.Chat; +import com.chatman.model.ChatRoom; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseError; +import com.google.firebase.database.FirebaseDatabase; +import com.google.firebase.database.ValueEventListener; + +import java.util.Calendar; +import java.util.List; public class ChatRoomActivity extends AppCompatActivity { + private static final String TAG = ChatRoomActivity.class.getSimpleName(); + private Toolbar toolbar; private RecyclerView chatRv; + private ChatAdapter adapter; private EditText chatEt; private ImageButton chatSend; private TextView toolbarName; - + private List<Chat> chatList; private String chatRoomId; @@ -58,6 +76,55 @@ public class ChatRoomActivity extends AppCompatActivity { toolbarName.setText(intent.getStringExtra("name")); chatRoomId = intent.getStringExtra("chatRoomId"); } + + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); + linearLayoutManager.setReverseLayout(false); + linearLayoutManager.setStackFromEnd(false); + chatRv.setLayoutManager(linearLayoutManager); + adapter = new ChatAdapter(chatList); + chatRv.setAdapter(adapter); + + initializeListener(); + } + + private void initializeListener() { + chatSend.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!chatEt.getText().toString().equals("")) { + FirebaseDatabase.getInstance().getReference().child("chatroom").child(chatRoomId) + .addListenerForSingleValueEvent(new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot dataSnapshot) { + String friendId = ""; + for(DataSnapshot userId : dataSnapshot.child("users").getChildren()) { + if (!((String) userId.getValue()).equals(PreferencesHelper.getToken(ChatRoomActivity.this))) { + friendId = (String) userId.getValue(); + Log.d(TAG, "onDataChange: friendId " + friendId); + } + } + Chat sendChat = new Chat(PreferencesHelper.getToken(ChatRoomActivity.this), + PreferencesHelper.getUserName(ChatRoomActivity.this), friendId, + Calendar.getInstance().getTime(), chatEt.getText().toString()); + String idChat = FirebaseHelper.dbMessage.push().getKey(); + Log.d(TAG, "onDataChange: idChat" + idChat); + FirebaseHelper.dbMessage.child(idChat).setValue(sendChat); + String index = String.valueOf(dataSnapshot.child("messages").getChildrenCount()); + Log.d(TAG, "onDataChange: index chat " + index); + FirebaseDatabase.getInstance().getReference("chatroom/" + chatRoomId + "/messages") + .child(index).setValue(idChat); + chatEt.setText(""); + } + + @Override + public void onCancelled(@NonNull DatabaseError databaseError) { + + } + }); + + } + } + }); } @Override diff --git a/android/app/src/main/java/com/chatman/adapter/ChatAdapter.java b/android/app/src/main/java/com/chatman/adapter/ChatAdapter.java index 478b325f5a64e11a620afd559fdfb5b1f43d70da..103498938afe720881cfd4177289dc558620c998 100644 --- a/android/app/src/main/java/com/chatman/adapter/ChatAdapter.java +++ b/android/app/src/main/java/com/chatman/adapter/ChatAdapter.java @@ -78,7 +78,7 @@ public class ChatAdapter extends RecyclerView.Adapter { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { context = parent.getContext(); - currentUser = PreferencesHelper.getUserFirebaseKey(context); + currentUser = PreferencesHelper.getToken(context); View view; if (viewType == VIEW_TYPE_MESSAGE_SENT) { diff --git a/android/app/src/main/java/com/chatman/fragment/BotFragment.java b/android/app/src/main/java/com/chatman/fragment/BotFragment.java index ea286bb37913e71ccbc49f4fc511d09c4ea3d2ad..6c1ce4fcf5eb897576ffadac46b32bb26cd55945 100644 --- a/android/app/src/main/java/com/chatman/fragment/BotFragment.java +++ b/android/app/src/main/java/com/chatman/fragment/BotFragment.java @@ -79,10 +79,10 @@ public class BotFragment extends Fragment { public void onClick(View view) { if (!message.getText().toString().equals("")){ Toast.makeText(context, "Send: "+message.getText().toString(), Toast.LENGTH_SHORT).show(); - Chat sendMessage = new Chat(PreferencesHelper.getUserFirebaseKey(context), PreferencesHelper.getUserName(context), BOT_KEY, Calendar.getInstance().getTime(), message.getText().toString()); + Chat sendMessage = new Chat(PreferencesHelper.getToken(context), PreferencesHelper.getUserName(context), BOT_KEY, Calendar.getInstance().getTime(), message.getText().toString()); String key = FirebaseHelper.dbMessage.push().getKey(); FirebaseHelper.dbMessage.child(key).setValue(sendMessage); - + message.setText(""); // BALASAN DARI BOT Chat botMessage = new Chat(BOT_KEY, "ChatMan Bot", PreferencesHelper.getUserFirebaseKey(context), Calendar.getInstance().getTime(), "Halo! Selamat datang di ChatMan"); String botKey = FirebaseHelper.dbMessage.push().getKey(); diff --git a/android/app/src/main/java/com/chatman/fragment/HomeFragment.java b/android/app/src/main/java/com/chatman/fragment/HomeFragment.java index 653b8479631ccf0f7416a27fd201f1ef4ba2c879..78af406448138662c76d8f92771bccab9a8a4c11 100644 --- a/android/app/src/main/java/com/chatman/fragment/HomeFragment.java +++ b/android/app/src/main/java/com/chatman/fragment/HomeFragment.java @@ -223,7 +223,7 @@ public class HomeFragment extends Fragment { for (DataSnapshot ds : userSnapshot.getChildren()) { String instanceId = (String) ds.getValue(); Log.d(TAG, "onDataChange: instance id " + instanceId); - if (!instanceId.equals(PreferencesHelper.getToken(getContext()))) { + if (!instanceId.equals(PreferencesHelper.getToken(getActivity()))) { Log.d(TAG, "onDataChange: user found"); Log.d(TAG, "onDataChange: instance id 2 " + instanceId); FirebaseDatabase.getInstance().getReference().child("user").orderByChild("key").limitToFirst(1) diff --git a/android/app/src/main/res/layout/activity_chat_room.xml b/android/app/src/main/res/layout/activity_chat_room.xml index 118f966b6ed15e47bf2edaf8a3375f4e9e006b7a..725d8fc5dc614f25e9341411b7ced70eebd036bf 100644 --- a/android/app/src/main/res/layout/activity_chat_room.xml +++ b/android/app/src/main/res/layout/activity_chat_room.xml @@ -38,10 +38,9 @@ <android.support.v7.widget.RecyclerView android:id="@+id/chat_rv" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_width="0dp" + android:layout_height="0dp" android:layout_marginTop="8dp" - android:layout_marginBottom="8dp" app:layout_constraintBottom_toTopOf="@+id/constraintLayout" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" diff --git a/android/app/src/main/res/layout/fragment_bot.xml b/android/app/src/main/res/layout/fragment_bot.xml index a97fa3abe080926c6da28fc85d51f23ecc9812da..084af57f3cc7d9d9e69941edbf8a4aa29fb3ea3e 100644 --- a/android/app/src/main/res/layout/fragment_bot.xml +++ b/android/app/src/main/res/layout/fragment_bot.xml @@ -9,20 +9,21 @@ <android.support.v7.widget.RecyclerView android:id="@+id/chat_bot_room_rv" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginBottom="56dp" - app:layout_constraintTop_toTopOf="parent" + android:layout_height="0dp" + app:layout_constraintBottom_toTopOf="@+id/constraintLayout3" app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toRightOf="parent"> + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent"> </android.support.v7.widget.RecyclerView> <android.support.constraint.ConstraintLayout + android:id="@+id/constraintLayout3" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="56dp" - app:layout_constraintBottom_toBottomOf="parent" - android:orientation="horizontal"> + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent"> <EditText android:id="@+id/chat_bot_room_et"