diff --git a/android/app/src/main/java/com/chatman/activity/AuthActivity.java b/android/app/src/main/java/com/chatman/activity/AuthActivity.java index 7ad0470258faf9e699000d8bdc56d380a035107f..0aeb5b573d6b6b2ffe2b041dd73cbb50bf7b54ae 100644 --- a/android/app/src/main/java/com/chatman/activity/AuthActivity.java +++ b/android/app/src/main/java/com/chatman/activity/AuthActivity.java @@ -228,9 +228,12 @@ public class AuthActivity extends AppCompatActivity { final String name = nameEditText.getText().toString().trim(); final String email = emailEditText.getText().toString().trim(); final String password = passwordEditText.getText().toString().trim(); - String confirm = confirmEditText.getText().toString().trim(); - + final String confirm = confirmEditText.getText().toString().trim(); + Log.d(TAG, "register: name " + name); + Log.d(TAG, "register: email " + email); + Log.d(TAG, "register: password " + password); if (password.equals(confirm)) { + loadingDialog.show(); final boolean[] emailUnique = new boolean[] {true}; FirebaseHelper.dbUser.addValueEventListener(new ValueEventListener() { @Override @@ -240,33 +243,45 @@ public class AuthActivity extends AppCompatActivity { if (user.getEmail().equalsIgnoreCase(email)) { emailUnique[0] = false; } + if (emailUnique[0] && !name.equals("") && !email.equals("") && !password.equals("") && !confirm.equals("") ) { + FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { + @Override + public void onComplete(@NonNull Task<InstanceIdResult> task) { + String idFirebase = FirebaseHelper.dbUser.push().getKey(); + String instanceId = task.getResult().getToken(); + User user; + user = new User(instanceId, name, email, md5(password), idFirebase); + PreferencesHelper.setUserFirebaseId(AuthActivity.this, user.getId()); + PreferencesHelper.setTokenKey(AuthActivity.this, user.getKey()); + PreferencesHelper.setUserName(AuthActivity.this, user.getName()); + PreferencesHelper.setHasLogin(AuthActivity.this, true); + + FirebaseHelper.dbUser.child(idFirebase).setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() { + @Override + public void onComplete(@NonNull Task<Void> task) { + String idRoom = FirebaseDatabase.getInstance().getReference("chatroom").push().getKey(); + PreferencesHelper.setBotRoom(AuthActivity.this, idRoom); + FirebaseDatabase.getInstance().getReference("chatroom/" + idRoom) + .child("users/0").setValue("BOT_TOKEN"); + FirebaseDatabase.getInstance().getReference("chatroom/" + idRoom) + .child("users/1").setValue(PreferencesHelper.getToken(AuthActivity.this)); + loadingDialog.dismiss(); + finish(); + startActivity(new Intent(AuthActivity.this, MainActivity.class)); + } + }); + } + }); + } else { + loadingDialog.dismiss(); + showSnackBar(AuthActivity.this, "Email has been used"); + } } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); - if (emailUnique[0] && !name.equals("") && !email.equals("") && !password.equals("") && !confirm.equals("") ) { - FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { - @Override - public void onComplete(@NonNull Task<InstanceIdResult> task) { - String idFirebase = FirebaseHelper.dbUser.push().getKey(); - String instanceId = task.getResult().getToken(); - User user; - user = new User(instanceId, name, email, md5(password), idFirebase); - PreferencesHelper.setUserFirebaseId(AuthActivity.this, user.getId()); - PreferencesHelper.setTokenKey(AuthActivity.this, user.getKey()); - PreferencesHelper.setUserName(AuthActivity.this, user.getName()); - PreferencesHelper.setHasLogin(AuthActivity.this, true); - - FirebaseHelper.dbUser.child(idFirebase).setValue(user); - finish(); - startActivity(new Intent(AuthActivity.this, MainActivity.class)); - } - }); - } else { - showSnackBar(this, "Email has been used"); - } } else { showSnackBar(this, "Password did not match"); } 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 c521842eb089b62b997e30d8d8803b28915f8a9f..c5d08c8032d57292f5893d347507a9b2f1ee8ab3 100644 --- a/android/app/src/main/java/com/chatman/fragment/BotFragment.java +++ b/android/app/src/main/java/com/chatman/fragment/BotFragment.java @@ -9,6 +9,7 @@ import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -27,6 +28,7 @@ import com.chatman.helper.PreferencesHelper; import com.chatman.model.Chat; 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.ArrayList; @@ -84,9 +86,22 @@ public class BotFragment extends Fragment { if (!message.getText().toString().equals("")){ Toast.makeText(context, "Send: "+message.getText().toString(), Toast.LENGTH_SHORT).show(); Chat sendMessage = new Chat(PreferencesHelper.getToken(context), PreferencesHelper.getUserName(context), BOT_TOKEN, Calendar.getInstance().getTime(), message.getText().toString()); - String key = FirebaseHelper.dbMessage.push().getKey(); + final String key = FirebaseHelper.dbMessage.push().getKey(); FirebaseHelper.dbMessage.child(key).setValue(sendMessage); - + FirebaseDatabase.getInstance().getReference().child("chatroom").child(PreferencesHelper.getBotRoom(context)).addListenerForSingleValueEvent(new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot dataSnapshot) { + String index = String.valueOf(dataSnapshot.child("messages").getChildrenCount()); + Log.d("BotMessageHelper", "onDataChange: index " + index); + FirebaseDatabase.getInstance().getReference("chatroom/" + PreferencesHelper.getBotRoom(context) + "/messages") + .child(index).setValue(key); + } + + @Override + public void onCancelled(@NonNull DatabaseError databaseError) { + + } + }); //Bot response BotMessageHelper.respondBot(context, message.getText().toString()); diff --git a/android/app/src/main/java/com/chatman/helper/BotMessageHelper.java b/android/app/src/main/java/com/chatman/helper/BotMessageHelper.java index 16aa001a7538fb568d9372e37cd2ef8ec48bcad9..c2d31742b7680edfe8033c3116315eca1da39f85 100644 --- a/android/app/src/main/java/com/chatman/helper/BotMessageHelper.java +++ b/android/app/src/main/java/com/chatman/helper/BotMessageHelper.java @@ -5,11 +5,17 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; +import android.util.Log; import com.chatman.activity.CompassActivity; import com.chatman.model.Chat; import com.chatman.service.WeatherService; +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; @@ -34,9 +40,25 @@ public class BotMessageHelper { else sendBotMessage(context, "Halo! Selamat datang di ChatMan"); } - public static void sendBotMessage(Context context, String message) { + public static void sendBotMessage(final Context context, String message) { Chat botMessage = new Chat(BOT_TOKEN, "ChatMan Bot", PreferencesHelper.getToken(context), Calendar.getInstance().getTime(), message); - String botKey = FirebaseHelper.dbMessage.push().getKey(); + final String botKey = FirebaseHelper.dbMessage.push().getKey(); FirebaseHelper.dbMessage.child(botKey).setValue(botMessage); + + FirebaseDatabase.getInstance().getReference().child("chatroom").child(PreferencesHelper.getBotRoom(context)).addListenerForSingleValueEvent(new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot dataSnapshot) { + String index = String.valueOf(dataSnapshot.child("messages").getChildrenCount()); + Log.d("BotMessageHelper", "onDataChange: index " + index); + FirebaseDatabase.getInstance().getReference("chatroom/" + PreferencesHelper.getBotRoom(context) + "/messages") + .child(index).setValue(botKey); + + } + + @Override + public void onCancelled(@NonNull DatabaseError databaseError) { + + } + }); } } diff --git a/android/app/src/main/java/com/chatman/helper/PreferencesHelper.java b/android/app/src/main/java/com/chatman/helper/PreferencesHelper.java index 28720f6094901d449af20f362ed1d98800fe2951..75295c00831aa5fd587a95664cdd6c9444ce2703 100644 --- a/android/app/src/main/java/com/chatman/helper/PreferencesHelper.java +++ b/android/app/src/main/java/com/chatman/helper/PreferencesHelper.java @@ -10,6 +10,7 @@ public class PreferencesHelper { public static final String USER_NAME = "user_name"; public static final String HAS_LOGIN = "has_login"; public static final String TOKEN= "token"; + private static final String BOT_CHAT_ROOM = "bot_chat_room"; private static void setBooleanPreferences(Context context, String key, boolean value) { SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); @@ -80,4 +81,12 @@ public class PreferencesHelper { return getStringPreferences(context, TOKEN); } + public static String getBotRoom(Context context) { + return getStringPreferences(context, BOT_CHAT_ROOM); + } + + public static void setBotRoom(Context context, String string) { + setStringPreferences(context, BOT_CHAT_ROOM, string); + } + }