Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/#51 add progress feature #56

Merged
merged 4 commits into from
Aug 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,19 @@ import android.os.Bundle
import android.util.Log
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.google.android.material.tabs.TabLayout
import com.zucchini.ai_members.matching.MatchingResultFragment
import com.zucchini.ai_members.pm.progress.ProgressMeetingFragment
import com.zucchini.ai_members.pm.progress.StartProgressMeetingFragment
import com.zucchini.ai_members.pm.summary.MeetingSummaryFragment
import com.zucchini.feature.projects.R
import com.zucchini.feature.projects.databinding.ActivityAiPmBinding
import com.zucchini.uistate.AiPmLoadingFragment
import com.zucchini.uistate.MatchingLoadingFragment
import com.zucchini.uistate.UiState
import com.zucchini.view.showShortToast
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
Expand All @@ -31,6 +38,7 @@ class AiPmActivity : AppCompatActivity() {

clickTabListner()
resultSummarySuccess()
collectMatchingResult()
}

private fun clickTabListner() {
Expand Down Expand Up @@ -89,4 +97,33 @@ class AiPmActivity : AppCompatActivity() {
.replace(binding.vpAiPm.id, StartProgressMeetingFragment())
.commit()
}

private fun collectMatchingResult() {
viewModel.progressMeetingResultData.flowWithLifecycle(lifecycle).onEach { uiState ->
when (uiState) {
is UiState.Initial -> {
// 초기 ν™”λ©΄
}
is UiState.Loading -> {
// λ‘œλ”© ν™”λ©΄
supportFragmentManager
.beginTransaction()
.replace(binding.vpAiPm.id, AiPmLoadingFragment())
.commit()
}
is UiState.Success -> {
// 맀칭 κ²°κ³Ό ν™”λ©΄
supportFragmentManager
.beginTransaction()
.replace(binding.vpAiPm.id, StartProgressMeetingFragment())
.commit()
}
is UiState.Failure -> {
showShortToast(getString(R.string.fail_to_progress))
}
}


}.launchIn(lifecycleScope)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ constructor(

private val _progressMeetingCheckbox = MutableStateFlow(ProgressMeetingInfo())

private val _progressMeetingResultData = MutableStateFlow<ProgressMeeting?>(null)
private val _progressMeetingResultData = MutableStateFlow(UiState.Initial as UiState<ProgressMeeting>)
val progressMeetingResultData = _progressMeetingResultData.asStateFlow()

private val _meetingTotalTime = MutableStateFlow(0)
Expand Down Expand Up @@ -73,12 +73,14 @@ constructor(

fun sendProgressMeetingInfo() {
viewModelScope.launch {
_progressMeetingResultData.value = UiState.Loading

aiPmRepository
.getProgressMeetingData(
_progressMeetingInfo.value,
_progressMeetingCheckbox.value,
).onSuccess {
_progressMeetingResultData.value = it
_progressMeetingResultData.value = UiState.Success(it)
_summarySuccess.value = true

Log.d("AiPmViewModel", "progressMeetingResultData: $it, progressIntroduce: ${it.introduceMyself}")
Expand All @@ -94,6 +96,7 @@ constructor(
}.onFailure {
Timber.d(it)
_summarySuccess.value = false
UiState.Failure(it.message ?: "Error")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.zucchini.ai_members.pm.AiPmViewModel
import com.zucchini.domain.model.ai.ProgressMeetingInfo
import com.zucchini.domain.model.ai.SetProgressMeeting
import com.zucchini.feature.projects.databinding.FragmentProgressMeetingBinding
import com.zucchini.view.hideKeyboard

class ProgressMeetingFragment : Fragment() {
private var _binding: FragmentProgressMeetingBinding? = null
Expand All @@ -23,6 +24,7 @@ class ProgressMeetingFragment : Fragment() {
savedInstanceState: Bundle?,
): View {
_binding = FragmentProgressMeetingBinding.inflate(inflater, container, false)
clickHideKeyboard()
return binding.root
}

Expand All @@ -49,6 +51,7 @@ class ProgressMeetingFragment : Fragment() {
val meetingTimeInt = if (meetingTime.isEmpty()) 0 else meetingTime.toInt()
val participantsInt = if (participants.isEmpty()) 0 else participants.toInt()


val progressMeetingCheckbox =
ProgressMeetingInfo(
introduceMyself = binding.cbAiPmMeetingProgressIntroduceMyself.isChecked,
Expand All @@ -69,5 +72,11 @@ class ProgressMeetingFragment : Fragment() {
viewModel.updateProgressMeetingCheckbox(setProgressMeetingInfo, progressMeetingCheckbox)
}

private fun clickHideKeyboard() {
binding.root.setOnClickListener {
hideKeyboard()
}
}

private fun minuteToMs(minute: Int) = minute * 60000
}
Loading
Loading