Change: rename acronyms classes to shortform

This commit is contained in:
Carlos Martinez
2021-06-17 12:12:55 -04:00
parent 3a29504fd2
commit 4e53225a2f
13 changed files with 76 additions and 72 deletions

View File

@@ -1,7 +1,7 @@
package dev.carlos.acronyms package dev.carlos.acronyms
import android.app.Application import android.app.Application
import dev.carlos.shortform.di.acronymsModule import dev.carlos.shortform.di.shortformModule
import dev.carlos.acronyms.di.appModules import dev.carlos.acronyms.di.appModules
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin import org.koin.core.context.startKoin
@@ -26,7 +26,7 @@ class MainApplication : Application() {
modules( modules(
listOf( listOf(
appModules, appModules,
acronymsModule shortformModule
) )
) )
} }

View File

@@ -1,16 +0,0 @@
package dev.carlos.shortform.data
import dev.carlos.shortform.data.cloud.AcronymsRemoteSource
import dev.carlos.shortform.data.models.ShortformModel
import dev.carlos.shortform.data.models.toShortformModel
import dev.carlos.shortform.domain.AcronymsRepository
import io.reactivex.Single
class AcronymsDataRepository(
private val remoteDatasource: AcronymsRemoteSource
) : AcronymsRepository {
override fun getAcronymDefinition(acronym: String): Single<ShortformModel> {
return remoteDatasource.getAcronymDefinition(acronym).map { it.single().toShortformModel() }
}
}

View File

@@ -0,0 +1,16 @@
package dev.carlos.shortform.data
import dev.carlos.shortform.data.cloud.ShortformRemoteSource
import dev.carlos.shortform.data.models.ShortformModel
import dev.carlos.shortform.data.models.toShortformModel
import dev.carlos.shortform.domain.ShortformRepository
import io.reactivex.Single
class ShortformDataRepository(
private val remoteDatasource: ShortformRemoteSource
) : ShortformRepository {
override fun getShortformDefinition(acronym: String): Single<ShortformModel> {
return remoteDatasource.getShortformDefinition(acronym).map { it.single().toShortformModel() }
}
}

View File

@@ -3,6 +3,6 @@ package dev.carlos.shortform.data.cloud
import dev.carlos.shortform.data.cloud.model.ShortformRemote import dev.carlos.shortform.data.cloud.model.ShortformRemote
import io.reactivex.Single import io.reactivex.Single
interface AcronymsRemoteSource { interface ShortformRemoteSource {
fun getAcronymDefinition(acronym: String): Single<List<ShortformRemote>> fun getShortformDefinition(acronym: String): Single<List<ShortformRemote>>
} }

View File

@@ -1,11 +0,0 @@
package dev.carlos.shortform.data.cloud.retrofit
import dev.carlos.shortform.data.cloud.AcronymsRemoteSource
import dev.carlos.shortform.data.cloud.model.ShortformRemote
import io.reactivex.Single
class AcronymsRemoteDatasource(private val acronymsService: AcronymsService) : AcronymsRemoteSource {
override fun getAcronymDefinition(acronym: String): Single<List<ShortformRemote>> {
return acronymsService.getAcronymDefinition(acronym)
}
}

View File

@@ -0,0 +1,11 @@
package dev.carlos.shortform.data.cloud.retrofit
import dev.carlos.shortform.data.cloud.ShortformRemoteSource
import dev.carlos.shortform.data.cloud.model.ShortformRemote
import io.reactivex.Single
class ShortformRemoteDatasource(private val shortformService: ShortformService) : ShortformRemoteSource {
override fun getShortformDefinition(acronym: String): Single<List<ShortformRemote>> {
return shortformService.getShortformDefinition(acronym)
}
}

View File

@@ -5,7 +5,7 @@ import io.reactivex.Single
import retrofit2.http.GET import retrofit2.http.GET
import retrofit2.http.Query import retrofit2.http.Query
interface AcronymsService { interface ShortformService {
@GET("/software/acromine/dictionary.py") @GET("/software/acromine/dictionary.py")
fun getAcronymDefinition(@Query("sf") acronym: String): Single<List<ShortformRemote>> fun getShortformDefinition(@Query("sf") acronym: String): Single<List<ShortformRemote>>
} }

View File

