DynamicColorフラグ追加 #67
|
@ -5,20 +5,45 @@ import android.util.Log;
|
||||||
|
|
||||||
import com.google.android.material.color.DynamicColors;
|
import com.google.android.material.color.DynamicColors;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import dagger.hilt.android.HiltAndroidApp;
|
import dagger.hilt.android.HiltAndroidApp;
|
||||||
|
import one.nem.kidshift.utils.FeatureFlag;
|
||||||
|
import one.nem.kidshift.utils.KSLogger;
|
||||||
|
|
||||||
@HiltAndroidApp
|
@HiltAndroidApp
|
||||||
public class KidShiftApplication extends Application {
|
public class KidShiftApplication extends Application {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
FeatureFlag featureFlag;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
KSLogger logger;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
|
||||||
|
// if(DynamicColors.isDynamicColorAvailable()) {
|
||||||
|
// Log.d("StartUp/DynamicColors", "DynamicColors is available!");
|
||||||
|
// DynamicColors.applyToActivitiesIfAvailable(this);
|
||||||
|
// } else {
|
||||||
|
// Log.d("StartUp/DynamicColors", "DynamicColors is not available.");
|
||||||
|
// }
|
||||||
|
|
||||||
|
logger.setTag("KidShiftApplication");
|
||||||
|
logger.info("super.onCreate() completed");
|
||||||
|
|
||||||
|
if(featureFlag.isEnabled("dynamicColorEnable")) {
|
||||||
if (DynamicColors.isDynamicColorAvailable()) {
|
if (DynamicColors.isDynamicColorAvailable()) {
|
||||||
Log.d("StartUp/DynamicColors", "DynamicColors is available!");
|
|
||||||
DynamicColors.applyToActivitiesIfAvailable(this);
|
DynamicColors.applyToActivitiesIfAvailable(this);
|
||||||
|
logger.info("DynamicColors is available and applied to activities.");
|
||||||
} else {
|
} else {
|
||||||
Log.d("StartUp/DynamicColors", "DynamicColors is not available.");
|
logger.info("DynamicColors is not available.");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
logger.info("DynamicColors feature is disabled by feature flag.");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,14 @@ import java.util.Objects;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext;
|
import dagger.hilt.android.qualifiers.ApplicationContext;
|
||||||
|
import one.nem.kidshift.utils.KSLogger;
|
||||||
import one.nem.kidshift.utils.models.feature.FeatureFlagItemModel;
|
import one.nem.kidshift.utils.models.feature.FeatureFlagItemModel;
|
||||||
import one.nem.kidshift.utils.FeatureFlag;
|
import one.nem.kidshift.utils.FeatureFlag;
|
||||||
|
|
||||||
public class FeatureFlagImpl implements FeatureFlag {
|
public class FeatureFlagImpl implements FeatureFlag {
|
||||||
|
|
||||||
private final Context applicationContext;
|
private final Context applicationContext;
|
||||||
|
private final KSLogger logger;
|
||||||
private final SharedPreferences sharedPreferences;
|
private final SharedPreferences sharedPreferences;
|
||||||
|
|
||||||
// ここを書き換えてプロファイルを書き換え
|
// ここを書き換えてプロファイルを書き換え
|
||||||
|
@ -39,8 +40,10 @@ public class FeatureFlagImpl implements FeatureFlag {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public FeatureFlagImpl(@ApplicationContext Context applicationContext) {
|
public FeatureFlagImpl(@ApplicationContext Context applicationContext, KSLogger logger) {
|
||||||
this.applicationContext = applicationContext;
|
this.applicationContext = applicationContext;
|
||||||
|
this.logger = logger;
|
||||||
|
this.logger.setTag("FeatureFlagImpl");
|
||||||
this.sharedPreferences = applicationContext.getSharedPreferences("feat_flg", Context.MODE_PRIVATE);
|
this.sharedPreferences = applicationContext.getSharedPreferences("feat_flg", Context.MODE_PRIVATE);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
@ -64,22 +67,15 @@ public class FeatureFlagImpl implements FeatureFlag {
|
||||||
|
|
||||||
// init
|
// init
|
||||||
private void initBase() { // ベース, (= Production)
|
private void initBase() { // ベース, (= Production)
|
||||||
setFlag("isBaseEnabled", true, false);
|
setFlag("dynamicColorEnable", true, false);
|
||||||
setFlag("isBetaEnabled", false, false);
|
|
||||||
setFlag("isDevelopEnabled", false, false);
|
|
||||||
setFlag("overrideTest", false, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initBeta() { // 上書き
|
private void initBeta() { // 上書き
|
||||||
setFlag("isBaseEnabled", false, true);
|
setFlag("dynamicColorEnable", true, true);
|
||||||
setFlag("isBetaEnabled", true, true);
|
|
||||||
setFlag("isDevelopEnabled", false, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initDevelop() { // 上書き
|
private void initDevelop() { // 上書き
|
||||||
setFlag("isBaseEnabled", false, true);
|
setFlag("dynamicColorEnable", true, true);
|
||||||
setFlag("isBetaEnabled", false, true);
|
|
||||||
setFlag("isDevelopEnabled", true, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// utils
|
// utils
|
||||||
|
@ -109,7 +105,12 @@ public class FeatureFlagImpl implements FeatureFlag {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(String key) {
|
public boolean isEnabled(String key) {
|
||||||
return Objects.requireNonNull(featureFlagMap.get(key)).state();
|
try {
|
||||||
|
return Objects.requireNonNull(featureFlagMap.get(key)).getValue();
|
||||||
|
} catch (NullPointerException e) {
|
||||||
|
logger.error("Invalid key: " + key + "\nReturning false");
|
||||||
|
return false; // 存在しないキーはクラッシュ回避のためfalseを返す
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue
Block a user