用户信息调整
This commit is contained in:
@@ -54,12 +54,14 @@ suspend fun createAgent(
|
||||
*/
|
||||
class AgentPagingSource(
|
||||
private val agentRemoteDataSource: AgentRemoteDataSource,
|
||||
private val authorId: Int? = null
|
||||
) : PagingSource<Int, AgentEntity>() {
|
||||
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, AgentEntity> {
|
||||
return try {
|
||||
val currentPage = params.key ?: 1
|
||||
val users = agentRemoteDataSource.getAgent(
|
||||
pageNumber = currentPage
|
||||
pageNumber = currentPage,
|
||||
authorId = authorId
|
||||
)
|
||||
LoadResult.Page(
|
||||
data = users.list,
|
||||
@@ -83,9 +85,11 @@ class AgentRemoteDataSource(
|
||||
) {
|
||||
suspend fun getAgent(
|
||||
pageNumber: Int,
|
||||
authorId: Int? = null
|
||||
): ListContainer<AgentEntity> {
|
||||
return agentService.getAgent(
|
||||
pageNumber = pageNumber
|
||||
pageNumber = pageNumber,
|
||||
authorId = authorId
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -93,10 +97,10 @@ class AgentRemoteDataSource(
|
||||
class AgentServiceImpl() : AgentService {
|
||||
val agentBackend = AgentBackend()
|
||||
|
||||
override suspend fun getAgent(pageNumber: Int, pageSize: Int): ListContainer<AgentEntity> {
|
||||
override suspend fun getAgent(pageNumber: Int, pageSize: Int, authorId: Int?): ListContainer<AgentEntity> {
|
||||
return agentBackend.getAgent(
|
||||
pageNumber = pageNumber,
|
||||
|
||||
authorId = authorId
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -105,20 +109,44 @@ class AgentServiceImpl() : AgentService {
|
||||
val DataBatchSize = 20
|
||||
suspend fun getAgent(
|
||||
pageNumber: Int,
|
||||
|
||||
authorId: Int? = null
|
||||
): ListContainer<AgentEntity> {
|
||||
val resp = ApiClient.api.getMyAgent(
|
||||
pageSize = DataBatchSize,
|
||||
page = pageNumber,
|
||||
|
||||
)
|
||||
val body = resp.body() ?: throw ServiceException("Failed to get moments")
|
||||
return ListContainer(
|
||||
total = body.total,
|
||||
page = pageNumber,
|
||||
pageSize = DataBatchSize,
|
||||
list = body.list.map { it.toAgentEntity() }
|
||||
)
|
||||
val resp = if (authorId != null) {
|
||||
ApiClient.api.getAgent(
|
||||
page = pageNumber,
|
||||
pageSize = DataBatchSize,
|
||||
authorId = authorId
|
||||
)
|
||||
} else {
|
||||
ApiClient.api.getMyAgent(
|
||||
page = pageNumber,
|
||||
pageSize = DataBatchSize
|
||||
)
|
||||
}
|
||||
|
||||
val body = resp.body() ?: throw ServiceException("Failed to get agents")
|
||||
|
||||
// 处理不同的返回类型
|
||||
return if (authorId != null) {
|
||||
// getAgent 返回 DataContainer<ListContainer<Agent>>
|
||||
val dataContainer = body as com.aiosman.ravenow.data.DataContainer<com.aiosman.ravenow.data.ListContainer<com.aiosman.ravenow.data.Agent>>
|
||||
val listContainer = dataContainer.data
|
||||
ListContainer(
|
||||
total = listContainer.total,
|
||||
page = pageNumber,
|
||||
pageSize = DataBatchSize,
|
||||
list = listContainer.list.map { it.toAgentEntity() }
|
||||
)
|
||||
} else {
|
||||
// getMyAgent 返回 ListContainer<Agent>
|
||||
val listContainer = body as com.aiosman.ravenow.data.ListContainer<com.aiosman.ravenow.data.Agent>
|
||||
ListContainer(
|
||||
total = listContainer.total,
|
||||
page = pageNumber,
|
||||
pageSize = DataBatchSize,
|
||||
list = listContainer.list.map { it.toAgentEntity() }
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +171,7 @@ fun createMultipartBody(file: File, filename: String, name: String): MultipartBo
|
||||
return MultipartBody.Part.createFormData(name, filename, requestFile)
|
||||
}
|
||||
class AgentLoaderExtraArgs(
|
||||
|
||||
val authorId: Int? = null
|
||||
)
|
||||
class AgentLoader : DataLoader<AgentEntity,AgentLoaderExtraArgs>() {
|
||||
override suspend fun fetchData(
|
||||
@@ -151,24 +179,40 @@ class AgentLoader : DataLoader<AgentEntity,AgentLoaderExtraArgs>() {
|
||||
pageSize: Int,
|
||||
extra: AgentLoaderExtraArgs
|
||||
): ListContainer<AgentEntity> {
|
||||
val result = ApiClient.api.getAgent(
|
||||
page = page,
|
||||
pageSize = pageSize,
|
||||
|
||||
)
|
||||
val data = result.body()?.let {
|
||||
ListContainer(
|
||||
list = it.data.list.map { it.toAgentEntity()},
|
||||
total = it.data.total,
|
||||
val result = if (extra.authorId != null) {
|
||||
ApiClient.api.getAgent(
|
||||
page = page,
|
||||
pageSize = pageSize,
|
||||
authorId = extra.authorId
|
||||
)
|
||||
} else {
|
||||
ApiClient.api.getMyAgent(
|
||||
page = page,
|
||||
pageSize = pageSize
|
||||
)
|
||||
}
|
||||
if (data == null) {
|
||||
throw ServiceException("Failed to get agent")
|
||||
|
||||
val body = result.body() ?: throw ServiceException("Failed to get agent")
|
||||
|
||||
return if (extra.authorId != null) {
|
||||
// getAgent 返回 DataContainer<ListContainer<Agent>>
|
||||
val dataContainer = body as com.aiosman.ravenow.data.DataContainer<com.aiosman.ravenow.data.ListContainer<com.aiosman.ravenow.data.Agent>>
|
||||
val listContainer = dataContainer.data
|
||||
ListContainer(
|
||||
list = listContainer.list.map { it.toAgentEntity()},
|
||||
total = listContainer.total,
|
||||
page = page,
|
||||
pageSize = pageSize
|
||||
)
|
||||
} else {
|
||||
// getMyAgent 返回 ListContainer<Agent>
|
||||
val listContainer = body as com.aiosman.ravenow.data.ListContainer<com.aiosman.ravenow.data.Agent>
|
||||
ListContainer(
|
||||
list = listContainer.list.map { it.toAgentEntity()},
|
||||
total = listContainer.total,
|
||||
page = page,
|
||||
pageSize = pageSize
|
||||
)
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user