diff options
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" |