Skip to content

Commit

Permalink
Merge pull request #56 from SSU-Plector/feat/#51-add-progress-feature
Browse files Browse the repository at this point in the history
Feat/#51 add progress feature
  • Loading branch information
kangyuri1114 authored Aug 6, 2024
2 parents 879c1e4 + 6bb35d6 commit d88666f
Show file tree
Hide file tree
Showing 12 changed files with 839 additions and 169 deletions.
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

0 comments on commit d88666f

Please sign in to comment.