From eb024ae9f03eb9720a8745174eef53246ee02b03 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Sat, 3 Dec 2022 20:17:27 +0100 Subject: Napravljen upit sa clienta ka backu za dodavanje favourite. Omogucen prikaz i dodavanje/brisanje favourite. --- .../Activities/ActivitySinglePost.kt | 43 +++++++++++++++++++++- .../brzodolokacije/Interfaces/IBackendApi.kt | 2 + .../java/com/example/brzodolokacije/Models/Post.kt | 3 +- .../main/res/drawable/ic_baseline_favorite_24.xml | 5 +++ .../drawable/ic_baseline_favorite_border_24.xml | 5 +++ .../src/main/res/layout/activity_single_post.xml | 13 +++++++ 6 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_border_24.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt index f3d8a63..5f99766 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt @@ -6,12 +6,14 @@ import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.preference.PreferenceManager import android.util.Log +import android.widget.ImageView import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.auth0.android.jwt.JWT import com.example.brzodolokacije.Adapters.CommentsAdapter import com.example.brzodolokacije.Adapters.PostImageAdapter import com.example.brzodolokacije.Models.* @@ -38,6 +40,7 @@ class ActivitySinglePost : AppCompatActivity() { private var adapterComments: RecyclerView.Adapter? = null private var recyclerViewImages: RecyclerView?=null private var recyclerViewComments: RecyclerView?=null + private var favouriteImage:ImageView?=null public lateinit var post:PostPreview private var comments:MutableList?=mutableListOf() private var starNumber:Number=0 @@ -56,7 +59,7 @@ class ActivitySinglePost : AppCompatActivity() { recyclerViewImages = binding.rvMain buildRecyclerViewComments() requestGetComments() - + favouriteImage=binding.ivFavourite // set recyclerView attributes recyclerViewImages?.setHasFixedSize(true) recyclerViewImages?.layoutManager = layoutManagerImages @@ -64,7 +67,7 @@ class ActivitySinglePost : AppCompatActivity() { loadTextComponents() setRatingListeners() translateOwnerIdToName(post.ownerId) - + loadFavourite() val alreadyrated= RatingReceive(starNumber.toInt(),post._id) requestAddRating(alreadyrated) @@ -78,6 +81,42 @@ class ActivitySinglePost : AppCompatActivity() { getMap() } + favouriteImage!!.setOnClickListener{ + addRemoveFavourite() + } + } + fun loadFavourite(){ + if(post.favourites!=null){ + var jwtString=SharedPreferencesHelper.getValue("jwt",this) + var jwt: JWT = JWT(jwtString!!) + var userId=jwt.getClaim("id").asString() + if(post.favourites!!.contains(userId)) + { + favouriteImage!!.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_baseline_favorite_24)) + }else{ + favouriteImage!!.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_baseline_favorite_border_24)); + + } + + } + } + fun addRemoveFavourite(){ + var token= SharedPreferencesHelper.getValue("jwt", this).toString() + val Api= RetrofitHelper.getInstance() + val request=Api.addRemoveFavourite("Bearer "+token,post._id) + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful && response.body() == true) + favouriteImage!!.setImageDrawable(ContextCompat.getDrawable(this@ActivitySinglePost, R.drawable.ic_baseline_favorite_24)) + else + favouriteImage!!.setImageDrawable(ContextCompat.getDrawable(this@ActivitySinglePost, R.drawable.ic_baseline_favorite_border_24)); + } + + override fun onFailure(call: Call, t: Throwable) { + + } + }) + } fun getMap(){ val mapDialogue = BottomSheetDialog(this@ActivitySinglePost, android.R.style.Theme_Black_NoTitleBar) 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 676023f..60f243d 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 @@ -109,5 +109,7 @@ interface IBackendApi { @GET("/api/user/{id}/myFollowers") fun getMyFollowers(@Header("Authorization") authHeader:String):Call > + @GET("/api/Post/favourite/{id}") + fun addRemoveFavourite(@Header("Authorization") authHeader:String,@Path("id") id:String):Call } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt index f0f67a7..8f07bca 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt @@ -39,7 +39,8 @@ data class PostPreview ( var ratingscount:Int, var createdAt:Date, var lastViewed: Date?, //samo za istoriju pregleda - var tags:List? + var tags:List?, + var favourites:List? //nedostaju datum i vreme kreiranja diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_24.xml new file mode 100644 index 0000000..84df34b --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_border_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_border_24.xml new file mode 100644 index 0000000..4c07189 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_border_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml index e3cabb5..e07345b 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml @@ -76,6 +76,19 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvLocationParent" /> + +