refactor BoardRepository
This commit is contained in:
parent
a645d5f64b
commit
44775d0619
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user