aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorOgnjen Cirkovic <ciraboxkg@gmail.com>2022-11-14 22:12:00 +0100
committerOgnjen Cirkovic <ciraboxkg@gmail.com>2022-11-14 22:12:00 +0100
commit81fae5e55c7a2b5a1ddc8055d32bc310e22e014d (patch)
tree313f31f4696580a0e19805dd4e9f439ae37ded0b /Client
parentb5b888192b8d5b6a477afd153d067bbc36f25def (diff)
Prosiren model za user-a. Omogucen prikaz objava korisnika na njegovom profilu.
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt19
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt85
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt3
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt3
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml24
5 files changed, 84 insertions, 50 deletions
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
index 9628a6b..198e125 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
@@ -75,10 +75,7 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) {
showMyPosts.setOnClickListener{
- var fm: FragmentTransaction =childFragmentManager.beginTransaction()
-
- fm.replace(R.id.flFragmentProfileFragmentContainer, FragmentUserPosts())
- fm.commit()
+ openMyPosts()
}
@@ -104,9 +101,15 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) {
addProfilePicture()
}
getProfileInfo()
-
+ openMyPosts()
return view
}
+ fun openMyPosts(){
+ var fm: FragmentTransaction =childFragmentManager.beginTransaction()
+
+ fm.replace(R.id.flFragmentProfileFragmentContainer, FragmentUserPosts())
+ fm.commit()
+ }
private fun addProfilePicture(){
val intent= Intent(Intent.ACTION_PICK)
@@ -174,10 +177,10 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) {
private fun setUserInfo(user:UserReceive){
name.setText(user.name)
username.setText("@"+user.username)
+ postsCount.setText(user.postcount.toString())
- postsCount.setText("to do back")
- followersCount.setText("to do back")
- followingCount.setText("to do back")
+ followersCount.setText("to do")
+ followingCount.setText("to do")
//Add Profile image
if(user.pfp!=null) {
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt
index 561de10..66e7846 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt
@@ -5,56 +5,73 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Toast
+import androidx.core.content.ContextCompat
+import androidx.recyclerview.widget.DividerItemDecoration
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.example.brzodolokacije.Adapters.ShowPostsAdapter
+import com.example.brzodolokacije.Adapters.ShowPostsHomePageAdapter
+import com.example.brzodolokacije.Interfaces.IBackendApi
+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
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
-// 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 [FragmentUserPosts.newInstance] factory method to
- * create an instance of this fragment.
- */
class FragmentUserPosts : 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? {
+ var view=inflater.inflate(R.layout.fragment_user_posts, container, false)
// Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_user_posts, container, false)
+ rvPosts=view.findViewById(R.id.rvFragmentUserPostsPosts) as RecyclerView
+ getPosts()
+ return view
}
- 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 FragmentUserPosts.
- */
- // TODO: Rename and change types and number of parameters
- @JvmStatic
- fun newInstance(param1: String, param2: String) =
- FragmentUserPosts().apply {
- arguments = Bundle().apply {
- putString(ARG_PARAM1, param1)
- putString(ARG_PARAM2, param2)
+ fun getPosts(){
+ val api = RetrofitHelper.getInstance()
+ val token= SharedPreferencesHelper.getValue("jwt", requireActivity())
+ val data=api.getMyPosts("Bearer "+token)
+
+ 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(),2,GridLayoutManager.VERTICAL,false)
+ adapter= ShowPostsAdapter(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 236db1d..2f5cff1 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
@@ -51,7 +51,8 @@ interface IBackendApi {
@GET("/api/user/{username}/profile")
fun getProfile(@Header("Authorization") authHeader:String,@Path("username") username:String):Call<UserReceive>
-
+ @GET("/api/user/posts")
+ fun getMyPosts(@Header("Authorization") authHeader:String):Call<MutableList<PostPreview>>
//@POST("putanja")
//fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call<Post>
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt
index 505ac51..c726978 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt
@@ -27,5 +27,6 @@ data class UserReceive(
var username:String,
var email:String,
var creationDate: Date,
- var pfp:PostImage?
+ var pfp:PostImage?,
+ var postcount:Int
) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml
index 185719b..f48d0a2 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml
@@ -1,14 +1,26 @@
<?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.FragmentUserPosts">
- <!-- TODO: Update blank fragment layout -->
- <TextView
+
+ <androidx.legacy.widget.Space
+ android:id="@+id/space"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/rvFragmentUserPostsPosts"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:text="@string/hello_blank_fragment" />
+ android:layout_height="wrap_content"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/space" />
-</FrameLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file