refactor BoardRepository

This commit is contained in:
Raffaele Mignone 2019-12-03 19:48:29 +01:00
parent a645d5f64b
commit 44775d0619
Signed by: norangebit
GPG Key ID: F5255658CB220573

View File

@ -29,6 +29,39 @@ class BoardRepository(
synchronize()
}
fun synchronize() {
service.getBoardsFromUser(reader.userId)
.enqueue(object :
Callback<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>> {
override fun onFailure(
call: Call<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>>,
t: Throwable
) = logNetworkError(t.message)
override fun onResponse(
call: Call<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>>,
response: Response<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>>
) = synchronizeCallback(response)
})
}
private fun synchronizeCallback(
response: Response<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>>
) {
if (!response.isSuccessful) {
logNetworkError("${response.code()} ${response.message()}")
return
}
// read boards from the body
val boards = (response.body() ?: return)
.map { it.convert() }
addNewBoardToDb(boards)
removeOldBoardsFromDb(boards)
}
fun insertBoard(title: String, isPrivate: Boolean, color: BoardBackgroundColor) {
val permission = if (isPrivate) BoardPermission.PRIVATE else BoardPermission.PUBLIC
@ -48,54 +81,29 @@ class BoardRepository(
override fun onResponse(
call: Call<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>,
response: Response<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>
) {
if (!response.isSuccessful) {
logNetworkError("${response.code()} ${response.message()}")
return
}
val board = response.body()
if (board == null) {
logNetworkError("empty body")
return
}
CoroutineScope(Dispatchers.IO).launch {
dao.insert(Board(board.id, title))
}
}
) = insertBoardCallback(response, title)
})
}
fun synchronize() {
service.getBoardsFromUser(reader.userId)
.enqueue(object :
Callback<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>> {
private fun insertBoardCallback(
response: Response<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>,
title: String
) {
if (!response.isSuccessful) {
logNetworkError("${response.code()} ${response.message()}")
return
}
override fun onFailure(
call: Call<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>>,
t: Throwable
) = logNetworkError(t.message)
val board = response.body()
override fun onResponse(
call: Call<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>>,
response: Response<MutableList<it.unisannio.ding.ids.wedroid.wrapper.entity.Board>>
) {
if (!response.isSuccessful) {
logNetworkError("${response.code()} ${response.message()}")
return
}
if (board == null) {
logNetworkError("empty body")
return
}
// read boards from the body
val boards = (response.body() ?: return)
.map { it.convert() }
addNewBoardToDb(boards)
removeOldBoardsFromDb(boards)
}
})
CoroutineScope(Dispatchers.IO).launch {
dao.insert(Board(board.id, title))
}
}
fun deleteBoard(id: String) {
@ -105,19 +113,27 @@ class BoardRepository(
logNetworkError(t.message)
}
override fun onResponse(call: Call<Void>, response: Response<Void>) {
if (!response.isSuccessful) {
logNetworkError("${response.code()}, ${response.message()}")
return
}
CoroutineScope(Dispatchers.IO).launch {
dao.delete(Board(id))
}
}
override fun onResponse(
call: Call<Void>,
response: Response<Void>
) = deleteBoardCallback(response, id)
})
}
private fun deleteBoardCallback(
response: Response<Void>,
id: String
) {
if (!response.isSuccessful) {
logNetworkError("${response.code()}, ${response.message()}")
return
}
CoroutineScope(Dispatchers.IO).launch {
dao.delete(Board(id))
}
}
private fun addNewBoardToDb(boards: Collection<Board>) {
boards.forEach {
CoroutineScope(Dispatchers.IO).launch {