diff options
author | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-11-21 22:34:00 +0100 |
---|---|---|
committer | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-11-21 22:34:00 +0100 |
commit | 2404102a5d5a5575ba4e8000da0f90e627d9a1d5 (patch) | |
tree | 20deb2d7e50fbb0f47ffbab3ee82857b78ab28ef /Client | |
parent | 59c0fbcb4185b6aa1fd0652f6cbd7b88feb23bb8 (diff) |
Dadat pregled kada se otvori objava. Napravljen izgled za prikas istorije pregleda objava. Omogucen prikaz liste istorije pregleda objava na profilu korisnika.
Diffstat (limited to 'Client')
10 files changed, 227 insertions, 54 deletions
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt index c247743..2d305a6 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt @@ -260,7 +260,9 @@ class ActivityAddPost : AppCompatActivity() { } var countryName=loc1[0].countryName var address="todo not possible in query" - var city=loc1[0].adminArea//not possible + var city="its null" + if(loc1[0].adminArea!=null) + city=loc1[0].adminArea//not possible var loc:Location=Location("",locationString,city,countryName,address,latitude,longitude,LocationType.GRAD) var jwtString= SharedPreferencesHelper.getValue("jwt",this) var data=api.addLocation("Bearer "+jwtString,loc) 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 c030eda..f875949 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 @@ -132,6 +132,7 @@ class ActivitySinglePost : AppCompatActivity() { Toast.makeText(this@ActivitySinglePost,"Unesite tekst komentara.",Toast.LENGTH_LONG).show() } } + addView() } @@ -229,5 +230,20 @@ class ActivitySinglePost : AppCompatActivity() { tvDescription.invalidate() } } + fun addView() { + var token= SharedPreferencesHelper.getValue("jwt", this).toString() + val Api= RetrofitHelper.getInstance() + val request=Api.addView("Bearer "+token,post._id) + request.enqueue(object : retrofit2.Callback<PostPreview?> { + override fun onResponse(call: Call<PostPreview?>, response: Response<PostPreview?>) { + + } + + override fun onFailure(call: Call<PostPreview?>, t: Throwable) { + + } + }) + } + } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostHistoryAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostHistoryAdapter.kt new file mode 100644 index 0000000..db3fc2e --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostHistoryAdapter.kt @@ -0,0 +1,61 @@ +package com.example.brzodolokacije.Adapters + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Activities.ActivitySinglePost +import com.example.brzodolokacije.Interfaces.IBackendApi +import com.example.brzodolokacije.Models.LocationType +import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import com.example.brzodolokacije.databinding.SinglePostHistoryBinding + + +class PostHistoryAdapter (val activity:Activity,val items : MutableList<PostPreview>) + : RecyclerView.Adapter<PostHistoryAdapter.ViewHolder>() { + private lateinit var token: String + private lateinit var imageApi: IBackendApi + + //constructer has one argument - list of objects that need to be displayed + //it is bound to xml of single item + private lateinit var binding: SinglePostHistoryBinding + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val inflater = LayoutInflater.from(parent.context) + imageApi= RetrofitHelper.getInstance() + token= SharedPreferencesHelper.getValue("jwt", activity).toString() + binding = SinglePostHistoryBinding.inflate(inflater, parent, false) + return ViewHolder(binding) + } + + + + + override fun getItemCount() = items.size + inner class ViewHolder(itemView: SinglePostHistoryBinding) : RecyclerView.ViewHolder(itemView.root) { + fun bind(item: PostPreview) { + binding.apply { + tvTitleSinglePostHistory.text = item.location.name + tvLocationParentSinglePostHistory.text = "22.11.2022" + tvLocationTypeSinglePostHistory.text = item.location.country + + } + } + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.bind(items[position]) + holder.itemView.setOnClickListener { + //Toast.makeText(activity,item._id,Toast.LENGTH_LONG).show() + val intent:Intent = Intent(activity,ActivitySinglePost::class.java) + var b=Bundle() + items[position].location.type=LocationType.ADA + b.putParcelable("selectedPost", items[position]) + intent.putExtras(b) + activity.startActivity(intent) + } + } +} diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt index e09cd06..0bd625f 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt @@ -65,17 +65,6 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPrevie var b=Bundle() //getItem(position)!!.location.type=LocationType.ADA //--------------------------------------------------------------- call back to add view tick - val Api= RetrofitHelper.getInstance() - val request=Api.addView("Bearer "+token,getItem(position)!!._id) - request.enqueue(object : retrofit2.Callback<PostPreview?> { - override fun onResponse(call: Call<PostPreview?>, response: Response<PostPreview?>) { - - } - - override fun onFailure(call: Call<PostPreview?>, t: Throwable) { - - } - }) //--------------------------------------------------------------- b.putParcelable("selectedPost",getItem(position)!!) intent.putExtras(b) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt index ce8679a..c5fa6ec 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt @@ -5,56 +5,69 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Adapters.MyPostsAdapter +import com.example.brzodolokacije.Adapters.PostHistoryAdapter +import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" -/** - * A simple [Fragment] subclass. - * Use the [FragmentMyRecensions.newInstance] factory method to - * create an instance of this fragment. - */ class FragmentMyRecensions : Fragment() { - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null + + private lateinit var posts : MutableList<PostPreview> + private lateinit var rvPosts: RecyclerView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } + } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_my_recensions, container, false) + + val view =inflater.inflate(R.layout.fragment_my_recensions, container, false) + + rvPosts=view.findViewById(R.id.rvFragmentMyRecensionPostHistory) as RecyclerView + getPosts() + + return view + } + fun getPosts(){ + val api = RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt", requireActivity()) + val data=api.getMyHistory("Bearer "+token) - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment FragmentMyRecensions. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - FragmentMyRecensions().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) + data.enqueue(object : Callback<MutableList<PostPreview>> { + override fun onResponse( + call: Call<MutableList<PostPreview>>, + response: Response<MutableList<PostPreview>> + ) { + if (response.body() == null) { + return } + posts = response.body()!!.toMutableList<PostPreview>() + loadPosts() + } + override fun onFailure(call: Call<MutableList<PostPreview>>, t: Throwable) { + } + }) } + private fun loadPosts(){//most viewed + rvPosts.apply { + layoutManager= GridLayoutManager(requireContext(),1, GridLayoutManager.VERTICAL,false) + adapter= PostHistoryAdapter(requireActivity(),posts) + + } + +} }
\ 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 1ba6b53..d8daf14 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 @@ -65,6 +65,8 @@ interface IBackendApi { ):PagedPosts @POST("/api/message/add") fun sendMessage(@Header("Authorization") authHeader:String,@Body message:MessageSend):Call<Message> + @GET("/api/user/history") + fun getMyHistory(@Header("Authorization") authHeader:String):Call<MutableList<PostPreview>> //@POST("putanja") //fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call<Post> }
\ 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 a292160..e2e9209 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 @@ -34,7 +34,8 @@ data class PostPreview ( var views:Int, var ratings:Float, var comments:List<CommentSend>?, - var images:List<PostImage> + var images:List<PostImage>, + var tags:List<String>? //nedostaju datum i vreme kreiranja ):Parcelable diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml index d5452b9..72706e0 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml @@ -1,14 +1,28 @@ <?xml version="1.0" encoding="utf-8"?> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Fragments.FragmentMyRecensions"> - <!-- TODO: Update blank fragment layout --> - <TextView + + <com.google.android.material.divider.MaterialDivider + android:id="@+id/materialDivider" + android:layout_width="match_parent" + android:layout_height="50dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:visibility="invisible"/> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/rvFragmentMyRecensionPostHistory" android:layout_width="match_parent" - android:layout_height="match_parent" - android:text="Moje recenzije" /> + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/materialDivider" + android:layout_marginHorizontal="16dp"/> -</FrameLayout>
\ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml index c75e1e4..138d068 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml @@ -231,7 +231,7 @@ android:layout_marginTop="4dp" android:backgroundTint="#FFFFFF" android:stateListAnimator="@null" - android:text="Recenzije" + android:text="Istorija" android:textColor="@color/cardview_dark_background" app:layout_constraintStart_toEndOf="@+id/btnFragmentProfileShowMyPosts" app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" /> diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/single_post_history.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/single_post_history.xml new file mode 100644 index 0000000..12c29ee --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/single_post_history.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="0dp" + android:background="@drawable/rounded_picture_background" + android:clipToOutline="true" + > + + + + + <View + android:id="@+id/vBannerSinglePostHistory" + android:layout_width="match_parent" + android:layout_height="80dp" + android:background="@color/dark_blue_transparent" + android:outlineProvider="background" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0" + tools:layout_editor_absoluteX="10dp" + android:layout_marginTop="5dp" + > + + + </View> + + <TextView + android:id="@+id/tvTitleSinglePostHistory" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="top|left" + android:text="Naslov" + android:textColor="@color/white" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.076" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/vBannerSinglePostHistory" + app:layout_constraintVertical_bias="0.18" /> + + <TextView + android:id="@+id/tvLocationTypeSinglePostHistory" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Tip lokacije" + android:textColor="@color/white" + app:layout_constraintBottom_toBottomOf="@+id/vBannerSinglePostHistory" + app:layout_constraintEnd_toStartOf="@+id/tvLocationParentSinglePostHistory" + app:layout_constraintHorizontal_bias="0.112" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/vBannerSinglePostHistory" + app:layout_constraintVertical_bias="0.721" /> + + <TextView + android:id="@+id/tvLocationParentSinglePostHistory" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:text="22.11.2022" + android:textAlignment="viewEnd" + android:textColor="@color/white" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.952" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/vBannerSinglePostHistory" + app:layout_constraintVertical_bias="0.737" /> + +</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file |