diff options
6 files changed, 60 insertions, 16 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 be4a73d..6a5dfe3 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 @@ -4,6 +4,7 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Adapters.PostImageAdapter import com.example.brzodolokacije.Models.PostImage @@ -46,9 +47,9 @@ class ActivitySinglePost : AppCompatActivity() { binding.apply { tvTitle.text= post.location.name tvTitle.invalidate() - tvLocationType.text=post.location.type.name + tvLocationType.text="TODO" tvLocationType.invalidate() - tvLocationParent.text=post.location.country + tvLocationParent.text="TODO" tvLocationParent.invalidate() tvRating.text=post.ratings.toString() tvRating.invalidate() 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 8e6093e..134b665 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 @@ -1,24 +1,40 @@ package com.example.brzodolokacije.Adapters import android.app.Activity -import android.content.Context import android.content.Intent +import android.graphics.BitmapFactory +import android.os.AsyncTask import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup import android.widget.Toast 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.PostPreviewBinding +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.Response + class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPreview>) : RecyclerView.Adapter<ShowPostsAdapter.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: PostPreviewBinding override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val inflater = LayoutInflater.from(parent.context) + imageApi= RetrofitHelper.getInstance() + token= SharedPreferencesHelper.getValue("jwt", activity).toString() binding = PostPreviewBinding.inflate(inflater, parent, false) return ViewHolder(binding) } @@ -30,6 +46,7 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPrevie //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) @@ -43,9 +60,34 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPrevie binding.apply { tvTitle.text = item.location.name tvLocationParent.text = item.location.country - tvLocationType.text = item.location.type.toString() + tvLocationType.text = "TODO" + + val request=imageApi.getImage("Bearer "+token,item.images[0]._id) + + request.enqueue(object : retrofit2.Callback<ResponseBody?> { + override fun onResponse(call: Call<ResponseBody?>, response: Response<ResponseBody?>) { + if (response.isSuccessful) { + val image: ResponseBody = response.body()!! + binding.locationImage.setImageBitmap(BitmapFactory.decodeStream(image.byteStream())) + Toast.makeText( + activity, "prosao zahtev", Toast.LENGTH_LONG + ).show() + } else { + if (response.errorBody() != null) + Toast.makeText( + activity, + response.errorBody()!!.string(), + Toast.LENGTH_LONG + ).show(); + } + } - itemView.isClickable = true + override fun onFailure(call: Call<ResponseBody?>, t: Throwable) { + Toast.makeText( + activity, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index e9b4c08..9a0eedc 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -3,6 +3,7 @@ package com.example.brzodolokacije.Fragments import android.content.Context import android.content.Intent import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -43,8 +44,9 @@ class FragmentShowPosts : Fragment() { request.enqueue(object : retrofit2.Callback<MutableList<PostPreview>?> { override fun onResponse(call: Call<MutableList<PostPreview>?>, response: Response<MutableList<PostPreview>?>) { if(response.isSuccessful){ - //posts=response.body()!! - //recyclerView?.adapter=ShowPostsAdapter(requireActivity(),posts) + posts=response.body()!! + Log.d("main",posts[0].toString()) + recyclerView?.adapter=ShowPostsAdapter(requireActivity(),posts) Toast.makeText( activity, "prosao zahtev", Toast.LENGTH_LONG ).show() 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 bcb6e13..49dda46 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 @@ -7,10 +7,7 @@ import com.example.brzodolokacije.Models.Auth.ResetPass import com.example.brzodolokacije.Models.PostPreview import okhttp3.ResponseBody import retrofit2.Call -import retrofit2.http.Body -import retrofit2.http.GET -import retrofit2.http.Header -import retrofit2.http.POST +import retrofit2.http.* interface IBackendApi { @POST("/api/auth/login") @@ -25,6 +22,9 @@ interface IBackendApi { fun resetpass(@Body obj:ResetPass):Call<ResponseBody> @GET("/api/post") fun getPosts(@Header("Authorization") authHeader:String):Call<MutableList<PostPreview>> + @Streaming + @GET("/api/post/image/{id}") + fun getImage(@Header("Authorization") authHeader:String,@Path("id") obj:String):Call<ResponseBody> //@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/Location.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt index 04bf3a1..c5fe48a 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt @@ -1,7 +1,6 @@ package com.example.brzodolokacije.Models import android.os.Parcelable -import com.example.brzodolokacije.Models.LocationType import kotlinx.android.parcel.Parcelize @Parcelize @@ -10,8 +9,8 @@ data class Location ( var name:String, var city:String, var country:String, - var adress:String, + var address:String, var latitude:Double, var longitude:Double, - var type:LocationType - ): Parcelable + var type:LocationType? +): Parcelable 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 f667fac..9b9afaa 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 @@ -33,7 +33,7 @@ data class PostPreview ( var description:String, var views:Int, var ratings:Float, - var comments:List<Comment>, + var comments:List<Comment>?, var images:List<PostImage> ):Parcelable |