Skip to content

Commit e724cd2

Browse files
committed
[FEAT/#253] 네트워크가 연결된 상황에서만 업데이트 바텀시트 노출
1 parent 020b8ce commit e724cd2

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
1212
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
1313
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
14+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
1415

1516
<application
1617
android:name=".OrbitApplication"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
3-
3+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
44
</manifest>

feature/home/src/main/java/com/yapp/home/HomeViewModel.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.yapp.home
22

3+
import android.content.Context
4+
import android.net.ConnectivityManager
5+
import android.net.NetworkCapabilities
36
import android.util.Log
47
import androidx.lifecycle.ViewModel
58
import com.yapp.common.util.ResourceProvider
@@ -9,6 +12,7 @@ import com.yapp.domain.repository.UserInfoRepository
912
import com.yapp.domain.usecase.AlarmUseCase
1013
import com.yapp.home.util.AlarmDateTimeFormatter
1114
import dagger.hilt.android.lifecycle.HiltViewModel
15+
import dagger.hilt.android.qualifiers.ApplicationContext
1216
import feature.home.R
1317
import kotlinx.coroutines.flow.combine
1418
import kotlinx.coroutines.flow.first
@@ -32,6 +36,7 @@ class HomeViewModel @Inject constructor(
3236
private val fortuneRepository: FortuneRepository,
3337
private val userInfoRepository: UserInfoRepository,
3438
@Named("appVersion") private val appVersion: String,
39+
@ApplicationContext private val context: Context,
3540
) : ViewModel(), ContainerHost<HomeContract.State, HomeContract.SideEffect> {
3641

3742
override val container: Container<HomeContract.State, HomeContract.SideEffect> = container(
@@ -371,6 +376,11 @@ class HomeViewModel @Inject constructor(
371376
}
372377

373378
private fun loadUpdateNoticeVisibility() = intent {
379+
if (!isOnlineNow()) {
380+
reduce { state.copy(isUpdateNoticeVisible = false) }
381+
return@intent
382+
}
383+
374384
val dontShowVersion =
375385
userInfoRepository.updateNoticeDontShowVersionFlow.firstOrNull()
376386
val lastShownDate =
@@ -443,4 +453,13 @@ class HomeViewModel @Inject constructor(
443453
reduce { state.copy(sortOrder = sortOrder) }
444454
hideDropDownMenu()
445455
}
456+
457+
private fun isOnlineNow(): Boolean {
458+
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
459+
val network = cm.activeNetwork ?: return false
460+
val caps = cm.getNetworkCapabilities(network) ?: return false
461+
462+
return caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) &&
463+
caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
464+
}
446465
}

0 commit comments

Comments
 (0)