From 56d274a70b3b2b58b80f8400a1c338f1aed5c999 Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 16:06:13 +0900 Subject: [PATCH 1/9] =?UTF-8?q?feat=20::=20JobisExceptionHandler=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jobisandroidv2/JobisExceptionHandler.kt | 35 +++++++++++++++++++ .../team/retum/jobisandroidv2/MainActivity.kt | 4 +++ 2 files changed, 39 insertions(+) create mode 100644 app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt new file mode 100644 index 000000000..90b76e0a9 --- /dev/null +++ b/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt @@ -0,0 +1,35 @@ +package team.retum.jobisandroidv2 + +import android.content.Context +import team.retum.common.exception.ConnectionTimeOutException +import team.retum.common.exception.OfflineException +import team.retum.common.exception.ReissueException +import team.retum.common.exception.UnknownException +import team.retum.jobisdesignsystemv2.foundation.JobisIcon +import team.retum.jobisdesignsystemv2.toast.JobisToast + +private const val InternetErrorMsg = "인터넷 연결을 확인해주세요." +private const val TimeoutErrorMsg = "요청 시간이 초과되었습니다.\n다시 시도해주세요." +private const val LoginErrorMsg = "유저정보가 확인되지 않습니다.\n다시 로그인 해주세요." +private const val UnknownErrorMsg = "처리 중 문제가 발생했습니다.\n앱을 재시작 해주세요." + +class JobisExceptionHandler( + private val context: Context, +) : Thread.UncaughtExceptionHandler { + override fun uncaughtException(t: Thread, e: Throwable) { + when (e) { + is OfflineException -> makeToast(InternetErrorMsg) + is ConnectionTimeOutException -> makeToast(TimeoutErrorMsg) + is ReissueException -> makeToast(LoginErrorMsg) + is UnknownException -> makeToast(UnknownErrorMsg) + } + } + + fun makeToast(message: String) { + JobisToast.create( + context = context, + message = message, + drawable = JobisIcon.Error, + ) + } +} diff --git a/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt b/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt index 09b2b23e0..750d4b179 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt @@ -49,6 +49,10 @@ class MainActivity : ComponentActivity() { lifecycleScope.launch { deviceTokenManager.fetchDeviceToken() } + + Thread.setDefaultUncaughtExceptionHandler( + JobisExceptionHandler(context = this), + ) } private fun setBackHandler() { From b0e61a18f58f5f562b033f427b2ba3f06746e3fd Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 16:06:29 +0900 Subject: [PATCH 2/9] =?UTF-8?q?refactor=20::=20exception=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/team/retum/common/exception/RequestExceptions.kt | 2 ++ .../main/java/team/retum/network/util/RefreshTokenService.kt | 3 ++- .../src/main/java/team/retum/network/util/RequestHandler.kt | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/common/src/main/java/team/retum/common/exception/RequestExceptions.kt b/core/common/src/main/java/team/retum/common/exception/RequestExceptions.kt index d35169974..ea5d906be 100644 --- a/core/common/src/main/java/team/retum/common/exception/RequestExceptions.kt +++ b/core/common/src/main/java/team/retum/common/exception/RequestExceptions.kt @@ -10,3 +10,5 @@ data object TooManyRequestException : RuntimeException() data object ServerException : RuntimeException() data object OfflineException : RuntimeException() data object ConnectionTimeOutException : RuntimeException() +data object UnknownException : RuntimeException() +data object ReissueException : RuntimeException() diff --git a/core/network/src/main/java/team/retum/network/util/RefreshTokenService.kt b/core/network/src/main/java/team/retum/network/util/RefreshTokenService.kt index 523150d72..6e10524a2 100644 --- a/core/network/src/main/java/team/retum/network/util/RefreshTokenService.kt +++ b/core/network/src/main/java/team/retum/network/util/RefreshTokenService.kt @@ -7,6 +7,7 @@ import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import retrofit2.converter.moshi.MoshiConverterFactory import team.retum.common.enums.PlatformType +import team.retum.common.exception.ReissueException import team.retum.network.BuildConfig import team.retum.network.api.AuthApi import team.retum.network.model.response.TokenResponse @@ -40,7 +41,7 @@ object RefreshTokenService { }.onSuccess { token -> return token }.onFailure { - throw IllegalStateException("Fail refresh: ${it.message}") + throw ReissueException }.getOrThrow() } } diff --git a/core/network/src/main/java/team/retum/network/util/RequestHandler.kt b/core/network/src/main/java/team/retum/network/util/RequestHandler.kt index 622b6e85a..1d1eb6cb6 100644 --- a/core/network/src/main/java/team/retum/network/util/RequestHandler.kt +++ b/core/network/src/main/java/team/retum/network/util/RequestHandler.kt @@ -11,6 +11,7 @@ import team.retum.common.exception.OfflineException import team.retum.common.exception.ServerException import team.retum.common.exception.TooManyRequestException import team.retum.common.exception.UnAuthorizedException +import team.retum.common.exception.UnknownException import java.net.SocketTimeoutException import java.net.UnknownHostException @@ -63,6 +64,6 @@ class RequestHandler { } catch (e: UnknownHostException) { throw OfflineException } catch (e: Throwable) { - throw e + throw UnknownException } } From 6209b0e6b82a0e31652fc935d6c875716a79e934 Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 17:25:22 +0900 Subject: [PATCH 3/9] =?UTF-8?q?refactor=20::=20applicationContext=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/team/retum/jobisandroidv2/JobisExceptionHandler.kt | 3 ++- app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt index 90b76e0a9..a15db3a79 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt @@ -22,10 +22,11 @@ class JobisExceptionHandler( is ConnectionTimeOutException -> makeToast(TimeoutErrorMsg) is ReissueException -> makeToast(LoginErrorMsg) is UnknownException -> makeToast(UnknownErrorMsg) + else -> makeToast(UnknownErrorMsg) } } - fun makeToast(message: String) { + private fun makeToast(message: String) { JobisToast.create( context = context, message = message, diff --git a/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt b/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt index 750d4b179..946a1a3cd 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt @@ -51,7 +51,7 @@ class MainActivity : ComponentActivity() { } Thread.setDefaultUncaughtExceptionHandler( - JobisExceptionHandler(context = this), + JobisExceptionHandler(context = applicationContext), ) } From 489c421cb6dd3cf3eafc499022e10e1418f1b8bb Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 20:47:43 +0900 Subject: [PATCH 4/9] =?UTF-8?q?refactor=20::=20toast=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../retum/jobisandroidv2/JobisExceptionHandler.kt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt index a15db3a79..b326627bf 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt @@ -1,12 +1,11 @@ package team.retum.jobisandroidv2 import android.content.Context +import android.widget.Toast import team.retum.common.exception.ConnectionTimeOutException import team.retum.common.exception.OfflineException import team.retum.common.exception.ReissueException import team.retum.common.exception.UnknownException -import team.retum.jobisdesignsystemv2.foundation.JobisIcon -import team.retum.jobisdesignsystemv2.toast.JobisToast private const val InternetErrorMsg = "인터넷 연결을 확인해주세요." private const val TimeoutErrorMsg = "요청 시간이 초과되었습니다.\n다시 시도해주세요." @@ -27,10 +26,10 @@ class JobisExceptionHandler( } private fun makeToast(message: String) { - JobisToast.create( - context = context, - message = message, - drawable = JobisIcon.Error, - ) + Toast.makeText( + context, + message, + Toast.LENGTH_SHORT, + ).show() } } From 46f94a8f6fc30324c0080d04382b7abf1adb286c Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 21:51:20 +0900 Subject: [PATCH 5/9] =?UTF-8?q?refactor=20::=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20=EC=88=98=EC=A7=91=20=EB=B0=8F=20=EC=9E=AC=EC=8B=9C=EC=9E=91?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../retum/jobisandroidv2/JobisApplication.kt | 44 ++++++++++++++++++- .../jobisandroidv2/JobisExceptionHandler.kt | 35 --------------- .../team/retum/jobisandroidv2/MainActivity.kt | 4 -- 3 files changed, 43 insertions(+), 40 deletions(-) delete mode 100644 app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt index 6407a8275..6e3fc3327 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt @@ -1,7 +1,49 @@ package team.retum.jobisandroidv2 import android.app.Application +import android.content.Intent +import android.widget.Toast +import com.google.firebase.Firebase +import com.google.firebase.crashlytics.crashlytics import dagger.hilt.android.HiltAndroidApp +import team.retum.common.exception.ConnectionTimeOutException +import team.retum.common.exception.OfflineException +import team.retum.common.exception.ReissueException +import team.retum.common.exception.UnknownException +import kotlin.system.exitProcess + +private const val InternetErrorMsg = "인터넷 연결을 확인해주세요." +private const val TimeoutErrorMsg = "요청 시간이 초과되었습니다.\n다시 시도해주세요." +private const val LoginErrorMsg = "유저정보가 확인되지 않습니다.\n다시 로그인 해주세요." +private const val UnknownErrorMsg = "처리 중 문제가 발생했습니다." @HiltAndroidApp -class JobisApplication : Application() +class JobisApplication : Application() { + override fun onCreate() { + super.onCreate() + + Thread.setDefaultUncaughtExceptionHandler { t, e -> + Firebase.crashlytics.recordException(e) + + when (e) { + is OfflineException -> makeToast(InternetErrorMsg) + is ConnectionTimeOutException -> makeToast(TimeoutErrorMsg) + is ReissueException -> makeToast(LoginErrorMsg) + is UnknownException -> makeToast(UnknownErrorMsg) + else -> makeToast(UnknownErrorMsg) + } + startActivity(Intent(this, MainActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + }) + exitProcess(0) + } + } + + private fun makeToast(message: String) { + Toast.makeText( + this, + message, + Toast.LENGTH_SHORT, + ).show() + } +} diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt deleted file mode 100644 index b326627bf..000000000 --- a/app/src/main/java/team/retum/jobisandroidv2/JobisExceptionHandler.kt +++ /dev/null @@ -1,35 +0,0 @@ -package team.retum.jobisandroidv2 - -import android.content.Context -import android.widget.Toast -import team.retum.common.exception.ConnectionTimeOutException -import team.retum.common.exception.OfflineException -import team.retum.common.exception.ReissueException -import team.retum.common.exception.UnknownException - -private const val InternetErrorMsg = "인터넷 연결을 확인해주세요." -private const val TimeoutErrorMsg = "요청 시간이 초과되었습니다.\n다시 시도해주세요." -private const val LoginErrorMsg = "유저정보가 확인되지 않습니다.\n다시 로그인 해주세요." -private const val UnknownErrorMsg = "처리 중 문제가 발생했습니다.\n앱을 재시작 해주세요." - -class JobisExceptionHandler( - private val context: Context, -) : Thread.UncaughtExceptionHandler { - override fun uncaughtException(t: Thread, e: Throwable) { - when (e) { - is OfflineException -> makeToast(InternetErrorMsg) - is ConnectionTimeOutException -> makeToast(TimeoutErrorMsg) - is ReissueException -> makeToast(LoginErrorMsg) - is UnknownException -> makeToast(UnknownErrorMsg) - else -> makeToast(UnknownErrorMsg) - } - } - - private fun makeToast(message: String) { - Toast.makeText( - context, - message, - Toast.LENGTH_SHORT, - ).show() - } -} diff --git a/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt b/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt index 946a1a3cd..09b2b23e0 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/MainActivity.kt @@ -49,10 +49,6 @@ class MainActivity : ComponentActivity() { lifecycleScope.launch { deviceTokenManager.fetchDeviceToken() } - - Thread.setDefaultUncaughtExceptionHandler( - JobisExceptionHandler(context = applicationContext), - ) } private fun setBackHandler() { From d06bf72535538fe23e269eb6521f7bf9142d6cf6 Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 21:54:25 +0900 Subject: [PATCH 6/9] refactor :: ktlint --- .../java/team/retum/jobisandroidv2/JobisApplication.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt index 6e3fc3327..cbf6d397f 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt @@ -32,9 +32,11 @@ class JobisApplication : Application() { is UnknownException -> makeToast(UnknownErrorMsg) else -> makeToast(UnknownErrorMsg) } - startActivity(Intent(this, MainActivity::class.java).apply { - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) - }) + startActivity( + Intent(this, MainActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + }, + ) exitProcess(0) } } From d6b72eefb3e3736975d7ddd0f0c63fd9d1ca10d4 Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 22:08:02 +0900 Subject: [PATCH 7/9] refactor :: lint --- app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt index cbf6d397f..23b05be6d 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt @@ -22,7 +22,7 @@ class JobisApplication : Application() { override fun onCreate() { super.onCreate() - Thread.setDefaultUncaughtExceptionHandler { t, e -> + Thread.setDefaultUncaughtExceptionHandler { _, e -> Firebase.crashlytics.recordException(e) when (e) { From e2f3af9612b44ecb64af7a7925dd27f3800eb1e8 Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 22:35:02 +0900 Subject: [PATCH 8/9] =?UTF-8?q?refactor=20::=20=EC=9E=AC=EC=8B=A4=ED=96=89?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/retum/jobisandroidv2/JobisApplication.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt index 23b05be6d..0d349face 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt @@ -32,12 +32,13 @@ class JobisApplication : Application() { is UnknownException -> makeToast(UnknownErrorMsg) else -> makeToast(UnknownErrorMsg) } - startActivity( - Intent(this, MainActivity::class.java).apply { - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) - }, - ) - exitProcess(0) + + val intent = this.packageManager.getLaunchIntentForPackage(this.packageName) + if (intent != null) { + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + this.startActivity(intent) + exitProcess(0) + } } } From ff313ebf20d60bd62c1372d1a35f05d760ec3dd1 Mon Sep 17 00:00:00 2001 From: uiel Date: Thu, 7 Nov 2024 22:38:50 +0900 Subject: [PATCH 9/9] refactor :: ktlint --- app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt index 0d349face..cbb2fa6d6 100644 --- a/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt +++ b/app/src/main/java/team/retum/jobisandroidv2/JobisApplication.kt @@ -32,7 +32,7 @@ class JobisApplication : Application() { is UnknownException -> makeToast(UnknownErrorMsg) else -> makeToast(UnknownErrorMsg) } - + val intent = this.packageManager.getLaunchIntentForPackage(this.packageName) if (intent != null) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)