diff --git a/android/.idea/misc.xml b/android/.idea/misc.xml index 9fdea7e63e11bad24497deecd92148f3a7d21718..37a750962da6f2b31810e85c8acae1081de7f58c 100644 --- a/android/.idea/misc.xml +++ b/android/.idea/misc.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> - <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8 (1)" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/build/classes" /> </component> <component name="ProjectType"> diff --git a/android/app/src/main/java/com/chatman/AuthActivity.java b/android/app/src/main/java/com/chatman/AuthActivity.java index e3afc94002c9ffe38ae0ca49e26c46f1444bf2c7..894c3d93f2544f8151a9848968ff158f8fe64fd2 100644 --- a/android/app/src/main/java/com/chatman/AuthActivity.java +++ b/android/app/src/main/java/com/chatman/AuthActivity.java @@ -20,9 +20,13 @@ import com.bumptech.glide.Glide; import com.chatman.helper.FirebaseHelper; import com.chatman.helper.PreferencesHelper; import com.chatman.model.User; +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.ValueEventListener; +import com.google.firebase.iid.FirebaseInstanceId; +import com.google.firebase.iid.InstanceIdResult; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -137,9 +141,9 @@ public class AuthActivity extends AppCompatActivity { // do register public void register(View view) { - String name = nameEditText.getText().toString().trim(); + final String name = nameEditText.getText().toString().trim(); final String email = emailEditText.getText().toString().trim(); - String password = passwordEditText.getText().toString().trim(); + final String password = passwordEditText.getText().toString().trim(); String confirm = confirmEditText.getText().toString().trim(); if (password.equals(confirm)) { @@ -159,18 +163,23 @@ public class AuthActivity extends AppCompatActivity { }); if (emailUnique[0] && !name.equals("") && !email.equals("") && !password.equals("") && !confirm.equals("") ) { - String key = FirebaseHelper.dbUser.push().getKey(); - User user = new User(key, name, email, md5(password)); - user.setKey(key); - PreferencesHelper.setUserFirebaseKey(this, key); - PreferencesHelper.setUserName(this, user.getName()); - PreferencesHelper.setHasLogin(this, true); - - FirebaseHelper.dbUser.child(key).setValue(user); - - - finish(); - startActivity(new Intent(this, MainActivity.class)); + FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { + @Override + public void onComplete(@NonNull Task<InstanceIdResult> task) { + String key = FirebaseHelper.dbUser.push().getKey(); + String instanceId = task.getResult().getToken(); + User user; + user = new User(instanceId, name, email, md5(password)); + user.setKey(instanceId); + PreferencesHelper.setUserFirebaseKey(AuthActivity.this, key); + PreferencesHelper.setUserName(AuthActivity.this, user.getName()); + PreferencesHelper.setHasLogin(AuthActivity.this, true); + + FirebaseHelper.dbUser.child(key).setValue(user); + finish(); + startActivity(new Intent(AuthActivity.this, MainActivity.class)); + } + }); } else { showSnackBar(this, "Email has been used"); } diff --git a/android/app/src/main/java/com/chatman/adapter/MainViewPagerAdapter.java b/android/app/src/main/java/com/chatman/adapter/MainViewPagerAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..8eb32376651027cf5e2903dc5852427e444b5456 --- /dev/null +++ b/android/app/src/main/java/com/chatman/adapter/MainViewPagerAdapter.java @@ -0,0 +1,50 @@ +package com.chatman.adapter; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; + +import com.chatman.fragment.ChatBot; +import com.chatman.fragment.ChatList; + +public class MainViewPagerAdapter extends FragmentStatePagerAdapter { + private Context context; + public MainViewPagerAdapter(FragmentManager fm, Context context) { + super(fm); + this.context = context; + } + + @Override + public Fragment getItem(int i) { + switch (i) { + case 0: + ChatList chatList = new ChatList(); + chatList.setContext(context); + return chatList; + case 1: + return new ChatBot(); + } + return null; + } + + @Override + public int getCount() { + return 2; + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + super.getPageTitle(position); + switch (position) { + case 0: + return "Chats"; + case 1: + return "Bot"; + default: + return null; + } + } +} diff --git a/android/app/src/main/java/com/chatman/fragment/ChatBot.java b/android/app/src/main/java/com/chatman/fragment/ChatBot.java new file mode 100644 index 0000000000000000000000000000000000000000..422908bb00b55ae9e6deb1a851d7708001d8ced4 --- /dev/null +++ b/android/app/src/main/java/com/chatman/fragment/ChatBot.java @@ -0,0 +1,30 @@ +package com.chatman.fragment; + + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.chatman.R; + +/** + * A simple {@link Fragment} subclass. + */ +public class ChatBot extends Fragment { + + + public ChatBot() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_chat_bot, container, false); + } + +} diff --git a/android/app/src/main/java/com/chatman/fragment/ChatList.java b/android/app/src/main/java/com/chatman/fragment/ChatList.java new file mode 100644 index 0000000000000000000000000000000000000000..1401eb169fb6670b1203942731cae05d1f0749fc --- /dev/null +++ b/android/app/src/main/java/com/chatman/fragment/ChatList.java @@ -0,0 +1,120 @@ +package com.chatman.fragment; + + +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.chatman.R; +import com.chatman.adapter.ChatListAdapter; + +import java.util.ArrayList; +import java.util.List; + +/** + * A simple {@link Fragment} subclass. + */ +public class ChatList extends Fragment { + + private RecyclerView recycler; + private ChatListAdapter adapter; + private List<com.chatman.model.ChatList> chatLists; + private Context context; + + public ChatList() { + + } + + public void setContext(Context context) { + this.context = context; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + + View rootView = inflater.inflate(R.layout.fragment_chat_list, container, false); + recycler = rootView.findViewById(R.id.chat_list_rv); + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context); + linearLayoutManager.setReverseLayout(true); + linearLayoutManager.setStackFromEnd(true); + recycler.setLayoutManager(linearLayoutManager); + getChatLists(); + adapter = new ChatListAdapter(chatLists); + recycler.setAdapter(adapter); + + return rootView; + } + + private List<com.chatman.model.ChatList> getChatLists() { + chatLists = new ArrayList<>(); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.priagung, + "Priagung Satyagama", + "Woi sini ke sekre 2 temani diriku yang kesepian" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.rama, + "Yusuf Rahmat Pratama", + "Eh, gmn gmn?" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.priagung, + "Priagung Satyagama", + "Woi sini ke sekre 2 temani diriku yang kesepian" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.rama, + "Yusuf Rahmat Pratama", + "Eh, gmn gmn?" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.priagung, + "Priagung Satyagama", + "Woi sini ke sekre 2 temani diriku yang kesepian" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.rama, + "Yusuf Rahmat Pratama", + "Eh, gmn gmn?" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.priagung, + "Priagung Satyagama", + "Woi sini ke sekre 2 temani diriku yang kesepian" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.rama, + "Yusuf Rahmat Pratama", + "Eh, gmn gmn?" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.priagung, + "Priagung Satyagama", + "Woi sini ke sekre 2 temani diriku yang kesepian" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.rama, + "Yusuf Rahmat Pratama", + "Eh, gmn gmn?" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.priagung, + "Priagung Satyagama", + "Woi sini ke sekre 2 temani diriku yang kesepian" + )); + chatLists.add(new com.chatman.model.ChatList( + R.drawable.rama, + "Yusuf Rahmat Pratama", + "Eh, gmn gmn?" + )); + return chatLists; + } + +} diff --git a/android/app/src/main/java/com/chatman/model/Chat.java b/android/app/src/main/java/com/chatman/model/Chat.java new file mode 100644 index 0000000000000000000000000000000000000000..ecb083b637e0c916d08f94dacd4da6f051359ae8 --- /dev/null +++ b/android/app/src/main/java/com/chatman/model/Chat.java @@ -0,0 +1,49 @@ +package com.chatman.model; + +import java.util.Date; + +public class Chat { + private String idSender; + private String idReceiver; + private Date date; + private String message; + + public Chat(String idSender, String idReceiver, Date date, String message) { + this.idSender = idSender; + this.idReceiver = idReceiver; + this.date = date; + this.message = message; + } + + public String getIdSender() { + return idSender; + } + + public void setIdSender(String idSender) { + this.idSender = idSender; + } + + public String getIdReceiver() { + return idReceiver; + } + + public void setIdReceiver(String idReceiver) { + this.idReceiver = idReceiver; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/android/app/src/main/java/com/chatman/model/ChatRoom.java b/android/app/src/main/java/com/chatman/model/ChatRoom.java new file mode 100644 index 0000000000000000000000000000000000000000..fb68f0348b25f2ca90f60dca2c8ec2781a2c1e22 --- /dev/null +++ b/android/app/src/main/java/com/chatman/model/ChatRoom.java @@ -0,0 +1,29 @@ +package com.chatman.model; + +import java.util.List; + +public class ChatRoom { + private String idSender; + private List<Chat> messages; + + public ChatRoom(String idSender, List<Chat> messages) { + this.idSender = idSender; + this.messages = messages; + } + + public String getIdSender() { + return idSender; + } + + public void setIdSender(String idSender) { + this.idSender = idSender; + } + + public List<Chat> getMessages() { + return messages; + } + + public void setMessages(List<Chat> messages) { + this.messages = messages; + } +} diff --git a/android/app/src/main/res/layout/fragment_chat_bot.xml b/android/app/src/main/res/layout/fragment_chat_bot.xml new file mode 100644 index 0000000000000000000000000000000000000000..ba28517a12dc44df14de9166846b0e9534cc7e69 --- /dev/null +++ b/android/app/src/main/res/layout/fragment_chat_bot.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".fragment.ChatBot"> + + <!-- TODO: Update blank fragment layout --> + <TextView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="@string/hello_blank_fragment" /> + +</FrameLayout> \ No newline at end of file diff --git a/android/app/src/main/res/layout/fragment_chat_list.xml b/android/app/src/main/res/layout/fragment_chat_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..a8365f88fbe7989ecf3540ce7c9a7f41f1788bb3 --- /dev/null +++ b/android/app/src/main/res/layout/fragment_chat_list.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".fragment.ChatList"> + + <android.support.constraint.ConstraintLayout + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior" + tools:context=".MainActivity" + tools:showIn="@layout/app_bar_main"> + + <android.support.v7.widget.RecyclerView + android:id="@+id/chat_list_rv" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"> + + </android.support.v7.widget.RecyclerView> + + </android.support.constraint.ConstraintLayout> + +</FrameLayout> \ No newline at end of file