aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt48
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt9
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt4
6 files changed, 68 insertions, 11 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 c824cf3..e99142a 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
@@ -3,16 +3,24 @@ package com.example.brzodolokacije.Activities
import android.content.Intent
import android.os.Bundle
import android.widget.ImageButton
+import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+import com.auth0.android.jwt.JWT
import com.exam.DBHelper
import com.example.brzodolokacije.Adapters.ChatPreviewsAdapter
import com.example.brzodolokacije.Models.ChatPreview
+import com.example.brzodolokacije.Models.Message
+import com.example.brzodolokacije.Models.MessageReceive
import com.example.brzodolokacije.R
+import com.example.brzodolokacije.Services.RetrofitHelper
+import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.example.brzodolokacije.chat.SignalRListener
import com.example.brzodolokacije.databinding.ActivityChatBinding
+import retrofit2.Call
+import retrofit2.Response
class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
@@ -33,7 +41,7 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
ws=SignalRListener.getInstance(this@ChatActivity)
setListeners()
setRecyclerView()
- requestForChats()
+ requestNewMessages()
swipeRefreshLayout = binding.swipeContainer
swipeRefreshLayout?.setOnRefreshListener(this@ChatActivity)
swipeRefreshLayout?.setColorSchemeResources(
@@ -44,7 +52,7 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
)
swipeRefreshLayout?.post(kotlinx.coroutines.Runnable {
swipeRefreshLayout?.isRefreshing=true
- requestForChats()
+ requestNewMessages()
})
}
@@ -63,6 +71,40 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
setRecyclerView(setParams = false)
}
+ fun requestNewMessages(){
+ val api=RetrofitHelper.getInstance()
+ val token=SharedPreferencesHelper.getValue("jwt",this@ChatActivity)
+ val request2=api?.getNewMessages("Bearer "+token)
+ request2?.enqueue(object : retrofit2.Callback<MutableList<MessageReceive>?> {
+ override fun onResponse(call: Call<MutableList<MessageReceive>?>, response: Response<MutableList<MessageReceive>?>) {
+ if(response.isSuccessful()){
+ var messages=response.body()
+ if(!messages.isNullOrEmpty()){
+ var dbHelper= DBHelper.getInstance(this@ChatActivity)
+ for( message in messages){
+ dbHelper.addMessage(
+ Message(message.senderId+message.timestamp,message.senderId,
+ JWT(SharedPreferencesHelper.getValue("jwt",this@ChatActivity)!!).claims["id"]?.asString()!!,message.messagge,message.timestamp),false)
+ }
+ }
+ requestForChats()
+ }
+ else{
+ Toast.makeText(this@ChatActivity,"los id",
+ Toast.LENGTH_LONG).show()
+ requestForChats()
+ }
+ }
+
+ override fun onFailure(call: Call<MutableList<MessageReceive>?>, t: Throwable) {
+ Toast.makeText(this@ChatActivity,"neuspesan zahtev",
+ Toast.LENGTH_LONG).show()
+ requestForChats()
+ }
+ })
+
+ }
+
fun setRecyclerView(setParams:Boolean=true){
if(setParams){
adapterVar= items?.let { ChatPreviewsAdapter(it,this@ChatActivity) }
@@ -76,6 +118,6 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
}
override fun onRefresh() {
- requestForChats()
+ requestNewMessages()
}
} \ No newline at end of file
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 98e3208..4bd72bc 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
@@ -9,6 +9,7 @@ import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import com.auth0.android.jwt.JWT
import com.exam.DBHelper
import com.example.brzodolokacije.Adapters.ChatMessagesAdapter
import com.example.brzodolokacije.Models.Message
@@ -161,8 +162,12 @@ class ChatActivityConversation : AppCompatActivity() {
}
fun requestMessages(){
- if(!userId.isNullOrEmpty() && !userId.equals("null"))
- items=dbConnection?.getMessages(userId!!)
+ if(!userId.isNullOrEmpty() && !userId.equals("null")){
+ if(userId!= JWT(SharedPreferencesHelper.getValue("jwt",this@ChatActivityConversation)!!).claims["id"]?.asString())
+ items=dbConnection?.getMessages(userId!!)
+ else
+ items=dbConnection?.getMessages(userId!!,self = true)
+ }
adapterVar= items?.let { ChatMessagesAdapter(it,this@ChatActivityConversation) }
setRecyclerView(setParams = false)
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt
index c3c8a8a..45ffbf0 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt
@@ -23,9 +23,7 @@ class ChatMessagesAdapter (val items : MutableList<Message>, val activity:Activi
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val inflater = LayoutInflater.from(parent.context)
- var token=SharedPreferencesHelper.getValue("jwt",activity)
- var jwt= JWT(token.toString())
- currentUser= jwt.getClaim("id").toString()
+
if(viewType==VIEW_TYPE_MESSAGE_RECEIVED){
bindingOther= ChatMessageOtherBinding.inflate(inflater,parent,false)
@@ -65,6 +63,10 @@ class ChatMessagesAdapter (val items : MutableList<Message>, val activity:Activi
override fun getItemViewType(position: Int): Int {
var sender=items.get(position).senderId
+ var token= SharedPreferencesHelper.getValue("jwt",activity)
+ var jwt= JWT(token.toString())
+ var claim=jwt.getClaim("id")
+ currentUser= claim.asString()!!
if(sender==currentUser){
return VIEW_TYPE_MESSAGE_SENT
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
index 8fb7b4d..cb51627 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
@@ -65,6 +65,8 @@ interface IBackendApi {
):PagedPosts
@POST("/api/message/add")
fun sendMessage(@Header("Authorization") authHeader:String,@Body message:MessageSend):Call<Message>
+ @GET("/api/message/myMessages")
+ fun getNewMessages(@Header("Authorization") authHeader:String):Call<MutableList<MessageReceive>?>
@GET("/api/user/history")
fun getMyHistory(@Header("Authorization") authHeader:String):Call<MutableList<PostPreview>>
//@POST("putanja")
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt
index be88ad3..479b9cb 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt
@@ -106,8 +106,12 @@ class DBHelper :
}
}
}
- fun getMessages(userId:String): MutableList<Message>? {
- var sql="SELECT * FROM "+ MESSAGES_TABLE_NAME+" WHERE senderId='"+userId+"' OR receiverId='"+userId+"'"
+ fun getMessages(userId:String, self:Boolean=false): MutableList<Message>? {
+ var sql:String
+ if(!self)
+ sql="SELECT * FROM "+ MESSAGES_TABLE_NAME+" WHERE senderId='"+userId+"' OR receiverId='"+userId+"'"
+ else
+ sql="SELECT * FROM "+ MESSAGES_TABLE_NAME+" WHERE senderId='"+userId+"' AND receiverId='"+userId+"'"
var cursor=db?.rawQuery(sql,null)
if(cursor?.count!! >0){
var messagesList:MutableList<Message> =mutableListOf()
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 07a9d3e..d091c5d 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
@@ -2,6 +2,7 @@ package com.example.brzodolokacije.chat
import android.app.Activity
import android.util.Log
+import com.auth0.android.jwt.JWT
import com.exam.DBHelper
import com.example.brzodolokacije.Models.Message
import com.example.brzodolokacije.Models.MessageReceive
@@ -24,7 +25,8 @@ 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,message.senderId,message.messagge,message.timestamp),false)
+ message:MessageReceive->dbHelper.addMessage(Message(message.senderId+message.timestamp,message.senderId,
+ JWT(SharedPreferencesHelper.getValue("jwt",activity)!!).claims["id"]?.asString()!!,message.messagge,message.timestamp),false)
},
MessageReceive::class.java
)