Skip to content

Commit

Permalink
Cleaned coroutines calls
Browse files Browse the repository at this point in the history
  • Loading branch information
sergiocasero committed Oct 26, 2018
1 parent 4f42ae7 commit 46ac859
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 35 deletions.
Expand Up @@ -5,6 +5,5 @@ import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers

class AndroidExecutor : Executor {
override val new: CoroutineDispatcher = Dispatchers.IO
override val main: CoroutineDispatcher = Dispatchers.Main
}
5 changes: 1 addition & 4 deletions backend/src/com/votlin/backend/Server.kt
Expand Up @@ -14,10 +14,7 @@ fun main(args: Array<String>) {
embeddedServer(Netty, 10000) {

// Database
Database.connect(url = "jdbc:mysql://localhost:3306/edd",
driver = "com.mysql.jdbc.Driver",
user = "edd",
password = "extremaduradigitalday")
Database.connect(url = "jdbc:mysql://localhost:3306/edd", driver = "com.mysql.jdbc.Driver", user = "edd", password = "extremaduradigitalday")

// Serialize json
install(ContentNegotiation) {
Expand Down
6 changes: 3 additions & 3 deletions backend/src/com/votlin/backend/UseCases.kt
Expand Up @@ -10,9 +10,9 @@ import org.jetbrains.exposed.sql.select
import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction

fun getTalkById(id: Int): Talk {
return transaction { TalkVo.select { TalkVo.id eq id }.first() }.toTalk(getTalkSpeakers(talkId = id))
}
fun getTalkById(id: Int): Talk
= transaction { TalkVo.select { TalkVo.id eq id }.first() }.toTalk(getTalkSpeakers(talkId = id))


fun getTalks(): List<Talk> = transaction { TalkVo.selectAll().toList() }.map {
it.toTalk(getTalkSpeakers(it[TalkVo.id]))
Expand Down
Expand Up @@ -3,6 +3,5 @@ package com.votlin.client.domain.executor
import kotlinx.coroutines.CoroutineDispatcher

interface Executor {
val new: CoroutineDispatcher
val main: CoroutineDispatcher
}
Expand Up @@ -9,12 +9,12 @@ suspend fun getAllTalks(repository: Repository): List<Talk> = repository.getTalk

suspend fun getTalkDetail(id: Int, repository: Repository): Talk = repository.getTalk(talkId = id)

suspend fun getTalksByTrack(track: Track, repository: Repository): List<Talk> = repository.getTalksByTrack(track)
suspend fun getTalksByTrack(track: Track, repository: Repository): List<Talk> = repository.getTalksByTrack(track = track)

suspend fun rateTalk(rate: Rate, repository: Repository): Unit = repository.rateTalk(rate)
suspend fun rateTalk(rate: Rate, repository: Repository): Unit = repository.rateTalk(rate = rate)

fun saveTalk(talk: Talk, repository: Repository): Unit = repository.saveTalk(talk)
fun saveTalk(talk: Talk, repository: Repository): Unit = repository.saveTalk(talk = talk)

fun getTalkRate(talkId: Int, repository: Repository): Int = repository.getRate(talkId)
fun getTalkRate(talkId: Int, repository: Repository): Int = repository.getRate(talkId = talkId)

suspend fun getFavoriteTalks(repository: Repository): List<Talk> = repository.getFavoriteTalks()
Expand Up @@ -10,24 +10,18 @@ import com.votlin.model.Rate
import com.votlin.model.Talk
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext


class DetailPresenter(private val repository: Repository,
private val executor: Executor,
errorHandler: ErrorHandler,
view: DetailView)
class DetailPresenter(private val repository: Repository, private val executor: Executor, errorHandler: ErrorHandler, view: DetailView)
: Presenter<DetailView>(errorHandler, view) {

override fun initialize() {
view.showProgress()
GlobalScope.launch(executor.new) {
GlobalScope.launch(executor.main) {
val talk = getTalkDetail(view.getTalkId(), repository)

withContext(executor.main) {
view.showTalk(talk)
view.hideProgress()
}
view.showTalk(talk)
view.hideProgress()
}

val rate = getTalkRate(view.getTalkId(), repository)
Expand All @@ -43,10 +37,10 @@ class DetailPresenter(private val repository: Repository,
}

fun onRateChange(rate: Int) {
GlobalScope.launch(executor.new) {
GlobalScope.launch(executor.main) {
rateTalk(Rate(id = view.getTalkId(), value = rate), repository)
view.showRate(rate)
}
view.showRate(rate)
}

}
Expand Down
Expand Up @@ -9,7 +9,6 @@ import com.votlin.model.Talk
import com.votlin.model.Track
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class TalksListPresenter(private val executor: Executor,
private val repository: Repository,
Expand All @@ -28,24 +27,20 @@ class TalksListPresenter(private val executor: Executor,
fun onTrackChanged(track: Track) {
view.showProgress()

getTalks(track) {
view.showTalks(it)
view.hideProgress()
}
getTalks(track)
}

fun onTalkClicked(talk: Talk) = view.goToTalkScreen(talk.id)

private fun getTalks(track: Track, callback: (List<Talk>) -> Unit) {
GlobalScope.launch(executor.new) {
private fun getTalks(track: Track) {
GlobalScope.launch(context = executor.main) {
val talks = when (track) {
Track.ALL -> getAllTalks(repository)
else -> getTalksByTrack(track, repository)
}

withContext(executor.main) {
callback(talks)
}
view.showTalks(talks)
view.hideProgress()
}
}

Expand Down

0 comments on commit 46ac859

Please sign in to comment.