aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt43
-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/Models/Post.kt3
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_24.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_favorite_border_24.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml13
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"