aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorbranislav.radivojevic <wafflemynxyt@gmail.com>2022-12-09 00:27:43 +0100
committerbranislav.radivojevic <wafflemynxyt@gmail.com>2022-12-09 00:27:43 +0100
commit1ab59a4b3dc257e5b8bd7dd08eb8eeb043f33dea (patch)
tree7f57f322e47793ee2e60e10c6d3ed2f2b1ded9fb /Client
parent3249bb44349919e587ec2c7e44b75c4e2e324d7f (diff)
konacne ispravke i feature za Single Post
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt12
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt125
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml14
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_single_post_description.xml54
5 files changed, 195 insertions, 15 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 74b5f4c..2aff051 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
@@ -51,8 +51,11 @@ class ActivitySinglePost : AppCompatActivity() {
private var recyclerViewComments: RecyclerView?=null
private var favouriteImage: ImageView?=null
private lateinit var tagLayout: LinearLayout
+ private lateinit var createdAt:TextView
public lateinit var post: PostPreview
+ public lateinit var ratings:TextView
+ public lateinit var ratingscount:TextView
private var comments:MutableList<CommentSend>?=mutableListOf()
private var starNumber:Number=0
@@ -140,7 +143,6 @@ class ActivitySinglePost : AppCompatActivity() {
recyclerViewImages?.setHasFixedSize(true)
recyclerViewImages?.layoutManager = layoutManagerImages
recyclerViewImages?.adapter = adapterImages
-
}
btnChangeHeightDown.setOnClickListener {
btnChangeHeightDown.isVisible=false
@@ -206,7 +208,10 @@ class ActivitySinglePost : AppCompatActivity() {
}
}
-
+ public fun updateratings(rc:Int,r:Double){
+ binding.tvRating.text=r.toString()
+ binding.tvNumberOfRatings.text=rc.toString()
+ }
fun loadFavourite(){
@@ -282,7 +287,8 @@ class ActivitySinglePost : AppCompatActivity() {
tvNumberOfRatings.invalidate()
//tvRating.text=String.format("%.2f",data.ratings)
//tvNumberOfRatings.text=String.format("%d",data.ratingscount)
-
+ tvDatePosted.text=post.createdAt.toLocaleString()
+ tvDatePosted.invalidate()
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt
index 1f17a11..6e37052 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt
@@ -1,21 +1,24 @@
package com.example.brzodolokacije.Fragments
+import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.ImageButton
+import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
-import android.widget.Toast
+import androidx.core.view.isGone
+import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
+import com.example.brzodolokacije.Activities.ActivitySinglePost
+import com.example.brzodolokacije.Activities.NavigationActivity
import com.example.brzodolokacije.Models.*
import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.google.gson.Gson
-import org.w3c.dom.Text
import retrofit2.Call
import retrofit2.Response
@@ -30,6 +33,13 @@ class FragmentSinglePostDescription : Fragment() {
private lateinit var star5:ImageView
private var starNumber:Number=0
private lateinit var post:PostPreview
+ private lateinit var parentact:ActivitySinglePost
+ private lateinit var ocenitext:TextView
+ private lateinit var userid:String
+ private lateinit var del:TextView
+ private lateinit var delbtn:Button
+ private lateinit var delbtnY:Button
+ private lateinit var delbtnN:Button
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -37,7 +47,7 @@ class FragmentSinglePostDescription : Fragment() {
): View? {
var view=inflater.inflate(R.layout.fragment_single_post_description, container, false)
-
+ parentact = activity as ActivitySinglePost
//uzmi post prosledjen iz single post
@@ -45,10 +55,18 @@ class FragmentSinglePostDescription : Fragment() {
var jsonPostObject = args!!.getString("post")
post= Gson().fromJson(jsonPostObject, PostPreview::class.java)
+
//setuj opis
descriptionContainer=view.findViewById(R.id.tvDescription)
descriptionContainer.text=post.description.toString()
+
+ del=view.findViewById(R.id.tvObrisi)
+ delbtn=view.findViewById(R.id.btnObrisi)
+ delbtnY=view.findViewById(R.id.btnObrisiY)
+ delbtnN=view.findViewById(R.id.btnObrisiN)
+ userid=""
+ ocenitext=view.findViewById(R.id.title)
//setuj zvezdice
star1=view.findViewById(R.id.rateStar1)
star2=view.findViewById(R.id.rateStar2)
@@ -57,15 +75,17 @@ class FragmentSinglePostDescription : Fragment() {
star5=view.findViewById(R.id.rateStar5)
setRatingListeners()
+
val alreadyrated= RatingReceive(starNumber.toInt(),post._id)
requestAddRating(alreadyrated)
-
+ toggleStarRatings()
return view
}
fun setRatingListeners() {
val emptyStar = R.drawable.ic_round_star_outline_24
val fullStar = R.drawable.ic_baseline_star_rate_24
+ val offStar = R.drawable.ic_baseline_star_24
star1.setOnClickListener {
//Toast.makeText(this,"kliknuta prva zvezdica",Toast.LENGTH_SHORT).show()
@@ -140,9 +160,11 @@ class FragmentSinglePostDescription : Fragment() {
"--------------",
data.ratings.toString() + " " + data.ratingscount.toString()
)
+ parentact.updateratings(data.ratingscount,data.ratings)
if(rating.rating==0) {
val emptyStar = R.drawable.empty_star
val fullStar = R.drawable.ic_baseline_star_rate_24
+
when (data.myrating) {
1 -> {
star1.setImageResource(fullStar)
@@ -204,4 +226,97 @@ class FragmentSinglePostDescription : Fragment() {
}
})
}
+ fun toggleStarRatings(){
+ var token= SharedPreferencesHelper.getValue("jwt", requireActivity()).toString()
+ val api= RetrofitHelper.getInstance()
+ val request= api.getUserId("Bearer " + token)
+ request.enqueue(object : retrofit2.Callback<String> {
+ override fun onResponse(call: Call<String>,
+ response: Response<String>
+ ) {
+ if (response.body() == null) {
+ return
+ }
+ userid=response.body().toString()
+ Log.d("UID TEST",userid)
+ if(post.ownerId==userid){
+ //val offStar = R.drawable.ic_baseline_star_24
+ ocenitext.text="Vlasnik posta ne moze ocenjivati sebe"
+ /*star1.setImageResource(offStar)
+ star2.setImageResource(offStar)
+ star3.setImageResource(offStar)
+ star4.setImageResource(offStar)
+ star5.setImageResource(offStar)*/
+ star1.isEnabled=false
+ star2.isEnabled=false
+ star3.isEnabled=false
+ star4.isEnabled=false
+ star5.isEnabled=false
+
+ ocenitext.isVisible=false
+ ocenitext.isGone=true
+ star1.isVisible=false
+ star1.isGone=true
+ star2.isVisible=false
+ star2.isGone=true
+ star3.isVisible=false
+ star3.isGone=true
+ star4.isVisible=false
+ star4.isGone=true
+ star5.isVisible=false
+ star5.isGone=true
+
+ delbtn.isGone=false
+ delbtn.setOnClickListener{
+ del.isGone=false
+ delbtnY.isGone=false
+ delbtnN.isGone=false
+ delbtn.isGone=true
+ delbtnY.setOnClickListener {
+ deletePostreq()
+ }
+ delbtnN.setOnClickListener {
+ del.isGone=true
+ delbtnY.isGone=true
+ delbtnN.isGone=true
+ delbtn.isGone=false
+ }
+ }
+
+
+ }
+ }
+
+ override fun onFailure(call: Call<String>, t: Throwable) {
+
+ }
+ })
+
+
+ }
+
+ fun deletePostreq(){
+ var token= SharedPreferencesHelper.getValue("jwt", requireActivity()).toString()
+ val api= RetrofitHelper.getInstance()
+ val request= api.DeletePost("Bearer " + token,post._id)
+ request.enqueue(object : retrofit2.Callback<String> {
+ override fun onResponse(
+ call: Call<String>,
+ response: Response<String>
+ ) {
+ if(response.isSuccessful){
+ SharedPreferencesHelper.addValue("jwt",token,activity!!)
+ val intent= Intent(activity!!, NavigationActivity::class.java)
+ startActivity(intent)
+ activity!!.finish()
+ }
+
+ }
+
+ override fun onFailure(call: Call<String>, t: Throwable) {
+
+ }
+ })
+ }
+
} \ No newline at end of file
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 f6dfdcf..66a78d3 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
@@ -126,5 +126,8 @@ interface IBackendApi {
fun changePass(@Header("Authorization") authHeader:String):Call<Int>
@GET("/api/user/{username}/profile/stats")
fun getUserStatsFromUsername(@Header("Authorization") authHeader:String,@Path("username") username:String):Call<Statistics>
-
+ @GET("/api/auth/jwttoid")
+ fun getUserId(@Header("Authorization") authHeader:String):Call<String>
+ @DELETE("api/Post/posts/delete/{id}")
+ fun DeletePost(@Header("Authorization") authHeader:String,@Path("id") id:String):Call<String>
} \ No newline at end of file
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 15e81cf..0f8c527 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
@@ -89,11 +89,23 @@
android:gravity="top|start"
android:padding="@dimen/text_padding"
android:text="User"
- android:textSize="17dp"
+ android:textSize="20dp"
android:textStyle="bold"
+ android:textColor="#FF03DAC5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvLocationType" />
+ <TextView
+ android:id="@+id/tvDatePosted"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="16dp"
+ android:gravity="top|start"
+ android:padding="@dimen/text_padding"
+ android:text="Timestamp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvLocationType" />
+
<LinearLayout
android:id="@+id/llTags"
android:layout_width="match_parent"
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_single_post_description.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_single_post_description.xml
index 5bbdb14..f4dcb9d 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_single_post_description.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_single_post_description.xml
@@ -39,6 +39,8 @@
app:layout_constraintTop_toBottomOf="@+id/tvDescription" />
<LinearLayout
+
+ android:id="@+id/linearLayout9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
@@ -47,47 +49,89 @@
app:layout_constraintTop_toBottomOf="@+id/title">
<ImageView
- android:clickable="true"
android:id="@+id/rateStar1"
android:layout_width="50dp"
android:layout_height="50dp"
+ android:clickable="true"
android:scaleType="centerCrop"
android:src="@drawable/ic_round_star_outline_24" />
<ImageView
- android:clickable="true"
android:id="@+id/rateStar2"
android:layout_width="50dp"
android:layout_height="50dp"
+ android:clickable="true"
android:scaleType="centerCrop"
android:src="@drawable/ic_round_star_outline_24" />
<ImageView
- android:clickable="true"
android:id="@+id/rateStar3"
android:layout_width="50dp"
android:layout_height="50dp"
+ android:clickable="true"
android:scaleType="centerCrop"
android:src="@drawable/ic_round_star_outline_24" />
<ImageView
- android:clickable="true"
android:id="@+id/rateStar4"
android:layout_width="50dp"
android:layout_height="50dp"
+ android:clickable="true"
android:scaleType="centerCrop"
android:src="@drawable/ic_round_star_outline_24" />
<ImageView
- android:clickable="true"
android:id="@+id/rateStar5"
android:layout_width="50dp"
android:layout_height="50dp"
+ android:clickable="true"
android:scaleType="centerCrop"
android:src="@drawable/ic_round_star_outline_24" />
</LinearLayout>
+
+ <TextView
+ android:id="@+id/tvObrisi"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Sigurno? Brisanje je trajno."
+ android:visibility="gone"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/btnObrisi" />
+
+ <Button
+ android:id="@+id/btnObrisi"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="19dp"
+ android:text="Obrisi objavu"
+ android:visibility="gone"
+ android:backgroundTint="#8B0000"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/linearLayout9" />
+
+ <Button
+ android:id="@+id/btnObrisiN"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:backgroundTint="#FFFFFF"
+ android:textColor="@color/cardview_dark_background"
+ android:layout_marginStart="20dp"
+ android:text="Odustani"
+ android:visibility="gone"
+ app:layout_constraintStart_toEndOf="@+id/btnObrisiY"
+ app:layout_constraintTop_toBottomOf="@+id/tvObrisi" />
+
+ <Button
+ android:id="@+id/btnObrisiY"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Potvrdi"
+ android:visibility="gone"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvObrisi" />
+
<!--<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"