diff options
Diffstat (limited to 'Client')
6 files changed, 68 insertions, 3 deletions
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<CommentsAdapter.ViewHolder>? = 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<CommentSend>?=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<Boolean?> { +            override fun onResponse(call: Call<Boolean?>, response: Response<Boolean?>) { +                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<Boolean?>, 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 <MutableList<UserReceive>> +    @GET("/api/Post/favourite/{id}") +    fun addRemoveFavourite(@Header("Authorization") authHeader:String,@Path("id") id:String):Call <Boolean>  }
\ 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<String>? +    var tags:List<String>?, +    var favourites:List<String>?      //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 @@ +<vector android:height="24dp" android:tint="#E52121" +    android:viewportHeight="24" android:viewportWidth="24" +    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> +    <path android:fillColor="@android:color/white" android:pathData="M12,21.35l-1.45,-1.32C5.4,15.36 2,12.28 2,8.5 2,5.42 4.42,3 7.5,3c1.74,0 3.41,0.81 4.5,2.09C13.09,3.81 14.76,3 16.5,3 19.58,3 22,5.42 22,8.5c0,3.78 -3.4,6.86 -8.55,11.54L12,21.35z"/> +</vector> 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 @@ +<vector android:height="24dp" android:tint="#3B3737" +    android:viewportHeight="24" android:viewportWidth="24" +    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> +    <path android:fillColor="@android:color/white" android:pathData="M16.5,3c-1.74,0 -3.41,0.81 -4.5,2.09C10.91,3.81 9.24,3 7.5,3 4.42,3 2,5.42 2,8.5c0,3.78 3.4,6.86 8.55,11.54L12,21.35l1.45,-1.32C18.6,15.36 22,12.28 22,8.5 22,5.42 19.58,3 16.5,3zM12.1,18.55l-0.1,0.1 -0.1,-0.1C7.14,14.24 4,11.39 4,8.5 4,6.5 5.5,5 7.5,5c1.54,0 3.04,0.99 3.57,2.36h1.87C13.46,5.99 14.96,5 16.5,5c2,0 3.5,1.5 3.5,3.5 0,2.89 -3.14,5.74 -7.9,10.05z"/> +</vector> 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" /> +    <ImageView +        android:id="@+id/ivFavourite" +        android:layout_width="40dp" +        android:layout_height="40dp" +        android:layout_marginBottom="17dp" +        android:layout_marginRight="30dp" +        android:layout_marginTop="30dp" +        android:clickable="true" +        android:src="@drawable/ic_baseline_favorite_border_24" +        app:layout_constraintBottom_toTopOf="@+id/tvLocationType" +        app:layout_constraintEnd_toEndOf="parent" +        app:layout_constraintTop_toTopOf="parent" /> +      <androidx.constraintlayout.widget.ConstraintLayout          android:id="@+id/constraintLayout"          android:layout_width="match_parent"  | 
