SwiftUI firebase - изменить displayName пользователя - как мгновенно обновить sh view - PullRequest
0 голосов
/ 16 февраля 2020

Я создал базовое c приложение для входа в firebase, используя swiftui (используя это руководство: https://www.youtube.com/watch?v=FhLEwqyVSjE). Все работает как надо.

В моем ContentView.swift я добавил TextField для изменения отображаемого имени пользователя. Чтобы сделать это, я добавил веселье changeDisplayName c в SessionStore.swift с такими логами c:

let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = displayName
changeRequest?.commitChanges { (error) in
  // ...
}

Веселье c вызывается кнопкой в ​​моем ContentView. Изменение displayName работает также, но мой ContentView по-прежнему сохраняет старое displayName, пока я не перезапущу приложение, потому что только тогда ContentView снова вызывает session.listen() и получает новое displayName из SessionStore.

Чтобы это исправить, я Вызывайте session.unbind(), а затем session.listen() в моем ContentView каждый раз, когда changeDisplayName fun c в моем SessionStore вызывается моим ContentView и не возвращает ошибку. Это работает, и мой ContentView перезагружается с новым displayName при каждом его изменении.

Это хорошая практика, или я упускаю более чистое решение этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...