@@ -35,7 +35,6 @@ import com.skydoves.chatgpt.feature.chat.worker.ChatGPTMessageWorker.Companion.D
3535import com.skydoves.chatgpt.feature.chat.worker.ChatGPTMessageWorker.Companion.DATA_MESSAGE_ID
3636import com.skydoves.chatgpt.feature.chat.worker.ChatGPTMessageWorker.Companion.DATA_SUCCESS
3737import com.skydoves.chatgpt.feature.chat.worker.ChatGPTMessageWorker.Companion.MESSAGE_EXTRA_CHAT_GPT
38- import com.skydoves.viewmodel.lifecycle.viewModelLifecycleOwner
3938import dagger.hilt.android.lifecycle.HiltViewModel
4039import io.getstream.chat.android.client.ChatClient
4140import io.getstream.chat.android.models.Message
@@ -47,6 +46,7 @@ import javax.inject.Inject
4746import kotlinx.coroutines.flow.MutableStateFlow
4847import kotlinx.coroutines.flow.SharingStarted
4948import kotlinx.coroutines.flow.StateFlow
49+ import kotlinx.coroutines.flow.collectLatest
5050import kotlinx.coroutines.flow.filter
5151import kotlinx.coroutines.flow.map
5252import kotlinx.coroutines.flow.stateIn
@@ -93,20 +93,20 @@ class ChatGPTMessagesViewModel @Inject constructor(
9393 val workRequest = buildGPTMessageWorkerRequest(text, lastGptMessage)
9494 workManager.enqueue(workRequest)
9595
96- val workInfo = workManager.getWorkInfoByIdLiveData(workRequest.id)
97- workInfo.observe(viewModelLifecycleOwner) {
98- if (it.state == WorkInfo .State .SUCCEEDED ) {
99- val gptMessageText = it.outputData.getString(DATA_SUCCESS )
100- val gptMessageId = it.outputData.getString(DATA_MESSAGE_ID )
101- streamLog { " gpt message worker success: $gptMessageId $gptMessageText " }
102- messageItemSet.value - = text
103- } else if (it.state == WorkInfo .State .FAILED ) {
104- val error = it.outputData.getString(DATA_FAILURE ) ? : " "
105- streamLog { " gpt message worker failed: $error " }
106- messageItemSet.value - = messageItemSet.value
107- mutableError.value = error
96+ workManager.getWorkInfoByIdFlow(workRequest.id)
97+ .collectLatest {
98+ if (it.state == WorkInfo .State .SUCCEEDED ) {
99+ val gptMessageText = it.outputData.getString(DATA_SUCCESS )
100+ val gptMessageId = it.outputData.getString(DATA_MESSAGE_ID )
101+ streamLog { " gpt message worker success: $gptMessageId $gptMessageText " }
102+ messageItemSet.value - = text
103+ } else if (it.state == WorkInfo .State .FAILED ) {
104+ val error = it.outputData.getString(DATA_FAILURE ) ? : " "
105+ streamLog { " gpt message worker failed: $error " }
106+ messageItemSet.value - = messageItemSet.value
107+ mutableError.value = error
108+ }
108109 }
109- }
110110 }
111111 }
112112
0 commit comments