ConflatedBroadcastChannel is now deprecated - please replace with StateFlow (or at least add a big 'ol callout in the text warning people about the deprecation!)
It would also be great if the LiveData were replaced with StateFlow. If the LiveData does stay, it would be helpful to remove or minimize the LiveData-focused steps (6 and 7) - the Flow-related steps felt much higher-value and I wanted to get into them earlier on!
There's a typo in Step 11 "create a flow that calls a single function" which causes it to not compile.
There's a bug in Step 14 - the onCompletion call should be replaced with an onEach.
Several of us had issues in Step 14 because our code was still calling into launchDataLoad, which has competing spinner-state-updating logic. This obscured the bug mentioned above and made it harder to debug. I assume we were supposed to remove the launchDataLoad calls from the grow zone setter/clearer, but we didn't see that mentioned in the instructions.
The final code in the viewmodel felt a tad cluttered. Personally I would move the growZone if-elses inside the repository, so the repository API was like this:
fun getPlantsFlow(growZone: GrowZone)
fun updateCache(growZone: GrowZone)
That way the map operations in the viewmodel would be very succinct so people could focus on the flow operator sequences.
Suggestions received from private DMs: