aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-11-26 18:28:05 +0100
committerJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-11-26 18:28:05 +0100
commitae56615b88ec9e353615c6e5741b2e0fc8fe8dc2 (patch)
tree71201c49c8ba1651ad4ed4de7acbf2d848d8c4b3 /Client
parent19b29a7941105ec6ca66b3a8e9cfbd72358dd449 (diff)
Prikaz novih poruka odmah nakon primanja kada je otvoren cet #50
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt28
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt14
4 files changed, 37 insertions, 14 deletions
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt
index e99142a..25ef88e 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt
@@ -32,6 +32,7 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
var layoutVar:LinearLayoutManager?=null
var items:MutableList<ChatPreview>?= mutableListOf()
private var swipeRefreshLayout: SwipeRefreshLayout?=null
+ var clickedChat:ChatActivityConversation?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -117,6 +118,10 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
swipeRefreshLayout?.isRefreshing=false
}
+ fun setClickedActivity(activity:ChatActivityConversation){
+ clickedChat=activity
+ }
+
override fun onRefresh() {
requestNewMessages()
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt
index 4bd72bc..b4722ea 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt
@@ -20,6 +20,8 @@ import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.example.brzodolokacije.chat.SignalRListener
import com.example.brzodolokacije.databinding.ActivityChatConversationBinding
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.launch
import retrofit2.Call
import retrofit2.Response
@@ -46,6 +48,7 @@ class ChatActivityConversation : AppCompatActivity() {
setRecyclerView()
requestMessages()
webSocketConnection=SignalRListener.getInstance(this@ChatActivityConversation)
+ (webSocketConnection!!.activity as ChatActivity).setClickedActivity(this@ChatActivityConversation)
setListeners()
}
@@ -53,7 +56,6 @@ class ChatActivityConversation : AppCompatActivity() {
findViewById<ImageButton>(R.id.btnSendMessage).setOnClickListener {
var token=SharedPreferencesHelper.getValue("jwt",this@ChatActivityConversation)
var messageContent=findViewById<EditText>(R.id.etNewMessage).text.toString()
- Log.d("main",token!!)
val Api= RetrofitHelper.getInstance()
if(userId.isNullOrEmpty() || userId.equals("null")){
//zahtev sa username=om
@@ -150,15 +152,22 @@ class ChatActivityConversation : AppCompatActivity() {
}
}
fun setRecyclerView(setParams:Boolean=true){
- if(setParams){
- adapterVar= items?.let { ChatMessagesAdapter(it,this@ChatActivityConversation) }
- layoutVar= LinearLayoutManager(this@ChatActivityConversation)
+ MainScope().launch {
+ if (setParams) {
+ adapterVar = items?.let { ChatMessagesAdapter(it, this@ChatActivityConversation) }
+ layoutVar = LinearLayoutManager(this@ChatActivityConversation)
+ }
+ recyclerView = binding.rvMain
+ recyclerView?.setHasFixedSize(true)
+ recyclerView?.layoutManager = layoutVar
+ try {
+ recyclerView?.adapter = adapterVar
+
+ } catch (e: Exception) {
+ Log.d("error", e.message!!)
+ }
+ recyclerView?.scrollToPosition(items?.size?.minus(1) ?: 0)
}
- recyclerView = binding.rvMain
- recyclerView?.setHasFixedSize(true)
- recyclerView?.layoutManager=layoutVar
- recyclerView?.adapter=adapterVar
- recyclerView?.scrollToPosition(items?.size?.minus(1) ?: 0)
}
fun requestMessages(){
@@ -170,6 +179,5 @@ class ChatActivityConversation : AppCompatActivity() {
}
adapterVar= items?.let { ChatMessagesAdapter(it,this@ChatActivityConversation) }
setRecyclerView(setParams = false)
-
}
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt
index 94a72f3..f875366 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt
@@ -1,12 +1,12 @@
package com.example.brzodolokacije.Adapters
-import android.app.Activity
import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.Toast
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
+import com.example.brzodolokacije.Activities.ChatActivity
import com.example.brzodolokacije.Activities.ChatActivityConversation
import com.example.brzodolokacije.Interfaces.IBackendApi
import com.example.brzodolokacije.Models.ChatPreview
@@ -18,7 +18,7 @@ import kotlinx.android.synthetic.main.chat_preview.view.*
import retrofit2.Call
import retrofit2.Response
-class ChatPreviewsAdapter (val items : MutableList<ChatPreview>,val activity:Activity)
+class ChatPreviewsAdapter (val items : MutableList<ChatPreview>,val activity:ChatActivity)
: RecyclerView.Adapter<ChatPreviewsAdapter.ViewHolder>(){
//constructer has one argument - list of objects that need to be displayed
//it is bound to xml of single item
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt
index 567271d..7d75d4b 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt
@@ -4,6 +4,7 @@ import android.app.Activity
import android.util.Log
import com.auth0.android.jwt.JWT
import com.exam.DBHelper
+import com.example.brzodolokacije.Activities.ChatActivity
import com.example.brzodolokacije.Models.Message
import com.example.brzodolokacije.Models.MessageReceive
import com.example.brzodolokacije.Services.RetrofitHelper
@@ -25,8 +26,7 @@ class SignalRListener private constructor(val activity: Activity){
hubConnection.keepAliveInterval=120
hubConnection.on("Message",
Action1 {
- message:MessageReceive->dbHelper.addMessage(Message(message.senderId+message.timestamp,message.senderId,
- JWT(SharedPreferencesHelper.getValue("jwt",activity)!!).claims["id"]?.asString()!!,message.messagge,message.timestamp),false)
+ message:MessageReceive->addToDbAndloadMessageIfInChat(message,activity)
},
MessageReceive::class.java
)
@@ -55,6 +55,16 @@ class SignalRListener private constructor(val activity: Activity){
Log.d("main",hubConnection.connectionState.toString())
}
+ fun addToDbAndloadMessageIfInChat(message:MessageReceive,activity: Activity){
+ dbHelper.addMessage(Message(message.senderId+message.timestamp,message.senderId,
+ JWT(SharedPreferencesHelper.getValue("jwt",activity)!!).claims["id"]?.asString()!!,message.messagge,message.timestamp),false)
+ if(activity is ChatActivity){
+ if(activity.clickedChat?.userId==message.senderId){
+ activity.clickedChat?.requestMessages()
+ }
+ }
+ }
+
fun log(){
Log.d("Debug infor siganlR ", hubConnection.connectionId)
}