Постановка задачи: разработать чат с текстовыми сообщениями
Схема
В заголовке требуется передавать Bearer токен для текущего пользователя
GET api/messages/{channel}
Параметры:
from - минимальный id сообщения
Общие концепции AR контента
1
Поддерживаемые платформы:
Все iOS устройства с iOS 12+
Все Android устройства с Android 7+ и Google Services в 3D режиме
Android устройства из списка https://developers.google.com/ar/discover/supported-devices в AR режиме
2
Так как в данный момент AR контент будет отображаться только в мобильных приложениях, то возможность просматривать AR контент не должна быть обязательной для прохождения курса. Дополненная реальность призвана улучшать пользовательский опыт и помогать усваивать новый материал.
Мы используем нашу архитектуру уже на протяжении нескольких лет. Как показывает практика одним из самым сложных аспектов этого подхода является presentation слой. За время работы я повидал множество различный вариаций и даже мутаций исходного подхода с явным состоянием, в которых терялись основные его свойства и преимущества. В данном цикле статей мы вместе поэтапно построим презентер для достаточно нетривиального экрана, тем самым пролив свет на многие темные участки state подхода.
Общая информация
В этом разделе поговорим об общих концепциях, связанных с нашей реализацией presentation слоя.
Основы презентеров
Начнем с того, что вспомним, на чем базируются наши презентеры. Все презентеры в наших проектах наследуются от класса PresenterBase (пакет presentation-base), с типовым параметром V означающим тип view контракта.
PresenterBase
import android.os.Bundle
## 1
```kotlin=
fun getItems(): Observable<List<Item>> =
Observable.create { emitter ->
emitter.onNext(getItemsBlocking())
emitter.onComplete()
}
@Throws(IOException::class)
fun getItemsBlocking(): List<Item> = ...
```
## 2
Допустим у нас есть следующий код:
```kotlin=
class Course(val id: Long)
class CourseContent(val sections: List<String>)
interface CourseRepository {
fun getCourse(courseId: Long): Maybe<Course>
}
interface CourseContentRepository {
fu
# Android Architecture
## Intro
Project architecture based on CLEAN architecture with feature based package structure. This approach helps to retain code consistency for a large code base and provides ability for splitting up project in modules.
## Layer structure
Code consists of 6 layers:
- Cache
- Remote
- Data
- Domain
- Presentation
- View
The dependency structure is following:

For now all layers lay down in the same gradle module bu