Загрузка пользовательских маршрутов из адресной строки с polymirefire

У меня есть приложение из полимерного стартового комплекта с несколькими вспомогательными маршрутами и различными типами записей, связанных с этими маршрутами. Пример URL может быть //myapp/records/{recordId}/subRoute, Я хотел бы, чтобы состояние приложения сохранялось при перезагрузке. Я пытался так:

<app-route
    route="{{route}}"
    pattern="/records/:recordId"
    data="{{routeData}}"
    tail="{{subroute}}"
></app-route>
<app-route
    route="{{subroute}}"
    pattern="/:page"
    data="{{subRouteData}}"
></app-route>

<firebase-document
    id="recordsDocument"
    path="/records/[[routeData.recordId]]"
    data="{{record}}"
></firebase-document>

...

<script>
  routePageChanged(page) { // takes subRouteData.page
    if (!user) {
      set('page', 'login'),
    } else if (!routeData.recordId) {
      set('page', 'start')
    } else {
      set('page', page)
    }
  }
</script>

Но в этих условиях браузер всегда будет находиться на странице входа в систему, так как routePageChanged вызывается до того, как firebase ответит пользователю. Как я могу заставить мое приложение корректно загружаться из маршрутов адресной строки, которые зависят от наличия аутентифицированной базы данных? user когда этот объект не существует, пока не отвечает firebase?

1 ответ

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

В firebase-auth есть пользовательский объект:

 user: {
   type: Object,
   readOnly: true,
   value: null,
   notify: true
 },

Вы можете прослушать изменения на этом объекте.

Альтернативный способ - обработать это так:

this.$.auth.signInWithPopup()
.then(function(response) {// successful authentication response here})
.catch(function(error) {// unsuccessful authentication response here});

В случае успеха вышеуказанного кода, пользовательский объект должен быть установлен, вы можете проверить исходную маршрутизацию с этим.

Я не могу думать ни о каких других вариантах сверху моей головы.

Кроме того, я должен рекомендовать документы, конечно: P

https://github.com/firebase/polymerfire/blob/master/firebase-auth.html

Другие вопросы по тегам