@@ -1,29 +0,0 @@
package dev.carlos.shortform.di
import dev.carlos.core.domain.network.RemoteClient
import dev.carlos.core.scheduler.Scheduler
import dev.carlos.core.scheduler.SchedulerProvider
import dev.carlos.shortform.data.AcronymsDataRepository
import dev.carlos.shortform.data.cloud.AcronymsRemoteSource
import dev.carlos.shortform.data.cloud.retrofit.AcronymsRemoteDatasource
import dev.carlos.shortform.data.cloud.retrofit.AcronymsService
import dev.carlos.shortform.domain.AcronymsRepository
import dev.carlos.shortform.domain.GetAcronymDefinition
import dev.carlos.shortform.viewmodels.AcronymsViewmodel
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
val acronymsModule = module {
single<Scheduler> { SchedulerProvider() }
single {
get<RemoteClient>().getClient(AcronymsService::class.java)
}
factory<AcronymsRemoteSource> { AcronymsRemoteDatasource(get()) }
factory<AcronymsRepository> { AcronymsDataRepository(get()) }
factory { GetAcronymDefinition(get(), get()) }
viewModel { AcronymsViewmodel(get()) }
}

View File

@@ -0,0 +1,29 @@
package dev.carlos.shortform.di
import dev.carlos.core.domain.network.RemoteClient
import dev.carlos.core.scheduler.Scheduler
import dev.carlos.core.scheduler.SchedulerProvider
import dev.carlos.shortform.data.ShortformDataRepository
import dev.carlos.shortform.data.cloud.ShortformRemoteSource
import dev.carlos.shortform.data.cloud.retrofit.ShortformRemoteDatasource
import dev.carlos.shortform.data.cloud.retrofit.ShortformService
import dev.carlos.shortform.domain.ShortformRepository
import dev.carlos.shortform.domain.GetShortformDefinition
import dev.carlos.shortform.viewmodels.ShortformViewmodel
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
val shortformModule = module {
single<Scheduler> { SchedulerProvider() }
single {
get<RemoteClient>().getClient(ShortformService::class.java)
}
factory<ShortformRemoteSource> { ShortformRemoteDatasource(get()) }
factory<ShortformRepository> { ShortformDataRepository(get()) }
factory { GetShortformDefinition(get(), get()) }
viewModel { ShortformViewmodel(get()) }
}

View File

@@ -5,11 +5,11 @@ import dev.carlos.core.extensions.runOnIo
import dev.carlos.core.scheduler.Scheduler import dev.carlos.core.scheduler.Scheduler
import io.reactivex.Single import io.reactivex.Single
class GetAcronymDefinition( class GetShortformDefinition(
private val acronymsRepository: AcronymsRepository, private val shortformRepository: ShortformRepository,
private val scheduler: Scheduler private val scheduler: Scheduler
) { ) {
fun getAcronymDefinition(acronym: String): Single<ShortformModel> { fun getShortformDefinition(shortform: String): Single<ShortformModel> {
return acronymsRepository.getAcronymDefinition(acronym).runOnIo(scheduler) return shortformRepository.getShortformDefinition(shortform).runOnIo(scheduler)
} }
} }

View File

@@ -4,6 +4,6 @@ import dev.carlos.shortform.data.models.ShortformModel
import io.reactivex.Flowable import io.reactivex.Flowable
import io.reactivex.Single import io.reactivex.Single
interface AcronymsRepository { interface ShortformRepository {
fun getAcronymDefinition(acronym: String): Single<ShortformModel> fun getShortformDefinition(acronym: String): Single<ShortformModel>
} }

View File

@@ -0,0 +1,4 @@
package dev.carlos.shortform.feature
class ShortformFragment {
}

View File

@@ -5,18 +5,18 @@ import dev.carlos.core.domain.network.RequestError
import dev.carlos.core.domain.network.RequestState import dev.carlos.core.domain.network.RequestState
import dev.carlos.core.viewmodel.RxViewModel import dev.carlos.core.viewmodel.RxViewModel
import dev.carlos.shortform.data.models.ShortformModel import dev.carlos.shortform.data.models.ShortformModel
import dev.carlos.shortform.domain.GetAcronymDefinition import dev.carlos.shortform.domain.GetShortformDefinition
import retrofit2.HttpException import retrofit2.HttpException
import java.net.UnknownHostException import java.net.UnknownHostException
class AcronymsViewmodel( class ShortformViewmodel(
private val GetAcronymsDefinition: GetAcronymDefinition private val getAcronymsDefinition: GetShortformDefinition
) : RxViewModel() { ) : RxViewModel() {
val acronymDefinition = MutableLiveData<RequestState>() val acronymDefinition = MutableLiveData<RequestState>()
fun fetchAcronymDefinition(acronym: String) { fun fetchAcronymDefinition(acronym: String) {
val disposable = GetAcronymsDefinition.getAcronymDefinition(acronym) val disposable = getAcronymsDefinition.getShortformDefinition(acronym)
.doOnSubscribe { acronymDefinition.postValue(RequestState.Loading) } .doOnSubscribe { acronymDefinition.postValue(RequestState.Loading) }
.subscribe(::handleSuccess, ::handleError) .subscribe(::handleSuccess, ::handleError)
compositeDisposable.add(disposable) compositeDisposable.add(disposable)