diff --git a/app/src/main/java/com/eatssu/android/data/remote/repository/HealthCheckRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/HealthCheckRepositoryImpl.kt index 7c7957c47..a5dcb506a 100644 --- a/app/src/main/java/com/eatssu/android/data/remote/repository/HealthCheckRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/HealthCheckRepositoryImpl.kt @@ -1,14 +1,26 @@ package com.eatssu.android.data.remote.repository -import com.eatssu.android.data.model.isSuccess import com.eatssu.android.data.remote.service.HealthCheckService import com.eatssu.android.domain.repository.HealthCheckRepository +import com.eatssu.android.presentation.base.NetworkErrorEventBus +import timber.log.Timber +import java.io.IOException import javax.inject.Inject class HealthCheckRepositoryImpl @Inject constructor( private val healthCheckService: HealthCheckService ) : HealthCheckRepository { override suspend fun checkHealth(): Boolean { - return healthCheckService.checkHealth().isSuccess() + return try { + val response = healthCheckService.checkHealth() + return response.isSuccessful + } catch (e: IOException) { + NetworkErrorEventBus.notifyNetworkError() + Timber.e(e, "Health check network error") + false + } catch (e: Exception) { + Timber.e(e, "Health check failed") + false + } } } diff --git a/app/src/main/java/com/eatssu/android/data/remote/service/HealthCheckService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/HealthCheckService.kt index 6f484c661..e7d1debdb 100644 --- a/app/src/main/java/com/eatssu/android/data/remote/service/HealthCheckService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/HealthCheckService.kt @@ -1,14 +1,13 @@ package com.eatssu.android.data.remote.service -import com.eatssu.android.data.model.ApiResult +import retrofit2.Response import retrofit2.http.GET interface HealthCheckService { /** * 서버와 정상적으로 통신할 수 있는지 확인합니다. * 실제 서버의 상태(healthy)를 체크하는 목적이 아니라, 네트워크 연결이 가능한지 확인하는 용도입니다. - * 반환 타입이 Unit인 이유는 응답 본문의 내용이 중요하지 않고, 통신 성공 여부만 판단하기 때문입니다. */ @GET("actuator/health") - suspend fun checkHealth(): ApiResult + suspend fun checkHealth(): Response } diff --git a/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt b/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt index a007b5a29..8a7c9dc9b 100644 --- a/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt @@ -19,6 +19,7 @@ import com.eatssu.android.databinding.ActivityMainBinding import com.eatssu.android.presentation.base.BaseActivity import com.eatssu.android.presentation.login.LoginActivity import com.eatssu.android.presentation.mypage.MyPageViewModel +import com.eatssu.android.presentation.mypage.terms.WebViewActivity import com.eatssu.android.presentation.mypage.userinfo.UserInfoActivity import com.eatssu.android.presentation.util.showInfoToast import com.eatssu.android.presentation.util.showToast @@ -77,6 +78,19 @@ class MainActivity : BaseActivity( true } + R.id.anyone_but_me_menu -> { + startActivity { + putExtra(WebViewActivity.EXTRA_URL, getString(R.string.anyone_but_me_url)) + putExtra(WebViewActivity.EXTRA_TITLE, getString(R.string.nav_anyone_but_me)) + putExtra("SCREEN_ID", ScreenId.ANYONE_BUT_ME_MAIN.name) + putExtra( + WebViewActivity.EXTRA_BACK_ICON_RES_ID, + com.eatssu.design_system.R.drawable.ic_close + ) + } + false + } + R.id.mypage_menu -> { navController.navigate(R.id.myPageFragment) true @@ -199,4 +213,4 @@ class MainActivity : BaseActivity( override fun shouldLogScreenId() = false -} \ No newline at end of file +} diff --git a/app/src/main/java/com/eatssu/android/presentation/mypage/DeveloperActivity.kt b/app/src/main/java/com/eatssu/android/presentation/mypage/DeveloperActivity.kt index 89c44c0e8..1a18146ed 100644 --- a/app/src/main/java/com/eatssu/android/presentation/mypage/DeveloperActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/mypage/DeveloperActivity.kt @@ -32,11 +32,11 @@ class DeveloperActivity : private fun clickRecruiting() { binding.imgRecruitingBanner.setOnClickListener { val intent = Intent(this, WebViewActivity::class.java).apply { - putExtra("TITLE", "Who’s next?") - putExtra("URL", getString(R.string.recruiting_url)) + putExtra(WebViewActivity.EXTRA_TITLE, "Who’s next?") + putExtra(WebViewActivity.EXTRA_URL, getString(R.string.recruiting_url)) putExtra("SCREEN_ID", ScreenId.EXTERNAL_RECRUIT.name) } startActivity(intent) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt b/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt index 3a3c8b7a9..dd3c43616 100644 --- a/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt +++ b/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt @@ -262,8 +262,8 @@ class MyPageFragment : BaseFragment(ScreenId.MYPAGE_MAIN) private fun startWebView(url: String, title: String, screenId: ScreenId) { val intent = Intent(requireContext(), WebViewActivity::class.java).apply { - putExtra("URL", url) - putExtra("TITLE", title) + putExtra(WebViewActivity.EXTRA_URL, url) + putExtra(WebViewActivity.EXTRA_TITLE, title) putExtra("SCREEN_ID", screenId.name) } startActivity(intent) diff --git a/app/src/main/java/com/eatssu/android/presentation/mypage/terms/WebViewActivity.kt b/app/src/main/java/com/eatssu/android/presentation/mypage/terms/WebViewActivity.kt index 0afe0b3a0..96dc82131 100644 --- a/app/src/main/java/com/eatssu/android/presentation/mypage/terms/WebViewActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/mypage/terms/WebViewActivity.kt @@ -4,6 +4,8 @@ import android.os.Bundle import android.webkit.RenderProcessGoneDetail import android.webkit.WebView import android.webkit.WebViewClient +import android.widget.ImageView +import com.eatssu.android.R import com.eatssu.android.databinding.ActivityWebviewBinding import com.eatssu.android.presentation.base.BaseActivity import com.eatssu.common.EventLogger @@ -21,6 +23,7 @@ class WebViewActivity : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + applyBackIconFromIntent() binding.webview.apply { webViewClient = object : WebViewClient() { @@ -53,8 +56,8 @@ class WebViewActivity : useWideViewPort = true // 화면 크기에 맞게 웹 페이지를 조정 } - URL = intent.getStringExtra("URL") ?: "" //Todo 뷰모델 사용하도록 수정? - TITLE = intent.getStringExtra("TITLE") ?: "" + URL = intent.getStringExtra(EXTRA_URL) ?: "" //Todo 뷰모델 사용하도록 수정? + TITLE = intent.getStringExtra(EXTRA_TITLE) ?: "" toolbarTitle.text = TITLE Timber.d(URL + TITLE) @@ -64,6 +67,15 @@ class WebViewActivity : } } + private fun applyBackIconFromIntent() { + if (intent.hasExtra(EXTRA_BACK_ICON_RES_ID)) { + val backIconResId = intent.getIntExtra(EXTRA_BACK_ICON_RES_ID, 0) + if (backIconResId != 0) { + findViewById(R.id.btn_back).setImageResource(backIconResId) + } + } + } + override fun onBackPressed() { if (binding.webview.canGoBack()) binding.webview.goBack() else super.onBackPressed() @@ -94,4 +106,10 @@ class WebViewActivity : } override fun shouldLogScreenId() = false + + companion object { + const val EXTRA_URL = "URL" + const val EXTRA_TITLE = "TITLE" + const val EXTRA_BACK_ICON_RES_ID = "BACK_ICON_RES_ID" + } } diff --git a/app/src/main/res/drawable/ic_anyone_but_me.xml b/app/src/main/res/drawable/ic_anyone_but_me.xml new file mode 100644 index 000000000..cf9cc6a65 --- /dev/null +++ b/app/src/main/res/drawable/ic_anyone_but_me.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0d5e1c51c..6072d1ba6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -33,6 +33,8 @@ android:textAlignment="center" app:itemTextColor="@color/selector_bottom_navi_item" app:itemIconTint="@null" + app:labelVisibilityMode="labeled" + app:itemHorizontalTranslationEnabled="false" app:itemPaddingTop="10dp" app:menu="@menu/menu_bottom_navigation" /> - \ No newline at end of file + diff --git a/app/src/main/res/menu/menu_bottom_navigation.xml b/app/src/main/res/menu/menu_bottom_navigation.xml index 7c838b74d..db27a0a65 100644 --- a/app/src/main/res/menu/menu_bottom_navigation.xml +++ b/app/src/main/res/menu/menu_bottom_navigation.xml @@ -12,10 +12,16 @@ android:icon="@drawable/selector_ic_map" android:title="@string/nav_map"/> + + - \ No newline at end of file + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 49293065c..5391246c3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -33,6 +33,7 @@ 학식 지도 + 나만아니면돼~ 마이 back @@ -298,6 +299,7 @@ https://github.com/EAT-SSU/Docs/wiki/EAT%E2%80%90SSU-%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EB%B0%A9%EC%B9%A8 https://github.com/EAT-SSU/Docs/wiki/EAT%E2%80%90SSU-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%9D%B4%EC%9A%A9%EC%95%BD%EA%B4%80 + https://eatssu-coffee.figma.site/ eatssu.official https://eat-ssu.notion.site/1d2eeef75a1681ae800cf6ffa6faa37d?pvs=74 diff --git a/core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt b/core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt index 25bed0722..1eaa2d76d 100644 --- a/core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt +++ b/core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt @@ -29,6 +29,7 @@ enum class ScreenId(val value: String) { MAP_DETAIL("MAP_001001"), MAP_NO_DEPARTMENT("MAP_001002"), MAP_FAVORITE("MAP_002000"), + ANYONE_BUT_ME_MAIN("ABM_001000"), MYPAGE_MAIN("MYP_001000"), MYPAGE_USERINFO("MYP_001001"),