CHANGES
4.0.1
- Используется url-join для конкатенации урлов и
endpoint
может больше на заканчиваться обязательно на/
- Используется url-join для конкатенации урлов и
4.0.0
- Теперь все методы у моделей и хранилищ выкидывают ошибки, а не проглатывают их
Install
Для работы с redline-mobx
вам надо установить следующие пакеты:
mobx
mobx-state-tree
@nestjsx/crud-request
RedlineStores
Аггрегатор всех хранилищ в вашем проекте, схема работы выглядит следующим образом:
-
Вы создаете модели
-
Создаете хранилища с помощью
createDetailStore
илиcreateListStore
(не обязательно) -
Создаете аггрегатор хранилищ
;;const stores = logger axios snapshots;stores;
Methods
RedlineStores.add({name: string, snapshots: {}, type, additional_envs })
- метод для добавления новых хранилищRedlineStores.getStore(name: string)
- найти хранилище по его имениRedlineStores.getStores()
- получить все сторыRedlineStores.toJS()
- Вернуть содержимое(сторы) какjs-object
RedlineStores.toJSON()
- Вернуть содержимое какjson-string
createModel
Создается тип для модели, надо это потому, что сейчас схема такая что у модели есть дополнительные методы:
some_model_instance.delete()
some_model_instance.update(values: any)
Для того чтобы создать новую модель надо сделать что-то такое:
;; PostModel = ;
модели расширяют стандартную модель BaseModel
имеющую следующие поля(она примитивная):
id
created_at
updated_at
createDetailStore
Создается тип для хранения одной записи какого-то типа.
;
Methods
DetailStore.reset()
- Сбросить состояниеDetailStore.getOne(id_slug: string, {qparams?: CreateQueryParams, axios_params?: AxiosRequestConfig })
- Сделать запрос на бэкDetailStore.create(values: any)
- Отправляет запрос на создание новой записи на бэк и из того что бэк вернет попытается получить запись(item
)
createListStore
Создается тип для хранения списка записей
;
Methods
ListStore.reset()
- Сбросить состояниеListStore.getList({qparams?: CreateQueryParams, axios_params?: AxiosRequestConfig, loadmore?: boolean })
- Сделать запрос на бэк
createFormStore
Почти бесполезная функция, но всяго удобнее чем каждый раз писать обращение к axios
из контекста и.т.п
FormStore.sendOrder(data, ...)
- Отправить форму с предоставленными данными(data
)
Статусы меняются в
sending
|error
|ready
ВАЖНО ошибки при запросе прокидываются выше.
;;order_form.sendOrder;
createAuthStore
Создает стору для авторизации, ожидает в ответ от сервера, при успешном логине токен, который будет сохранен в Cookies.
; ; AuthStore.getMe;AuthStore.user; // User object
Methods
AuthStore.getMe()
- Получит пользователя от сервера и сохранит его в полеuser
AuthStore.login(credentials)
- Делает запрос для осуществления логина,credentials
передаются как json в теле POST-запроса наlogin_endpoint
. Ожидается, что сервер вернетtoken
, который будет сохранен в куки.AuthStore.logout()
- Удалит запис в куках и почистит полеuser
в самом хранилище
Additional
AuthStore.setUser()
- Установить объект пользователя или обновить данные о немAuthStore.resetUser()
- Удалить текущего юзера (AuthStore.user
)AuthStore.setToken()
- Установить токен в кукиAuthStore.resetToken()
- Удалить токен из кук
Views
AuthStore.isAuthenticated
- Геттер который ожидает статус сторы какis_ready
и проверяет наличие информации о пользователе в полеuser
// ....if auth_store.isAuthenticated // ....