I'm not sure releasing a video a few hours before the Apple Event was a good idea but I released one covering getting the challenges from Firestore using the custom snapshot publisher created in the last video.

There was an interesting issue to think about where we need to get the user id for the logged in user. In our create challenge flow on initial app launch we sign the user in anonymously if there is no current user but we can't do that here because if a user's session expires (say after logging in with a social account) we don't want to sign them in anonymously and furthermore we have some logic in the app to switch to the landing view if the user gets logged out so I decided on only allowing the pipeline to continue if we have a user at this point otherwise the challenges won't be fetched.

Another thing to take into account is when there is an error we need to observe the challenges again as Firebase will stop listenening (and will clean up the listener for you) so I will have to add a retry button most likely on the challenge list screen. We can think about optimising/tidying the subscriptions later if we need to.