Size: a a a

2021 January 22

Е

Евгений in pro.elixir
Бесит, что в LiveView нет никаких аналогов пайплайнов. Придется городить свой лисапед на макросах.
источник

RK

Roman Kolesnev in pro.elixir
Евгений
Бесит, что в LiveView нет никаких аналогов пайплайнов. Придется городить свой лисапед на макросах.
пайплайнов для чего?
источник

Е

Евгений in pro.elixir
Roman Kolesnev
пайплайнов для чего?
Для обработки параметров.
Допустим у меня кучка LiveView для которых нужно выполнять одинаковую обработку в mount и handle_params
Для обычных View можно сделать соответствующий плаг и засунуть его в роутер.
источник

RK

Roman Kolesnev in pro.elixir
Евгений
Для обработки параметров.
Допустим у меня кучка LiveView для которых нужно выполнять одинаковую обработку в mount и handle_params
Для обычных View можно сделать соответствующий плаг и засунуть его в роутер.
хмм. так LiveView вроде тоже часть пайплайна. Или там неудобно инжектить?
источник

RK

Roman Kolesnev in pro.elixir
А, ты про фичу когда plug можно сразу в контроллер воткнуть?
источник

Е

Евгений in pro.elixir
Roman Kolesnev
хмм. так LiveView вроде тоже часть пайплайна. Или там неудобно инжектить?
Не совсем, assigns прописанные в плагах не попадают в LiveView. Попадают только сессии.
источник

IK

Ihor Katkov in pro.elixir
Евгений
Не совсем, assigns прописанные в плагах не попадают в LiveView. Попадают только сессии.
так в этом же вся задумка. Ты передаешь в LV только то что нужно
источник

Е

Евгений in pro.elixir
Ihor Katkov
так в этом же вся задумка. Ты передаешь в LV только то что нужно
Ну так то, что прописали в assigns плаги это и есть то что мне нужно.
источник

IK

Ihor Katkov in pro.elixir
я думаю, что тут лучше быть explicit
источник

IK

Ihor Katkov in pro.elixir
как по мне
источник

Е

Евгений in pro.elixir
Но дело даже не в этом. Дело в повторении кода. Допустим мне нужно достать пользователя по его id, который болтается в сессии.
Нужно в mount прописать что-то вроде
assign(socket, user: create_user(session["user_id"]))
И так во всех LiveView, вместо одного плага в раутере.
источник

IK

Ihor Katkov in pro.elixir
так сделай high order function тут
источник

IK

Ihor Katkov in pro.elixir
типа live_with_user
источник

Е

Евгений in pro.elixir
Ihor Katkov
так сделай high order function тут
Какая разница, все равно придется пихать в каждый mount в каждом LiveView
источник

Е

Евгений in pro.elixir
Нет возможности сделать некий глобальный mount для группы LiveView
Есть только кривая возможность прописать его в MyApp.Web, прямо в функции live_view, чтобы потом при использовании use MyApp.Web, live_view оно бы подключало этот mount
Но это говно решение.
источник

IK

Ihor Katkov in pro.elixir
не вижу проблемы, тебе же не обязательно прям в mount это делать. Сделай функции обертку
conn
|> live_with_user()
|> live(YourAwesomeLiveView)

где live_with_user передает уже зафетченного юзера
источник

YS

Yuri S. in pro.elixir
Евгений
Какая разница, все равно придется пихать в каждый mount в каждом LiveView
мне кажется, в этом вся и суть, чтобы явно написать что вам нужно, а не определять где-то там общее поведение
источник

Е

Евгений in pro.elixir
Ihor Katkov
не вижу проблемы, тебе же не обязательно прям в mount это делать. Сделай функции обертку
conn
|> live_with_user()
|> live(YourAwesomeLiveView)

где live_with_user передает уже зафетченного юзера
Это куда такое вставлять? В роутер? O_o
источник

IK

Ihor Katkov in pro.elixir
а, там же есть routable live view
источник

AN

Alexey Novoselov in pro.elixir
Евгений
Это куда такое вставлять? В роутер? O_o
источник