package com.h.pixeldroid.fragments.feeds.postFeeds import android.util.Log import android.view.View import android.widget.Toast import androidx.lifecycle.LiveData import androidx.paging.LivePagedListBuilder import androidx.paging.PagedList import com.h.pixeldroid.R import com.h.pixeldroid.objects.Status import retrofit2.Call import retrofit2.Callback import retrofit2.Response class PublicTimelineFragment: PostsFeedFragment() { inner class PublicFeedDataSource : FeedDataSource(){ override fun newSource(): PublicFeedDataSource { return PublicFeedDataSource() } override fun makeInitialCall(requestedLoadSize: Int): Call> { return pixelfedAPI.timelinePublic(limit="$requestedLoadSize") } override fun makeAfterCall(requestedLoadSize: Int, key: String): Call> { return pixelfedAPI.timelinePublic( max_id=key, limit="$requestedLoadSize") } override fun enqueueCall(call: Call>, callback: LoadCallback) { call.enqueue(object : Callback> { override fun onResponse(call: Call>, response: Response>) { if (response.isSuccessful && response.body() != null) { val notifications = response.body()!! callback.onResult(notifications) } else{ showError() } swipeRefreshLayout.isRefreshing = false loadingIndicator.visibility = View.GONE } override fun onFailure(call: Call>, t: Throwable) { showError(errorText = R.string.feed_failed) Log.e("PublicTimelineFragment", t.toString()) } }) } override fun getKey(item: Status): String { return item.id!! } } override fun makeContent(): LiveData> { val config: PagedList.Config = PagedList.Config.Builder().setPageSize(10).build() factory = FeedDataSourceFactory(PublicFeedDataSource()) return LivePagedListBuilder(factory, config).build() } }