Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Logcat
- I/PointRepository$saveEvent: EventDto(id=c2b7cfd8-9a80-4e81-99e4-5f2a4a4fd13c, event=Event(type=hazard, message=, location=LatLon(lat=0.0, lon=0.0)), date=Thu May 24 17:02:45 GMT+03:00 2018)
- I/PointRepository$saveEvent: EventDto(id=c2b7cfd8-9a80-4e81-99e4-5f2a4a4fd13c, event=Event(type=hazard, message=, location=LatLon(lat=0.0, lon=0.0)), date=Thu May 24 17:02:45 GMT+03:00 2018)
- I/PointRepository$saveEvent: Completed
- // Presenter
- fun onReportClicked(id: Int, text: String) {
- interactor.createEvent(id, text).subscribe({ router.exit() })
- }
- // Interactor
- fun createEvent(id: Int, message: String): Completable {
- return delegate.getCameraPositionChanges()
- .flatMapSingle { Single.just(it) }
- .map { Event(strings.getEventType(id), message, it.target) }
- .flatMapCompletable { repository.saveEvent(it) }
- .doOnComplete {
- Timber.i("Completed")
- }
- .doOnTerminate {
- Timber.i("Terminated")
- }
- .observeOn(schedulers.ui())
- }
- // Repository
- fun saveEvent(event: Event): Completable {
- return Single.fromCallable { event }
- .observeOn(schedulers.computation())
- .map(eventsMapper::mapToDto)
- .doOnSuccess { Timber.i(it.toString()) }
- .observeOn(schedulers.io())
- .flatMap { this.saveToDatabaseAndSchedule(it) }
- .doOnSuccess { Timber.i(it.toString()) }
- .toCompletable()
- .doOnComplete { Timber.i("Completed") }
- .observeOn(schedulers.ui())
- }
- // Repository#saveToDabaseAndSchedule
- private fun saveToDatabaseAndSchedule(dto: EventDto): Single<EventDto> {
- return Single.fromCallable {
- val session = sessionStore.getCurrentSession()
- val entity = eventsMapper.mapToEntity(dto, session)
- eventDao.insert(entity)
- works.scheduleEventsSync()
- return@fromCallable dto
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement