diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 93237e2b..e129e926 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/base/BaseActivity.kt b/app/src/main/java/com/eatssu/android/presentation/base/BaseActivity.kt
index 99a4def0..df746f5a 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/error/ServerErrorActivity.kt b/app/src/main/java/com/eatssu/android/presentation/error/ServerErrorActivity.kt
deleted file mode 100644
index 2f0897e4..00000000
--- 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/intro/IntroActivity.kt b/app/src/main/java/com/eatssu/android/presentation/intro/IntroActivity.kt
index cee80130..08ad3a48 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() {
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 0e3c7090..af9dee9f 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,26 +14,38 @@ inline fun AppCompatActivity.startActivity(block: Intent.
}
/**
- * NetworkErrorEventBus를 구독하여 네트워크 에러 발생 시 ServerErrorActivity로 이동합니다.
+ * NetworkErrorEventBus를 구독하여 네트워크 에러 발생 시 다이얼로그를 표시합니다.
+ * 액티비티를 종료하지 않아 진행 중인 요청이 취소되지 않습니다.
*/
fun AppCompatActivity.observeNetworkError(
errorTitle: String? = null,
errorMessage: String? = null
) {
+ var networkErrorDialog: AlertDialog? = null
+
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)
- )
+ if (networkErrorDialog?.isShowing == true) {
+ return@collect
}
- startActivity(intent)
- finish()
+
+ val title = errorTitle ?: getString(R.string.server_error_title)
+ val message = errorMessage ?: getString(R.string.server_error_message)
+
+ networkErrorDialog = AlertDialog.Builder(this@observeNetworkError)
+ .setTitle(title)
+ .setMessage(message)
+ .setPositiveButton(getString(R.string.confirm)) { dialog, _ ->
+ dialog.dismiss()
+ }
+ .setCancelable(true)
+ .create()
+ .also { dialog ->
+ dialog.setOnDismissListener {
+ networkErrorDialog = null
+ }
+ dialog.show()
+ }
}
}
}
\ No newline at end of file