Sometimes I just use livedata for all, is it bad or wrong
Thank you for the question Jimmy leo. My first implementation of UDF used only LiveData. Technically this pattern worked, but is not optimal. LiveData is launched from the view lifecycle and requires the view to observe the LiveData in order for data to be emitted from the cold observable.
You may run into issues with processes that are not directly related to the view and are launched from the business logic layer (ViewModel). In addition, if there is a logic flow launched from the view, and additional transformations need to be applied,
switchMap's are required to return data prior to being observed in the view with LiveData. This can get complicated for more advanced transformations and merging data with
MediatorLiveData, whereas with Kotlin Flows you can launch directly from the ViewModel and use the built-in operators to transform the data in a linear and readable format.