aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-11-20 00:00:22 +0100
committerJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-11-20 00:00:22 +0100
commite6bb1a00d7010a04ecbbdaf3592d4cba4a05e2e1 (patch)
tree46693fcb0ec3a192877fbfacd7b0542da6238dfe /Client
parentaeb0e6e1dd22e31f45aafaab60c22a5317f73adb (diff)
Omoguceno slanje pretrage, filtriranja itd putem modela, sad se salju samo hardkodovane vrednosti #36
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt16
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt44
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt7
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt9
6 files changed, 34 insertions, 56 deletions
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 a827dcb..cf16689 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
@@ -26,7 +26,7 @@ import retrofit2.Call
import retrofit2.Response
-class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPreview>)
+class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPreview>?=null)
: PagingDataAdapter<PostPreview, ShowPostsAdapter.ViewHolder>(REPO_COMPARATOR) {
private lateinit var token: String
private lateinit var imageApi: IBackendApi
@@ -59,13 +59,13 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPrevie
//sets components of particular item
holder.bind(getItem(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)
+ Toast.makeText(activity,getItem(position)!!._id,Toast.LENGTH_LONG).show()
+ val intent:Intent = Intent(activity,ActivitySinglePost::class.java)
+ var b=Bundle()
+ //getItem(position)!!.location.type=LocationType.ADA
+ b.putParcelable("selectedPost",getItem(position)!!)
+ intent.putExtras(b)
+ activity.startActivity(intent)
}
}
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 84df389..e78e1d6 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
@@ -43,20 +43,20 @@ import retrofit2.Response
class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
private lateinit var binding: FragmentShowPostsBinding
- private var posts : MutableList<PostPreview> = mutableListOf()
private var linearManagerVar: RecyclerView.LayoutManager? = null
private var adapterVar: ShowPostsAdapter? = null
private var recyclerView: RecyclerView?=null
private var gridManagerVar: RecyclerView.LayoutManager?=null
private var swipeRefreshLayout:SwipeRefreshLayout?=null
private lateinit var searchPostsViewModel:SearchPostsViewModel
+ private var searchParams:SearchParams?= SearchParams("6375784fe84e2d53df32bf03",1,1)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setUpViewModel()
binding=FragmentShowPostsBinding.inflate(layoutInflater)
//instantiate adapter and linearLayout
- adapterVar=ShowPostsAdapter(requireActivity(),posts)
+ adapterVar=ShowPostsAdapter(requireActivity())
linearManagerVar= LinearLayoutManager(activity)
gridManagerVar=GridLayoutManager(activity,2)
}
@@ -82,39 +82,13 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
}
}
- fun requestToBack(){
+ fun requestToBack(searchParams: SearchParams){
lifecycleScope.launch{
- searchPostsViewModel.fetchPosts().distinctUntilChanged().collectLatest {
- adapterVar?.submitData(it)
+ searchPostsViewModel.fetchPosts(searchParams).distinctUntilChanged().collectLatest {
+ adapterVar?.submitData(lifecycle,it)
swipeRefreshLayout?.isRefreshing=false
}
}
-// val postApi= RetrofitHelper.getInstance()
-// val token=SharedPreferencesHelper.getValue("jwt", requireActivity())
-// val request=postApi.getPosts("Bearer "+token)
-// 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)
-// Toast.makeText(
-// activity, "prosao zahtev", Toast.LENGTH_LONG
-// ).show()
-// swipeRefreshLayout?.isRefreshing=false
-// }else{
-// if(response.errorBody()!=null)
-// Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show();
-// }
-//
-//
-// }
-//
-// override fun onFailure(call: Call<MutableList<PostPreview>?>, t: Throwable) {
-// Toast.makeText(
-// activity, t.toString(), Toast.LENGTH_LONG
-// ).show();
-// }
-// })
}
override fun onCreateView(
@@ -138,16 +112,14 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
R.color.purple_700
)
swipeRefreshLayout?.post(kotlinx.coroutines.Runnable {
- //swipeRefreshLayout?.isRefreshing=true
- requestToBack()
+ swipeRefreshLayout?.isRefreshing=true
+ requestToBack(searchParams!!)
})
return rootView
}
override fun onRefresh() {
- //requestToBack()
- adapterVar!!.notifyDataSetChanged()
- Log.d("main",adapterVar!!.itemCount.toString())
+ requestToBack(searchParams!!)
}
} \ 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 f990133..a292160 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
@@ -80,3 +80,9 @@ data class PagedPosts(
var totalposts:Int,
var posts:MutableList<PostPreview>
)
+
+data class SearchParams(
+ var locationId: String,
+ var sorttype:Int,
+ var filterdate:Int
+) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt
index 2f69a7a..b1c89db 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt
@@ -6,20 +6,22 @@ import androidx.paging.PagingSource
import com.example.brzodolokacije.Interfaces.IBackendApi
import com.example.brzodolokacije.Models.PagedPosts
import com.example.brzodolokacije.Models.PostPreview
+import com.example.brzodolokacije.Models.SearchParams
import com.example.brzodolokacije.Services.SharedPreferencesHelper
import retrofit2.HttpException
import java.io.IOException
class SearchPostsPagingSource(
val backend: IBackendApi,
- val activity: Activity
+ val activity: Activity,
+ val searchParams:SearchParams
):PagingSource<Int,PostPreview>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, PostPreview> {
val page=params.key?:0
val token=SharedPreferencesHelper.getValue("jwt", activity)
return try{
- val response=backend.getPagedPosts("Bearer "+token,"6375784fe84e2d53df32bf03",
- page,1,1
+ val response=backend.getPagedPosts("Bearer "+token,searchParams.locationId,
+ page,searchParams.sorttype,searchParams.filterdate
)
Log.d("main",page.toString())
LoadResult.Page(
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt
index ae3a684..4eeb85b 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt
@@ -6,21 +6,22 @@ import androidx.paging.PagingConfig
import androidx.paging.PagingData
import androidx.paging.cachedIn
import com.example.brzodolokacije.Models.PostPreview
+import com.example.brzodolokacije.Models.SearchParams
import com.example.brzodolokacije.Services.RetrofitHelper
import kotlinx.coroutines.flow.Flow
-class SearchPostsRepository(val activity: Activity) {
+class SearchPostsRepository(val activity: Activity,val searchParams: SearchParams) {
companion object{
const val DEFAULT_PAGE_SIZE=20
const val DEFAULT_PAGE_INDEX=1
- fun getInstance(activity: Activity)=SearchPostsRepository(activity)
+ fun getInstance(activity: Activity,searchParams: SearchParams)=SearchPostsRepository(activity,searchParams)
}
fun letSearchedPostsFlow(pagingConfig: PagingConfig=getDefaultPageConfig()): Flow<PagingData<PostPreview>> {
return Pager(
config=pagingConfig,
- pagingSourceFactory = {SearchPostsPagingSource(RetrofitHelper.getInstance(),activity)}
+ pagingSourceFactory = {SearchPostsPagingSource(RetrofitHelper.getInstance(),activity,searchParams)}
).flow
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt
index d0bf3ef..cee1a34 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt
@@ -9,17 +9,14 @@ import androidx.paging.PagingData
import androidx.paging.cachedIn
import com.example.brzodolokacije.Interfaces.IBackendApi
import com.example.brzodolokacije.Models.PostPreview
+import com.example.brzodolokacije.Models.SearchParams
import kotlinx.coroutines.flow.Flow
class SearchPostsViewModel(
private val api:IBackendApi,
val activity:Activity
): ViewModel() {
- val posts =
- Pager(config = PagingConfig(pageSize = 10), pagingSourceFactory = {
- SearchPostsPagingSource(api,activity)
- }).flow.cachedIn(viewModelScope)
- fun fetchPosts(): Flow<PagingData<PostPreview>>{
- return SearchPostsRepository.getInstance(activity).letSearchedPostsFlow().cachedIn(viewModelScope)
+ fun fetchPosts(searchParams: SearchParams): Flow<PagingData<PostPreview>>{
+ return SearchPostsRepository.getInstance(activity,searchParams).letSearchedPostsFlow().cachedIn(viewModelScope)
}
} \ No newline at end of file