diff options
Diffstat (limited to 'Client')
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 | 
