2017-01-17 6 views
1

У меня есть пользовательские процессы Firebase auth (Auth0 => Firebase), поэтому я запускаю всю свою логику входа в систему с использованием TypeScript с Svelte, как только у меня есть успешный токен JWT, либо из sessionStorage, либо из нового входа, я загружаю приложение Elm, отправляя ему несколько JWT и информацию профиля через флаг. Это SPA, с маршрутами и страницами, все компоненты и работа отлично.Внешняя связь Firebase с Elm через порты?

Моя единственная реальная проблема сейчас, когда дело доходит до firebase, конечно, ElmFire ​​существует, но как я могу просто дать ему активный токен аутентификации и т. Д. И без загрузки Firebase для JS, а также ElmFire ​​для Elm, это просто кажется как и слишком много Kb.

Есть ли хороший и эффективный способ, чтобы Elm port выбрал «hey listen this ref», с «hey Elm, у меня есть новые данные для вас для этого ref». Порты сообщать JS для прослушивания и подписки, чтобы сообщить Элму о новых данных. Без порта для каждого слушателя и подписки на каждый обратный вызов данных.

В идеале, я хотел бы, чтобы мое обновление отправило CMD, который принимает обратный вызов Msg, чтобы обновить функцию для вызова и ссылку. Таким образом, я могу сохранить это в списке какого-то рода, и когда я получу новую полезную нагрузку от JS, я могу прокрутить свой список, чтобы найти элемент, который соответствует ref, выполнить обновление, отправить Msg с помощью string, поэтому декодирование происходит при обновлении страниц.

Кто-то не может отвлечь этот вопрос на что-то более общее. Почувствуйте, что этот вопрос - это нечто большее, чем у людей.

+0

Все, что вы хотите сделать, может быть выполнено с помощью портов и подписки. (Обратите внимание, что elmfire не обновлялся до 0,18.) –

+0

@SimonH, но есть ли способ прослушать несколько ссылок ref с одним портом/sub? –

ответ

1

Проблема в том, что порт/суб должен быть введен в состав Elm.

Таким образом, один порт/sub с одним аргументом может прослушивать несколько ссылок, если все они имеют один и тот же тип.

Если нет, вы можете определить порт/sub с несколькими аргументами, по одному для каждого типа данных, которые хотите обменять, и передать какие-либо конкретные данные в правильный аргумент. Другие аргументы будут равны нулю.