From 423bd67443d1b785f3b2dd9e058c98b517cba607 Mon Sep 17 00:00:00 2001 From: edv-Shin Date: Sun, 6 Sep 2026 01:56:35 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=98=A4=ED=94=84=EB=9D=BC=EC=9D=B8=20?= =?UTF-8?q?=EC=BA=90=EC=8B=9C=20Remote=20Config=20=ED=94=8C=EB=9E=98?= =?UTF-8?q?=EA=B7=B8=20=EC=B6=94=EA=B0=80=20#582?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/xml/remote_config_defaults.xml | 4 ++++ .../common/constants/RemoteConfigKeys.kt | 3 +++ .../data/datasource/FeatureFlagDataSource.kt | 24 +++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 data/src/main/java/com/project200/data/datasource/FeatureFlagDataSource.kt diff --git a/app/src/main/res/xml/remote_config_defaults.xml b/app/src/main/res/xml/remote_config_defaults.xml index bbe22594..42475696 100644 --- a/app/src/main/res/xml/remote_config_defaults.xml +++ b/app/src/main/res/xml/remote_config_defaults.xml @@ -8,4 +8,8 @@ min_required_version_code 1 + + offline_cache_enabled + false + \ No newline at end of file diff --git a/common/src/main/java/com/project200/common/constants/RemoteConfigKeys.kt b/common/src/main/java/com/project200/common/constants/RemoteConfigKeys.kt index b1fd3ae5..6f40d7dd 100644 --- a/common/src/main/java/com/project200/common/constants/RemoteConfigKeys.kt +++ b/common/src/main/java/com/project200/common/constants/RemoteConfigKeys.kt @@ -3,4 +3,7 @@ package com.project200.common.constants object RemoteConfigKeys { const val LATEST_VERSION_CODE = "latest_version_code" const val MIN_REQUIRED_VERSION_CODE = "min_required_version_code" + + // 오프라인 캐시 경로 on/off. 문제 시 앱 배포 없이 기존 네트워크 경로로 되돌리는 수단 + const val OFFLINE_CACHE_ENABLED = "offline_cache_enabled" } diff --git a/data/src/main/java/com/project200/data/datasource/FeatureFlagDataSource.kt b/data/src/main/java/com/project200/data/datasource/FeatureFlagDataSource.kt new file mode 100644 index 00000000..d5a9fcd9 --- /dev/null +++ b/data/src/main/java/com/project200/data/datasource/FeatureFlagDataSource.kt @@ -0,0 +1,24 @@ +package com.project200.data.datasource + +import com.google.firebase.remoteconfig.FirebaseRemoteConfig +import com.project200.common.constants.RemoteConfigKeys +import javax.inject.Inject +import javax.inject.Singleton + +/** + * Remote Config로 켜고 끄는 기능 플래그를 읽습니다. + * + * fetch는 앱 진입의 업데이트 확인(`AppUpdateRepositoryImpl.getUpdateInfo`)이 이미 수행합니다. + * 여기서는 활성화된 값만 읽습니다 + * + * 진입 전이거나 fetch가 실패한 기기에서는 `remote_config_defaults.xml`의 기본값이 읽힙니다. + * 기본값이 곧 최악 상황의 동작이라 꺼짐으로 두었습니다 + */ +@Singleton +class FeatureFlagDataSource + @Inject + constructor( + private val firebaseRemoteConfig: FirebaseRemoteConfig, + ) { + fun isOfflineCacheEnabled(): Boolean = firebaseRemoteConfig.getBoolean(RemoteConfigKeys.OFFLINE_CACHE_ENABLED) + }