Orhan Tozan
03/19/2020, 2:35 PMprivate val _selectedUserIds = ConflatedBroadcastChannel<List<Int>>(emptyList())
private val selectedUserIds: Flow<List<Int>> = _selectedUserIds.asFlow()
A onSaveButtonClick()
method inside the class should send a network call with the value of selectedUserIds
Should I get it's value by using the .value
of the ConflatedBroadcastChannel
or should I launch a coroutine and call .collect()
on the Flow
? What's the difference?kevin.cianfarini
03/19/2020, 7:25 PMOrhan Tozan
03/19/2020, 7:25 PMkevin.cianfarini
03/19/2020, 7:26 PMOrhan Tozan
03/19/2020, 7:26 PMkevin.cianfarini
03/19/2020, 7:27 PMkevin.cianfarini
03/19/2020, 7:27 PMOrhan Tozan
03/19/2020, 7:27 PMOrhan Tozan
03/19/2020, 7:28 PMkevin.cianfarini
03/19/2020, 7:28 PMkevin.cianfarini
03/19/2020, 7:28 PMonSaveButtonClick
in the view or the viewmodel?Orhan Tozan
03/19/2020, 7:28 PMOrhan Tozan
03/19/2020, 7:28 PMkevin.cianfarini
03/19/2020, 7:29 PMhandleUSerIds(ids: list<Int>)
kevin.cianfarini
03/19/2020, 7:29 PMkevin.cianfarini
03/19/2020, 7:29 PMOrhan Tozan
03/19/2020, 7:29 PMkevin.cianfarini
03/19/2020, 7:30 PMonSaveButtonClick
Orhan Tozan
03/19/2020, 7:30 PMOrhan Tozan
03/19/2020, 7:31 PMkevin.cianfarini
03/19/2020, 7:31 PMkevin.cianfarini
03/19/2020, 7:31 PMOrhan Tozan
03/19/2020, 7:32 PMkevin.cianfarini
03/19/2020, 7:33 PMviewmodel then updates the selectedUserIds with the conflatedbroadcastchannel.offer()Then hook into here when you have the value. When the viewmodel is offering that value to the channel, also do a network request
Orhan Tozan
03/19/2020, 7:34 PMkevin.cianfarini
03/19/2020, 7:35 PMkevin.cianfarini
03/19/2020, 7:35 PMOrhan Tozan
03/19/2020, 7:35 PMkevin.cianfarini
03/19/2020, 7:35 PMkevin.cianfarini
03/19/2020, 7:36 PMkevin.cianfarini
03/19/2020, 7:36 PMOrhan Tozan
03/19/2020, 7:36 PMOrhan Tozan
03/19/2020, 7:37 PMOrhan Tozan
03/19/2020, 7:38 PMkevin.cianfarini
03/19/2020, 7:38 PMcollect
is going to keep collecting the flow until it's closed. Also, collect wouldn't produce an element for you until another value is sent to the channel.Orhan Tozan
03/19/2020, 7:40 PMOrhan Tozan
03/19/2020, 7:40 PMOrhan Tozan
03/19/2020, 7:40 PMkevin.cianfarini
03/19/2020, 7:41 PMkevin.cianfarini
03/19/2020, 7:41 PMkevin.cianfarini
03/19/2020, 7:43 PMOrhan Tozan
03/19/2020, 7:58 PMkevin.cianfarini
03/19/2020, 7:59 PMOrhan Tozan
03/19/2020, 8:04 PMkevin.cianfarini
03/19/2020, 8:05 PMThe terminal operator that returns the first element emitted by the flow and then cancels flow’s collection. Throws NoSuchElementException if the flow was empty.
kevin.cianfarini
03/19/2020, 8:05 PMkevin.cianfarini
03/19/2020, 8:05 PMkevin.cianfarini
03/19/2020, 8:05 PMOrhan Tozan
03/19/2020, 8:05 PMkevin.cianfarini
03/19/2020, 8:05 PMOrhan Tozan
03/19/2020, 8:06 PMOrhan Tozan
03/19/2020, 8:06 PMkevin.cianfarini
03/19/2020, 8:07 PMOrhan Tozan
03/19/2020, 8:07 PMYes. counter.first() does compute and return the current value. I'll mention it in the docs.
Orhan Tozan
03/19/2020, 8:07 PMkevin.cianfarini
03/19/2020, 8:07 PMOrhan Tozan
03/19/2020, 8:08 PMkevin.cianfarini
03/19/2020, 8:10 PMkevin.cianfarini
03/19/2020, 8:11 PMkevin.cianfarini
03/19/2020, 8:11 PMOrhan Tozan
03/19/2020, 8:12 PMkevin.cianfarini
03/19/2020, 8:12 PMkevin.cianfarini
03/19/2020, 8:13 PMval value get() = channel.value