Skip to content

Commit

Permalink
online offline feature
Browse files Browse the repository at this point in the history
  • Loading branch information
mRahulJain committed Jul 4, 2020
1 parent 03a160c commit 2539751
Show file tree
Hide file tree
Showing 41 changed files with 663 additions and 112 deletions.
2 changes: 2 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,6 @@ dependencies {
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'

implementation 'com.makeramen:roundedimageview:2.3.0'

implementation 'com.r0adkll:slidableactivity:2.1.0'
}
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,13 @@
<activity android:name=".Activities.MessagesActivity"
android:parentActivityName=".Activities.InboxActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize|stateHidden"
tools:ignore="LockedOrientationActivity" />

<activity android:name=".Activities.ImageActivity"
android:theme="@style/AppTheme.SlidrActivityTheme"
android:screenOrientation="portrait"/>

<service android:name=".Notification.NotificationMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ import com.android.beastchat.Models.constants
import com.android.beastchat.R
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import io.socket.client.IO
import kotlinx.android.synthetic.main.activity_fragment_base.view.*
import java.net.URISyntaxException

abstract class BaseFragmentActivity : AppCompatActivity() {
abstract fun createFragment() : Fragment
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.android.beastchat.Activities

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.android.beastchat.R
import com.r0adkll.slidr.Slidr
import com.r0adkll.slidr.model.SlidrInterface
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.image_activity.*

class ImageActivity : AppCompatActivity() {

private lateinit var mSlidr: SlidrInterface

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.image_activity)

supportActionBar!!.hide()

mSlidr = Slidr.attach(this)

val imageUri = intent.getStringExtra("imageUri")

Picasso.with(this)
.load(imageUri)
.into(image_activity_image)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,11 @@ import com.android.beastchat.Models.constants
import com.android.beastchat.R
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.iid.FirebaseInstanceId
import io.socket.client.IO
import java.net.URISyntaxException

class InboxActivity : BaseFragmentActivity() {

override fun createFragment(): Fragment {
return InboxFragment().newInstant()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ class MessagesActivity : BaseFragmentActivity() {
override fun createFragment(): Fragment {
val friendDetails = intent!!.getStringArrayListExtra(EXTRA_FRIEND_DETAILS)

supportActionBar!!.title = friendDetails[2]
// supportActionBar!!.title = friendDetails[2]
supportActionBar!!.hide()
return MessageFragment().newInstant(friendDetails)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import com.android.beastchat.Activities.FriendsActivity
import com.android.beastchat.Activities.InboxActivity
Expand All @@ -13,14 +14,16 @@ import com.android.beastchat.R
import com.google.android.material.bottomappbar.BottomAppBar
import com.google.android.material.bottomnavigation.BottomNavigationView
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.socket.client.IO
import java.net.URISyntaxException

open class BaseFragments : Fragment() {

protected lateinit var mCompositeDisposable: CompositeDisposable
protected lateinit var mSharedPreferences : SharedPreferences

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

mCompositeDisposable = CompositeDisposable()
mSharedPreferences = activity!!.getSharedPreferences(
constants().USER_INFO_PREFERENCE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,16 @@ class FindFriendsFragment : BaseFragments(), FindFriendsAdapter.UserListener {
}
mSocket.connect()

mUserEmailString = mSharedPreferences.getString(constants().USER_EMAIL, "")
mUserEmailString = mSharedPreferences.getString(constants().USER_EMAIL, "")!!
mLiveFriendsServices = LiveFriendsServices().getInstant()
mFriendRequestSentMap = HashMap()

mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString!!)
}

override fun onResume() {
super.onResume()
mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString!!)
}

fun setmFriendRequestSentMap(friendRequestSentMap : HashMap<String, User>) {
Expand All @@ -87,7 +94,6 @@ class FindFriendsFragment : BaseFragments(), FindFriendsAdapter.UserListener {

override fun onDestroy() {
super.onDestroy()
mSocket.disconnect()
}

override fun onCreateView(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,17 @@ class FriendRequestsFragment : BaseFragments(), FriendRequestsAdapter.OnOptionLi
Log.d("myError", "${e.localizedMessage}")
}
mSocket.connect()

mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString)
}

override fun onResume() {
super.onResume()
mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString)
}

override fun onDestroy() {
super.onDestroy()
mSocket.disconnect()
}

override fun onCreateView(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.android.beastchat.Fragments

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand All @@ -17,6 +18,8 @@ import com.google.android.material.tabs.TabLayout
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import io.socket.client.IO
import java.net.URISyntaxException

class FriendsFragment : BaseFragments() {
private lateinit var mLiveFriendsServices: LiveFriendsServices
Expand All @@ -35,15 +38,32 @@ class FriendsFragment : BaseFragments() {

@BindView(R.id.fragment_friends_tabLayout)
lateinit var mTabLayout : TabLayout

@BindView(R.id.fragment_friends_viewPager)
lateinit var mViewPager : ViewPager

private lateinit var mSocket: io.socket.client.Socket

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

try {
mSocket = IO.socket(constants().IP_LOCALHOST)
} catch (e: URISyntaxException) {
Log.d("myError", "${e.localizedMessage}")
}
mSocket.connect()

mLiveFriendsServices = LiveFriendsServices().getInstant()
mUserEmailString = mSharedPreferences.getString(constants().USER_EMAIL, "")!!

mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString)
}

override fun onResume() {
super.onResume()
mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString)
}

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
Expand Down Expand Up @@ -88,4 +108,9 @@ class FriendsFragment : BaseFragments() {
mUsersNewMessagesReference.removeEventListener(mUserNewMessagesListener)
}
}

override fun onDestroy() {
super.onDestroy()
mSocket.disconnect()
}
}
24 changes: 24 additions & 0 deletions app/src/main/java/com/android/beastchat/Fragments/InboxFragment.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.android.beastchat.Fragments

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand All @@ -22,6 +23,8 @@ import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import io.socket.client.IO
import java.net.URISyntaxException

class InboxFragment : BaseFragments(), ChatRoomAdapter.ChatRoomListener {

Expand All @@ -45,14 +48,26 @@ class InboxFragment : BaseFragments(), ChatRoomAdapter.ChatRoomListener {
private lateinit var mUsersNewMessagesReference: DatabaseReference
private lateinit var mUserNewMessagesListener: ValueEventListener

private lateinit var mSocket: io.socket.client.Socket

fun newInstant() : InboxFragment {
return InboxFragment()
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

try {
mSocket = IO.socket(constants().IP_LOCALHOST)
} catch (e: URISyntaxException) {
Log.d("myError", "${e.localizedMessage}")
}
mSocket.connect()

mLiveFriendsServices = LiveFriendsServices().getInstant()
mUserEmailString = mSharedPreferences.getString(constants().USER_EMAIL, "")!!

mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString)
}
override fun onCreateView(
inflater: LayoutInflater,
Expand Down Expand Up @@ -91,6 +106,11 @@ class InboxFragment : BaseFragments(), ChatRoomAdapter.ChatRoomListener {
return rootView
}

override fun onResume() {
super.onResume()
mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString)
}

override fun onDestroyView() {
super.onDestroyView()
mUnbinder.unbind()
Expand Down Expand Up @@ -119,4 +139,8 @@ class InboxFragment : BaseFragments(), ChatRoomAdapter.ChatRoomListener {
activity!!.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
}

override fun onDestroy() {
super.onDestroy()
mSocket.disconnect()
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package com.android.beastchat.Fragments

import android.os.Build
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import android.widget.*
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import butterknife.BindView
Expand Down Expand Up @@ -47,16 +45,24 @@ class MessageFragment : BaseFragments() {
lateinit var mFriendNameString: String
lateinit var mUserEmailString: String

@BindView(R.id.fragment_messages_back)
lateinit var mBackButton: LinearLayout
@BindView(R.id.fragment_messages_friendPictureToolbar)
lateinit var mPictureToolbar: RoundedImageView
@BindView(R.id.fragment_messages_friendNameToolbar)
lateinit var mNameToolbar: TextView
@BindView(R.id.fragment_messages_friendPicture)
lateinit var mFriendPicture: RoundedImageView
@BindView(R.id.fragment_messages_friendName)
lateinit var mFriendName: TextView
@BindView(R.id.fragment_messages_messageBox)
lateinit var mMessageBox: EditText
@BindView(R.id.fragment_messages_sendMessage)
lateinit var mSendMessage: ImageView
lateinit var mSendMessage: TextView
@BindView(R.id.fragment_messages_recyclerView)
lateinit var mRecyclerView: RecyclerView
@BindView(R.id.fragment_messages_onlineStatus)
lateinit var mOnlineStatus: ImageView

lateinit var mUnbinder: Unbinder

Expand Down Expand Up @@ -113,6 +119,12 @@ class MessageFragment : BaseFragments() {
.into(mFriendPicture)
mFriendName.text = mFriendNameString

//toolbar
Picasso.with(context)
.load(mFriendPictureString)
.into(mPictureToolbar)
mNameToolbar.text = mFriendNameString

val adapter = MessagesAdapter(activity!! as BaseFragmentActivity, mUserEmailString, mFriendEmailString)
mRecyclerView.layoutManager = LinearLayoutManager(activity)
mGetAllMessagesReference = FirebaseDatabase.getInstance()
Expand All @@ -130,10 +142,38 @@ class MessageFragment : BaseFragments() {
createChatRoomDisposable()
)
messageBoxListener()
recyclerViewAutoScrollListener()

mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString)
mLiveFriendsServices.checkUserOnline(mOnlineStatus, mFriendEmailString)

return rootView
}

override fun onResume() {
super.onResume()
mLiveFriendsServices.putUserOnline(mSocket, mUserEmailString)
}

private fun recyclerViewAutoScrollListener() {
if (Build.VERSION.SDK_INT >= 11) {
mRecyclerView.addOnLayoutChangeListener(View.OnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
if (bottom < oldBottom) {
mRecyclerView.postDelayed(Runnable {
mRecyclerView.smoothScrollToPosition(
mRecyclerView.adapter!!.getItemCount() - 1
)
}, 100)
}
})
}
}

@OnClick(R.id.fragment_messages_back)
fun back() {
activity!!.finish()
}

@OnClick(R.id.fragment_messages_sendMessage)
fun mSendMessage() {
if(mMessageBox.text.toString() == "") {
Expand Down Expand Up @@ -240,6 +280,5 @@ class MessageFragment : BaseFragments() {

override fun onDestroy() {
super.onDestroy()
mSocket.disconnect()
}
}
Loading

0 comments on commit 2539751

Please sign in to comment.