2gis / slot

JavaScript фреймворк, позволяющий быстро и просто создавать модульные изоморфные приложения.
http://2gis.github.io/slot
BSD 2-Clause "Simplified" License
86 stars 10 forks source link

Move implicit changes to state #233

Closed Trufi closed 8 years ago

Trufi commented 8 years ago

Проблема: при переходе по истории передается только state, а implicitChanges никак не меняются, хотя по сути являются также состоянием приложения.

Минус пулл-реквеста в том, что теперь implicitChanges также будут попадать в диффы.

myshov commented 8 years ago

:+1:

ktoto commented 8 years ago

А оно точно надо? А то как-то странно это выглядит.

Trufi commented 8 years ago

Ну сейчас весь механизм финалайзера не работает в случае, если были сделаны переходы по истории.

ovvost commented 8 years ago

:+1:

RrredHead commented 8 years ago

:+1:

fobos commented 8 years ago

Пока у меня есть сомнения что правильно помещать что-то в объект стейта. Нужно подумать.

fobos commented 8 years ago

Как минимум два метода StateApi.prototype.assign и StateApi.prototype.defaults теперь могут потенциально привести к ошибкам

Trufi commented 8 years ago

В эти два метода можно добавить проверку на добавление обязательных полей в стейте.

fobos commented 8 years ago

Пока я вижу 3 варианта решения и оба не простые

  1. Оставить как было раньше и сделать так, чтобы implicitChanges также передавались в истории через historyAPI.
  2. Оставить текущее решение, но свойство state сделать не простым литералом, а кастомным объектом у которого есть дополнительное хранилище в виде implicitChanges. Надо добавить метод, который будет преобразовывать этот объект в такой литерал как сейчас для сохранения и передачи по истории, ну и в обратную сторону. И проверить как это всё используется везде. 3*. Подумать как вообще без этого обойтись.
ctizen commented 8 years ago

А вы не думаете, что признак того, кем именно скрыт дашборд (юзером или датавьювером, грубо говоря) - это тоже просто обычная переменная в стейте, на которую дашборду и следует ориентироваться? И можно будет выгасить все эти странные имплиситы, которые, помнится, чисто для одного дашборда и впиливались.

fobos commented 8 years ago

@heilage-nsk именно про это и 3 пункт. У меня тоже желание это выпилить полностью ибо выглядит ужасно.

ovvost commented 8 years ago

Все несколько сложнее (не просто ключик дашборда), чем вам кажется, вот список имплиситов: https://github.com/2gis/online4/blob/master/components/appState/state/finalizer/places.js#L53

ctizen commented 8 years ago

Окей, не один ключик дашборда, а несколько х) Некоторые кстати на грым ориентируются и выпилятся скоро. Остальные вполне могут ориентироваться на некоторые дополнительные флаги стейта.