Size: a a a

Cicerone Chat (RUS)

2020 November 01

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Это будет сильно
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Ilya Gulya
Но надо сразу уточнить что у нас и навигационный граф не слишком сложный.
Там было всего пару моментов где пришлось заморочиться.
Сколько примерно экранов было?
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
Alexey Pushkarev
Сколько примерно экранов было?
34
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
Плюс 1 вложенный граф из 3х экранов
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
Кстати, @terrakok а не было идеи сделать Screen интерфейсом?
Нам понадобилось сериализовать скрины и сейчас чтоб обойти необходимость наследоваться от Screen мы сделали собственные скрины + скрин для интеграции с Cicerone.
Выглядит так, что ничего не мешает сделать Screen интерфейсом + сделать дефолтную базовую имплементацию с дефолтным screenKey.
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
источник

ЕК

Евгений Кузовкин... in Cicerone Chat (RUS)
А для чего сериализовать, если не секрет?
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
Ilya Gulya
Кстати, @terrakok а не было идеи сделать Screen интерфейсом?
Нам понадобилось сериализовать скрины и сейчас чтоб обойти необходимость наследоваться от Screen мы сделали собственные скрины + скрин для интеграции с Cicerone.
Выглядит так, что ничего не мешает сделать Screen интерфейсом + сделать дефолтную базовую имплементацию с дефолтным screenKey.
легко. после переноса на котлин пропустил этот момент :)
я тоже за интерфейсы
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
Евгений Кузовкин
А для чего сериализовать, если не секрет?
Ну мы таким образом делаем флоу.
Допустим фича требует аутентификации.
У нас есть AuthFlowFragment, он умеет разрешить данную зависимость и в результате выполнить необходимое действие.
У нас он умеет выполнять Cicerone команды либо открывать Cicerone экраны.
Вместо того чтобы открывать непосредственно экран фичи, мы открываем FeatureFlow который уже открывает фичу после аутентификации. Пример на скрине.
источник

ЕК

Евгений Кузовкин... in Cicerone Chat (RUS)
Окей, я об этом и подумал, что решал бы через какой-нибудь сериализуемый sealed FeatureFlowBundle. Но, раз скоро будут интерфейсы, то не актуально)
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
Ну я хотел минимизировать человеческий фактор по максимуму
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
Чтоб не приходилось никаких мапперов поддерживать или чего-то подобного
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
Собственно сейчас единственное ограничение у нас это то что аргументы экрана должны быть сериализуемы.
Это и так необходимо, так что всё достаточно аккуратно вышло, по факту.
источник

IG

Ilya Gulya in Cicerone Chat (RUS)
Да и то, сериализуемы должны быть только аргументы тех экранов, которые задействованы в каком-то Flow
источник

ES

Egor Sigolaev in Cicerone Chat (RUS)
@terrakok Я правильно понимаю, что повесив на роутер дата листенер в одном классе и вызвав сет резалт в другом, колбек дёрнется? Или только при вызове exit() у предыдущего фрагмента? Этот листенер как глобальная лайвдата, у которой можно вызывать пост где угодно?
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
как глобальная лайвдата - да.
но после отправки результата листенер очищается
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
то есть только сингл шот и все
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
я не стал делать метод exitWithResult для гибкости, можно не выходить, а реплейсить, завершать цепочку и что угодно
источник

ES

Egor Sigolaev in Cicerone Chat (RUS)
Konstantin Tskhovrebov
как глобальная лайвдата - да.
но после отправки результата листенер очищается
Понял, спасибо. Ну вот у меня такой кейс. В одном из фрагментов я должен перейти на другой (это таб фрагмент) и соответственно поменять выделенный таб на bottom navigation view. Вот думаю как такое сделать.
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
bottom navigation - не совсем навигация, это просто три (или сколько там у вас) контейнера на экране. переключение между ними - это как смена экрана в вьюпейджере. отвечает за это тот экран, который содержит табы
источник