From 975c2cc9f6318957eadcf44335593592122ea723 Mon Sep 17 00:00:00 2001 From: sanjeok77 Date: Fri, 13 Mar 2026 00:02:27 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=97=B0=EC=B0=A8/=EB=B0=98=EB=85=84=20?= =?UTF-8?q?=EC=B5=9C=EC=B4=88=20=EC=A0=81=EC=9A=A9=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=EB=B0=8D=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - setOverride 후 updateRemainingAnnualLeave()를 먼저 호출하고 updateCalendar() 호출 - 연차 계산이 완료된 후 화면 갱신되도록 순서 변경 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- .../com/example/shiftalarm/MainActivity.kt | 50 +++++++------------ 1 file changed, 18 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/example/shiftalarm/MainActivity.kt b/app/src/main/java/com/example/shiftalarm/MainActivity.kt index ef51849..7f2b55e 100644 --- a/app/src/main/java/com/example/shiftalarm/MainActivity.kt +++ b/app/src/main/java/com/example/shiftalarm/MainActivity.kt @@ -187,21 +187,21 @@ class MainActivity : AppCompatActivity() { } } - override fun onResume() { - super.onResume() - val prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) - currentViewTeam = prefs.getString(KEY_TEAM, "A") ?: "A" + override fun onResume() { + super.onResume() + val prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) + currentViewTeam = prefs.getString(KEY_TEAM, "A") ?: "A" - updateTideButtonVisibility() - updateCalendar() + updateTideButtonVisibility() + updateCalendar() - // 일원화된 통합 권한 체크 실행 (신뢰도 100% 보장) - AlarmPermissionUtil.checkAndRequestAllPermissions(this) + // 일원화된 통합 권한 체크 실행 (신뢰도 100% 보장) + AlarmPermissionUtil.checkAndRequestAllPermissions(this) - // 설정 변경 시 즉시 반영을 위한 강제 동기화 (30일 스케줄링) - lifecycleScope.launch { - syncAllAlarms(this@MainActivity) - } + // 설정 변경 시 즉시 반영을 위한 강제 동기화 (30일 스케줄링) + lifecycleScope.launch { + syncAllAlarms(this@MainActivity) + } // 연차 정보 업데이트 lifecycleScope.launch { @@ -213,16 +213,7 @@ class MainActivity : AppCompatActivity() { binding.tvAnnualLeave.text = "연차: --" } } - lifecycleScope.launch { - val repo = ShiftRepository(this@MainActivity) - val annualLeave = repo.getAnnualLeave() - annualLeave?.let { - binding.tvAnnualLeave.text = "연차: ${String.format("%.1f", it.remainingDays)}" - } ?: run { - binding.tvAnnualLeave.text = "연차: --" - } - } - } + } private fun showMonthYearPicker() { val dialogView = layoutInflater.inflate(R.layout.dialog_month_year_picker, null) @@ -334,15 +325,9 @@ class MainActivity : AppCompatActivity() { binding.todayStatusText.setTextColor(androidx.core.content.ContextCompat.getColor(this@MainActivity, R.color.warning_red)) } else { binding.todayStatusText.text = "오늘의 근무: $shiftForViewingTeam$teamSuffix" - binding.todayStatusText.setTextColor(androidx.core.content.ContextCompat.getColor(this@MainActivity, R.color.text_secondary)) - } + binding.todayStatusText.setTextColor(androidx.core.content.ContextCompat.getColor(this@MainActivity, R.color.text_secondary)) + } - // Update Annual Leave display - val annualLeave = withContext(Dispatchers.IO) { repo.getAnnualLeave() } - annualLeave?.let { - binding.tvAnnualLeave.text = "연차: ${String.format("%.1f", it.remainingDays)}" - } ?: run { - binding.tvAnnualLeave.text = "연차: --" // Update Annual Leave display val annualLeave = withContext(Dispatchers.IO) { repo.getAnnualLeave() } annualLeave?.let { @@ -350,7 +335,7 @@ class MainActivity : AppCompatActivity() { } ?: run { binding.tvAnnualLeave.text = "연차: --" } - } + } updateOtherTeamsLayout(today, factory, prefs) } @@ -651,10 +636,11 @@ class MainActivity : AppCompatActivity() { else -> { // New Types: 월차, 연차, 반월, 반년, 교육 -> Saved as Override with no time repo.setOverride(date, selected, team, factory) + // 연차 계산을 먼저 수행하고 달력 업데이트 + repo.updateRemainingAnnualLeave() updateCalendar() syncAllAlarms(this) android.widget.Toast.makeText(this, "${selected}(으)로 기록되었습니다. 알람이 해제됩니다.", android.widget.Toast.LENGTH_SHORT).show() - repo.updateRemainingAnnualLeave() } } }