package com.aiosman.riderpro.entity import androidx.paging.PagingSource import androidx.paging.PagingState import com.aiosman.riderpro.data.CommentRemoteDataSource import com.aiosman.riderpro.data.NoticePost import java.io.IOException import java.util.Date data class CommentEntity( val id: Int, val name: String, val comment: String, val date: Date, val likes: Int, val replies: List, val postId: Int = 0, val avatar: String, val author: Long, var liked: Boolean, var unread: Boolean = false, var post: NoticePost? ) class CommentPagingSource( private val remoteDataSource: CommentRemoteDataSource, private val postId: Int? = null, private val postUser: Int? = null, private val selfNotice: Boolean? = null, private val order: String? = null ) : PagingSource() { override suspend fun load(params: LoadParams): LoadResult { return try { val currentPage = params.key ?: 1 val comments = remoteDataSource.getComments( pageNumber = currentPage, postId = postId, postUser = postUser, selfNotice = selfNotice, order = order ) LoadResult.Page( data = comments.list, prevKey = if (currentPage == 1) null else currentPage - 1, nextKey = if (comments.list.isEmpty()) null else comments.page + 1 ) } catch (exception: IOException) { return LoadResult.Error(exception) } } override fun getRefreshKey(state: PagingState): Int? { return state.anchorPosition } }