From 1784f27c32766c2c9a771b0526022350e6541da5 Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Tue, 25 Nov 2025 15:10:21 +0900 Subject: [PATCH 1/3] fix: don't move ServerErrorActivity, replace floating with dialog --- app/src/main/AndroidManifest.xml | 3 -- .../presentation/error/ServerErrorActivity.kt | 40 ------------------- .../android/presentation/util/ActivityUtil.kt | 29 +++++++------- 3 files changed, 15 insertions(+), 57 deletions(-) delete mode 100644 app/src/main/java/com/eatssu/android/presentation/error/ServerErrorActivity.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93237e2b2..e129e9268 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -183,9 +183,6 @@ android:name="android.app.lib_name" android:value="" /> - diff --git a/app/src/main/java/com/eatssu/android/presentation/error/ServerErrorActivity.kt b/app/src/main/java/com/eatssu/android/presentation/error/ServerErrorActivity.kt deleted file mode 100644 index 2f0897e4d..000000000 --- a/app/src/main/java/com/eatssu/android/presentation/error/ServerErrorActivity.kt +++ /dev/null @@ -1,40 +0,0 @@ -package com.eatssu.android.presentation.error - -import android.app.AlertDialog -import android.os.Bundle -import androidx.activity.enableEdgeToEdge -import androidx.appcompat.app.AppCompatActivity -import com.eatssu.android.R - -class ServerErrorActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - enableEdgeToEdge() - setContentView(R.layout.activity_server_error) - - val title = intent.getStringExtra(EXTRA_TITLE) ?: getString(R.string.server_error_title) - val message = - intent.getStringExtra(EXTRA_MESSAGE) ?: getString(R.string.server_error_message) - - showServerErrorDialog(title, message) - } - - private fun showServerErrorDialog(title: String, message: String) { - AlertDialog.Builder(this) - .setTitle(title) - .setMessage(message) - .setPositiveButton(getString(R.string.confirm)) { _, _ -> - finishAffinity() - } - .setCancelable(false) - .create() - .show() - } - - companion object { - const val EXTRA_TITLE = "extra_title" - const val EXTRA_MESSAGE = "extra_message" - } -} - diff --git a/app/src/main/java/com/eatssu/android/presentation/util/ActivityUtil.kt b/app/src/main/java/com/eatssu/android/presentation/util/ActivityUtil.kt index 0e3c70906..f718ace39 100644 --- a/app/src/main/java/com/eatssu/android/presentation/util/ActivityUtil.kt +++ b/app/src/main/java/com/eatssu/android/presentation/util/ActivityUtil.kt @@ -1,12 +1,12 @@ package com.eatssu.android.presentation.util import android.app.Activity +import android.app.AlertDialog import android.content.Intent import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import com.eatssu.android.R import com.eatssu.android.presentation.base.NetworkErrorEventBus -import com.eatssu.android.presentation.error.ServerErrorActivity import kotlinx.coroutines.launch inline fun AppCompatActivity.startActivity(block: Intent.() -> Unit = {}) { @@ -14,7 +14,8 @@ inline fun AppCompatActivity.startActivity(block: Intent. } /** - * NetworkErrorEventBus를 구독하여 네트워크 에러 발생 시 ServerErrorActivity로 이동합니다. + * NetworkErrorEventBus를 구독하여 네트워크 에러 발생 시 다이얼로그를 표시합니다. + * 액티비티를 종료하지 않아 진행 중인 요청이 취소되지 않습니다. */ fun AppCompatActivity.observeNetworkError( errorTitle: String? = null, @@ -22,18 +23,18 @@ fun AppCompatActivity.observeNetworkError( ) { lifecycleScope.launch { NetworkErrorEventBus.networkError.collect { - val intent = Intent(this@observeNetworkError, ServerErrorActivity::class.java).apply { - putExtra( - ServerErrorActivity.EXTRA_TITLE, - errorTitle ?: getString(R.string.server_error_title) - ) - putExtra( - ServerErrorActivity.EXTRA_MESSAGE, - errorMessage ?: getString(R.string.server_error_message) - ) - } - startActivity(intent) - finish() + val title = errorTitle ?: getString(R.string.server_error_title) + val message = errorMessage ?: getString(R.string.server_error_message) + + AlertDialog.Builder(this@observeNetworkError) + .setTitle(title) + .setMessage(message) + .setPositiveButton(getString(R.string.confirm)) { dialog, _ -> + dialog.dismiss() + } + .setCancelable(true) + .create() + .show() } } } \ No newline at end of file From 4d7cdb7644ee2558a16e404a670d148cbcb90ba3 Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Tue, 25 Nov 2025 15:30:18 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20dialog=EA=B0=80=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=ED=95=B4=EC=84=9C=20=EB=9C=A8=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=ED=94=8C=EB=9E=98=EA=B7=B8=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/presentation/util/ActivityUtil.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/eatssu/android/presentation/util/ActivityUtil.kt b/app/src/main/java/com/eatssu/android/presentation/util/ActivityUtil.kt index f718ace39..af9dee9fe 100644 --- a/app/src/main/java/com/eatssu/android/presentation/util/ActivityUtil.kt +++ b/app/src/main/java/com/eatssu/android/presentation/util/ActivityUtil.kt @@ -21,12 +21,18 @@ fun AppCompatActivity.observeNetworkError( errorTitle: String? = null, errorMessage: String? = null ) { + var networkErrorDialog: AlertDialog? = null + lifecycleScope.launch { NetworkErrorEventBus.networkError.collect { + if (networkErrorDialog?.isShowing == true) { + return@collect + } + val title = errorTitle ?: getString(R.string.server_error_title) val message = errorMessage ?: getString(R.string.server_error_message) - AlertDialog.Builder(this@observeNetworkError) + networkErrorDialog = AlertDialog.Builder(this@observeNetworkError) .setTitle(title) .setMessage(message) .setPositiveButton(getString(R.string.confirm)) { dialog, _ -> @@ -34,7 +40,12 @@ fun AppCompatActivity.observeNetworkError( } .setCancelable(true) .create() - .show() + .also { dialog -> + dialog.setOnDismissListener { + networkErrorDialog = null + } + dialog.show() + } } } } \ No newline at end of file From 3c5569f5f2696b6caef552ea9d99d88247267a2b Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Sun, 30 Nov 2025 21:33:03 +0900 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20observeNetworkError()=EB=A5=BC=20o?= =?UTF-8?q?nCreate()=20=ED=95=A8=EC=88=98=20=EB=82=B4=EB=B6=80=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=B0=94=EB=A1=9C=20=ED=98=B8=EC=B6=9C=ED=95=B4?= =?UTF-8?q?=EC=84=9C=20=EB=8E=81=EC=8A=A4=EB=A5=BC=20=EC=A4=84=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/eatssu/android/presentation/base/BaseActivity.kt | 3 +-- .../com/eatssu/android/presentation/intro/IntroActivity.kt | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/eatssu/android/presentation/base/BaseActivity.kt b/app/src/main/java/com/eatssu/android/presentation/base/BaseActivity.kt index 99a4def07..df746f5a5 100644 --- a/app/src/main/java/com/eatssu/android/presentation/base/BaseActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/base/BaseActivity.kt @@ -69,6 +69,7 @@ abstract class BaseActivity( // refreshtoken 관리 observeTokenExpiration() + observeNetworkError() setContainerInset() @@ -120,8 +121,6 @@ abstract class BaseActivity( navigateToLogin() } } - - observeNetworkError() } private fun navigateToLogin() { diff --git a/app/src/main/java/com/eatssu/android/presentation/intro/IntroActivity.kt b/app/src/main/java/com/eatssu/android/presentation/intro/IntroActivity.kt index cee801309..08ad3a483 100644 --- a/app/src/main/java/com/eatssu/android/presentation/intro/IntroActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/intro/IntroActivity.kt @@ -37,6 +37,7 @@ class IntroActivity : AppCompatActivity() { observeState() observeEvents() + observeNetworkError() lifecycleScope.launch { // 버전 체크 결과 관찰 @@ -88,8 +89,6 @@ class IntroActivity : AppCompatActivity() { } } } - - observeNetworkError() } private fun log() {