aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorOgnjen Cirkovic <ciraboxkg@gmail.com>2022-11-14 18:33:51 +0100
committerOgnjen Cirkovic <ciraboxkg@gmail.com>2022-11-14 18:33:51 +0100
commit2ab8d852dd12434711e19ee4e23fbc8a1f2a950d (patch)
tree7c1be1999df97ab063a152b71b83f75629cf92a0 /Client
parent155be78c0e5ac272e3cee558bc8d76f4dc14b947 (diff)
Omoguceno da korisnik klikom na profilnu sliku moze da zameni ili da doda novu profilnu sliku.
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt82
1 files changed, 70 insertions, 12 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 87519f4..2ed28ce 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
@@ -1,23 +1,30 @@
package com.example.brzodolokacije.Fragments
import android.content.Intent
+import android.net.Uri
import android.os.Bundle
-import android.util.Log
-import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
-import com.example.brzodolokacije.Activities.NavigationActivity
+import com.bumptech.glide.Glide
import com.example.brzodolokacije.Models.UserReceive
import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
+import com.google.android.material.imageview.ShapeableImageView
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Response
+import java.io.File
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
@@ -44,6 +51,7 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) {
private lateinit var showMyPosts: Button
private lateinit var showMyData: Button
private lateinit var showMyRecensions: Button
+ private lateinit var profilePicture: ShapeableImageView
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@@ -58,6 +66,7 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) {
showMyPosts=view.findViewById<View>(R.id.btnFragmentProfileShowMyPosts) as Button
showMyData=view.findViewById<View>(R.id.btnFragmentProfileShowMyData) as Button
showMyRecensions=view.findViewById<View>(R.id.btnFragmentProfileShowMyRecensions) as Button
+ profilePicture=view.findViewById<View>(R.id.tvFragmentProfileProfilePicture) as ShapeableImageView
//podaci iz baze
@@ -86,11 +95,56 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) {
fm.replace(R.id.flFragmentProfileFragmentContainer, FragmentMyRecensions())
fm.commit()
}
+ profilePicture.setOnClickListener{
+ addProfilePicture()
+ }
getProfileInfo()
return view
}
+ private fun addProfilePicture(){
+ val intent= Intent(Intent.ACTION_PICK)
+ intent.action = Intent.ACTION_GET_CONTENT
+ intent.type="image/*"
+ startActivityForResult(Intent.createChooser(intent,"Izaberi profilnu sliku"),201)
+ }
+ private fun uploadProfilePicture(imageUri:Uri){
+ val api =RetrofitHelper.getInstance()
+ var inputStream=requireActivity().getContentResolver().openInputStream(imageUri)
+ val file: File = File.createTempFile("temp","pfp")
+ file!!.writeBytes(inputStream!!.readBytes())
+ var imageReq=RequestBody.create("image/*".toMediaTypeOrNull(),file)
+ val imageBody: MultipartBody.Part = MultipartBody.Part.createFormData("image", file.name, imageReq)
+ val token= SharedPreferencesHelper.getValue("jwt", requireActivity())
+ val req=api.setPfp("Bearer "+token,imageBody)
+
+ req.enqueue(object : retrofit2.Callback<ResponseBody?> {
+ override fun onResponse(call: Call<ResponseBody?>, response: Response<ResponseBody?>) {
+ if(response.isSuccessful()){
+ getProfileInfo()
+ }else{
+ if(response.errorBody()!=null)
+ Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show();
+ }
+ }
+ override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
+ Toast.makeText(
+ activity, t.toString(), Toast.LENGTH_LONG
+ ).show();
+ }
+ })
+ }
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ //nakon otvaranja
+ if(requestCode==201 && resultCode== AppCompatActivity.RESULT_OK){
+ var imageUri=data!!.data
+ uploadProfilePicture(imageUri!!)
+
+ }
+ }
+
private fun getProfileInfo(){
val authApi=RetrofitHelper.getInstance()
val token= SharedPreferencesHelper.getValue("jwt", requireActivity())
@@ -104,12 +158,8 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) {
if(response.errorBody()!=null)
Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show();
}
-
-
}
-
override fun onFailure(call: Call<UserReceive?>, t: Throwable) {
- Log.d("Main","Graska3")
Toast.makeText(
activity, t.toString(), Toast.LENGTH_LONG
).show();
@@ -118,11 +168,19 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) {
}
private fun setUserInfo(user:UserReceive){
name.setText(user.name)
- username.setText(user.username)
-
- postsCount.setText("to do backend")
- followersCount.setText("to do backend")
- followingCount.setText("to do backend")
+ username.setText("@"+user.username)
+
+ postsCount.setText("to do back")
+ followersCount.setText("to do back")
+ followingCount.setText("to do back")
+
+ //Add Profile image
+ if(user.pfp!=null) {
+ Glide.with(requireActivity())
+ .load(RetrofitHelper.baseUrl + "/api/post/image/" + user.pfp!!._id)
+ .circleCrop()//Round image
+ .into(profilePicture)
+ }
}