aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt21
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt42
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/chat_preview.xml3
5 files changed, 68 insertions, 5 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 992f09f..c824cf3 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
@@ -6,6 +6,7 @@ import android.widget.ImageButton
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.exam.DBHelper
import com.example.brzodolokacije.Adapters.ChatPreviewsAdapter
import com.example.brzodolokacije.Models.ChatPreview
@@ -13,7 +14,7 @@ import com.example.brzodolokacije.R
import com.example.brzodolokacije.chat.SignalRListener
import com.example.brzodolokacije.databinding.ActivityChatBinding
-class ChatActivity : AppCompatActivity() {
+class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
private var dbConnection:DBHelper?=null
lateinit var binding: ActivityChatBinding
@@ -22,6 +23,7 @@ class ChatActivity : AppCompatActivity() {
var adapterVar:ChatPreviewsAdapter?=null
var layoutVar:LinearLayoutManager?=null
var items:MutableList<ChatPreview>?= mutableListOf()
+ private var swipeRefreshLayout: SwipeRefreshLayout?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -32,6 +34,18 @@ class ChatActivity : AppCompatActivity() {
setListeners()
setRecyclerView()
requestForChats()
+ swipeRefreshLayout = binding.swipeContainer
+ swipeRefreshLayout?.setOnRefreshListener(this@ChatActivity)
+ swipeRefreshLayout?.setColorSchemeResources(
+ R.color.purple_200,
+ R.color.teal_200,
+ R.color.dark_blue_transparent,
+ R.color.purple_700
+ )
+ swipeRefreshLayout?.post(kotlinx.coroutines.Runnable {
+ swipeRefreshLayout?.isRefreshing=true
+ requestForChats()
+ })
}
fun setListeners(){
@@ -58,5 +72,10 @@ class ChatActivity : AppCompatActivity() {
recyclerView?.setHasFixedSize(true)
recyclerView?.layoutManager=layoutVar
recyclerView?.adapter=adapterVar
+ swipeRefreshLayout?.isRefreshing=false
+ }
+
+ override fun onRefresh() {
+ requestForChats()
}
} \ 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 d523485..84771a8 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
@@ -29,7 +29,7 @@ class ChatActivityConversation : AppCompatActivity() {
var layoutVar: RecyclerView.LayoutManager?=null
lateinit var binding:ActivityChatConversationBinding
var userId:String?=null
- var receiverUsername:String?="jelena"
+ var receiverUsername:String?=null
var dbConnection: DBHelper?=null
var webSocketConnection:SignalRListener?=null
var items:MutableList<Message>?=mutableListOf()
@@ -39,6 +39,7 @@ class ChatActivityConversation : AppCompatActivity() {
binding= ActivityChatConversationBinding.inflate(layoutInflater)
setContentView(binding.root)
userId=intent.extras?.get("userId").toString()
+ receiverUsername=intent.extras?.get("username").toString()
dbConnection=DBHelper.getInstance(this@ChatActivityConversation)
setHeader()
setRecyclerView()
@@ -136,7 +137,7 @@ class ChatActivityConversation : AppCompatActivity() {
binding.tvFragmentTitle.forceLayout()
}
else{
- binding.tvFragmentTitle.text=userId
+ binding.tvFragmentTitle.text=receiverUsername
binding.tvFragmentTitle.invalidate()
binding.cvParentUsername.visibility= View.GONE
binding.cvParentUsername.forceLayout()
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 b63cb2f..94a72f3 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
@@ -4,19 +4,32 @@ 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.ChatActivityConversation
+import com.example.brzodolokacije.Interfaces.IBackendApi
import com.example.brzodolokacije.Models.ChatPreview
+import com.example.brzodolokacije.Models.UserReceive
+import com.example.brzodolokacije.Services.RetrofitHelper
+import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.example.brzodolokacije.databinding.ChatPreviewBinding
+import kotlinx.android.synthetic.main.chat_preview.view.*
+import retrofit2.Call
+import retrofit2.Response
class ChatPreviewsAdapter (val items : MutableList<ChatPreview>,val activity:Activity)
: RecyclerView.Adapter<ChatPreviewsAdapter.ViewHolder>(){
//constructer has one argument - list of objects that need to be displayed
//it is bound to xml of single item
+ private var api: IBackendApi?=null
+ private var token:String?=null
private lateinit var binding: ChatPreviewBinding
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
binding=ChatPreviewBinding.inflate(inflater,parent,false)
+ api=RetrofitHelper.getInstance()
+ token=SharedPreferencesHelper.getValue("jwt",activity)
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int){
@@ -25,6 +38,7 @@ class ChatPreviewsAdapter (val items : MutableList<ChatPreview>,val activity:Act
holder.itemView.setOnClickListener {
val intent: Intent = Intent(activity, ChatActivityConversation::class.java)
intent.putExtra("userId",items[position].userId)
+ intent.putExtra("username",holder.itemView.tvUsername.text)
activity.startActivity(intent)
}
}
@@ -32,7 +46,33 @@ class ChatPreviewsAdapter (val items : MutableList<ChatPreview>,val activity:Act
inner class ViewHolder(itemView : ChatPreviewBinding) : RecyclerView.ViewHolder(itemView.root){
fun bind(item : ChatPreview){
binding.apply {
- tvUsername.text=item.userId
+ val request2=api?.getProfileFromId("Bearer "+token,
+ item.userId
+ )
+ request2?.enqueue(object : retrofit2.Callback<UserReceive?> {
+ override fun onResponse(call: Call<UserReceive?>, response: Response<UserReceive?>) {
+ if(response.isSuccessful()){
+ //zahtev da se posalje poruka
+ var user=response.body()!!
+ tvUsername.text=user.username
+ if(user.pfp!=null) {
+ Glide.with(activity)
+ .load(RetrofitHelper.baseUrl + "/api/post/image/" + user.pfp!!._id)
+ .into(ivUserImage)
+ }
+ }
+ else{
+ Toast.makeText(activity,"los id",
+ Toast.LENGTH_LONG).show()
+ tvUsername.text="nije nadjen korisnik"
+ }
+ }
+
+ override fun onFailure(call: Call<UserReceive?>, t: Throwable) {
+ Toast.makeText(activity,"neuspesan zahtev",
+ Toast.LENGTH_LONG).show()
+ }
+ })
}
}
}
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 f7bb9b6..8fb7b4d 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
@@ -78,5 +78,7 @@ interface IBackendApi {
@POST("/api/user{id}/addFollower")
fun addFollower(@Header("Authorization") authHeader:String,@Path("id") id:String):Call<UserReceive>
+ @GET("/api/user/{id}/id/profile")
+ fun getProfileFromId(@Header("Authorization") authHeader:String,@Path("id") username:String):Call<UserReceive>
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/chat_preview.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/chat_preview.xml
index 95c036a..35431ff 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/chat_preview.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/chat_preview.xml
@@ -6,7 +6,8 @@
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="50dp"
android:layout_height="50dp"
- android:id="@+id/ivUserImage"/>
+ android:id="@+id/ivUserImage"
+ android:src="@drawable/ic_nav_profile"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"