From 159cf15b9fb364f80999a067d6f8a61d4e452ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 10:43:37 +0900 Subject: [PATCH 01/16] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=95?= =?UTF-8?q?=E3=82=A7=E3=83=BC=E3=82=B9=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/src/main/java/one/nem/kidshift/data/UserSettings.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/src/main/java/one/nem/kidshift/data/UserSettings.java b/data/src/main/java/one/nem/kidshift/data/UserSettings.java index a4fbdc5..cb7ba42 100644 --- a/data/src/main/java/one/nem/kidshift/data/UserSettings.java +++ b/data/src/main/java/one/nem/kidshift/data/UserSettings.java @@ -2,6 +2,10 @@ package one.nem.kidshift.data; public interface UserSettings { + interface Api { + String getApiBaseUrl(); + } + interface Task { int getDefaultIconColor(); String getDefaultIconEmoji(); From a2eaaae3170d2e28afa4f49acbb357fd09d3602b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 10:47:04 +0900 Subject: [PATCH 02/16] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E5=90=8D?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3,=20=E3=83=80=E3=83=9F=E3=83=BC=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/kidshift/data/UserSettings.java | 7 +++++-- .../data/impl/UserSettingsDummyImpl.java | 20 ++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/data/src/main/java/one/nem/kidshift/data/UserSettings.java b/data/src/main/java/one/nem/kidshift/data/UserSettings.java index cb7ba42..0398e56 100644 --- a/data/src/main/java/one/nem/kidshift/data/UserSettings.java +++ b/data/src/main/java/one/nem/kidshift/data/UserSettings.java @@ -2,11 +2,14 @@ package one.nem.kidshift.data; public interface UserSettings { - interface Api { + ApiSetting getApiSetting(); + TaskSetting getTaskSetting(); + + interface ApiSetting { String getApiBaseUrl(); } - interface Task { + interface TaskSetting { int getDefaultIconColor(); String getDefaultIconEmoji(); } diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java index faa8f88..99d186d 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java @@ -2,11 +2,29 @@ package one.nem.kidshift.data.impl; import android.graphics.Color; +import dagger.Binds; import one.nem.kidshift.data.UserSettings; public class UserSettingsDummyImpl implements UserSettings { - class Task implements UserSettings.Task { + @Override + public UserSettings.TaskSetting getTaskSetting() { + return new TaskSettingImpl(); + } + + @Override + public UserSettings.ApiSetting getApiSetting() { + return new ApiSettingImpl(); + } + + public class ApiSettingImpl implements UserSettings.ApiSetting { + @Override + public String getApiBaseUrl() { + return "https://kidshift-beta.nem.one/"; + } + } + + public class TaskSettingImpl implements UserSettings.TaskSetting { @Override public int getDefaultIconColor() { return Color.parseColor("#FF0000"); From 0ef8096f5d6205cbc89735e267d2f378026d83b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 10:47:31 +0900 Subject: [PATCH 03/16] =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=83=A9=E3=82=AF=E3=82=BF=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/kidshift/data/impl/UserSettingsDummyImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java index 99d186d..8a93d69 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java @@ -2,11 +2,17 @@ package one.nem.kidshift.data.impl; import android.graphics.Color; +import javax.inject.Inject; + import dagger.Binds; import one.nem.kidshift.data.UserSettings; public class UserSettingsDummyImpl implements UserSettings { + @Inject + public UserSettingsDummyImpl() { + } + @Override public UserSettings.TaskSetting getTaskSetting() { return new TaskSettingImpl(); From 09dec01151563dfe66ad43cbefc4784a227e1884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 10:49:58 +0900 Subject: [PATCH 04/16] =?UTF-8?q?=E3=83=87=E3=83=90=E3=83=83=E3=82=B0?= =?UTF-8?q?=E3=83=A1=E3=83=8B=E3=83=A5=E3=83=BC=E3=81=A7=E8=AA=AD=E3=81=BF?= =?UTF-8?q?=E8=BE=BC=E3=82=81=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/kidshift/feature/debug/DebugCommandProcessor.java | 7 ++++++- .../kidshift/feature/debug/DebugDebugConsoleFragment.java | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java index d34b5f2..2c08176 100644 --- a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java +++ b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java @@ -10,6 +10,7 @@ import dagger.hilt.EntryPoint; import dagger.hilt.InstallIn; import dagger.hilt.android.AndroidEntryPoint; import dagger.hilt.android.components.FragmentComponent; +import one.nem.kidshift.data.UserSettings; import one.nem.kidshift.utils.FeatureFlag; import one.nem.kidshift.utils.KSLogger; import one.nem.kidshift.utils.models.LogModel; @@ -20,12 +21,16 @@ public class DebugCommandProcessor { KSLogger ksLogger; FeatureFlag featureFlag; + UserSettings userSettings; + public DebugCommandProcessor( KSLogger ksLogger, - FeatureFlag featureFlag + FeatureFlag featureFlag, + UserSettings userSettings ) { this.ksLogger = ksLogger; this.featureFlag = featureFlag; + this.userSettings = userSettings; } public String execute(String command) { diff --git a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugDebugConsoleFragment.java b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugDebugConsoleFragment.java index 76e58d1..1c6ccd9 100644 --- a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugDebugConsoleFragment.java +++ b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugDebugConsoleFragment.java @@ -16,6 +16,7 @@ import java.util.List; import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; +import one.nem.kidshift.data.UserSettings; import one.nem.kidshift.feature.debug.adapter.DebugCommandListItemAdapter; import one.nem.kidshift.feature.debug.model.DebugCommandItemModel; import one.nem.kidshift.utils.FeatureFlag; @@ -29,6 +30,9 @@ public class DebugDebugConsoleFragment extends Fragment { @Inject FeatureFlag featureFlag; + @Inject + UserSettings userSettings; + private final List debugCommandItemModels = new ArrayList<>(); DebugCommandListItemAdapter debugCommandItemAdapter; @@ -59,7 +63,7 @@ public class DebugDebugConsoleFragment extends Fragment { TextView debugCommandInput = view.findViewById(R.id.debugCommandEditText); view.findViewById(R.id.debugCommandExecuteButton).setOnClickListener(v -> { DebugCommandProcessor debugCommandProcessor = new DebugCommandProcessor( - ksLogger, featureFlag); + ksLogger, featureFlag, userSettings); debugCommandItemModels.add( new DebugCommandItemModel( debugCommandInput.getText().toString(), From 0892bc12a986e166de755641f85f6b1837c0a57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 11:01:19 +0900 Subject: [PATCH 05/16] =?UTF-8?q?=E3=83=87=E3=83=90=E3=83=83=E3=82=B0?= =?UTF-8?q?=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E5=AE=9F=E8=A3=85=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/debug/DebugCommandProcessor.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java index 2c08176..8673026 100644 --- a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java +++ b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java @@ -1,5 +1,7 @@ package one.nem.kidshift.feature.debug; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -57,11 +59,45 @@ public class DebugCommandProcessor { return executeLog(commandArray); case "flag": return executeFlag(commandArray); + case "setting": + return executeSetting(commandArray); default: throw new InvalidCommandException(); } } + private String executeSetting(String[] commandArray) { + commandArray = shiftArray(commandArray); + switch (commandArray[0]) { + case "get": + commandArray = shiftArray(commandArray); + Class settingClazz; + // リフレクションで取得 + try { + // userSettingsのgetterでsettingクラスを取得 + Method method = userSettings.getClass().getMethod("get" + commandArray[0]); + settingClazz = method.getReturnType(); + + //settingクラスのgetterで値を取得 + Method settingMethod = settingClazz.getMethod("get" + commandArray[1]); + return settingMethod.invoke(userSettings.getTaskSetting()).toString(); + } catch (NoSuchMethodException e) { + return "Method" + commandArray[0] + " not found \n" + e.getMessage(); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + return "Method" + commandArray[0] + " not accessible \n" + e.getMessage(); + } catch (Exception e) { + return "Something went wrong! \n" + e.getMessage(); + } + case "set": + commandArray = shiftArray(commandArray); + return "TODO"; + default: + return "TODO"; + } + } + private String executeLog(String[] commandArray) { commandArray = shiftArray(commandArray); switch (commandArray[0]) { From 0cae63b51217f36e0d07e5a3dbf56668d3b1bae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 11:11:02 +0900 Subject: [PATCH 06/16] =?UTF-8?q?=E3=83=87=E3=83=90=E3=83=83=E3=82=B0?= =?UTF-8?q?=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/debug/DebugCommandProcessor.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java index 8673026..7fca9a1 100644 --- a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java +++ b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java @@ -68,19 +68,19 @@ public class DebugCommandProcessor { private String executeSetting(String[] commandArray) { commandArray = shiftArray(commandArray); + Class settingClazz; switch (commandArray[0]) { case "get": commandArray = shiftArray(commandArray); - Class settingClazz; // リフレクションで取得 try { // userSettingsのgetterでsettingクラスを取得 Method method = userSettings.getClass().getMethod("get" + commandArray[0]); - settingClazz = method.getReturnType(); + Object setting = method.invoke(userSettings); //settingクラスのgetterで値を取得 - Method settingMethod = settingClazz.getMethod("get" + commandArray[1]); - return settingMethod.invoke(userSettings.getTaskSetting()).toString(); + Method settingMethod = setting.getClass().getMethod("get" + commandArray[1]); + return settingMethod.invoke(setting).toString(); } catch (NoSuchMethodException e) { return "Method" + commandArray[0] + " not found \n" + e.getMessage(); } catch (InvocationTargetException e) { @@ -92,7 +92,25 @@ public class DebugCommandProcessor { } case "set": commandArray = shiftArray(commandArray); - return "TODO"; + // リフレクションで取得 + try { + // userSettingsのgetterでsettingクラスを取得 + Method method = userSettings.getClass().getMethod("get" + commandArray[0]); + Object setting = method.invoke(userSettings); + + //settingクラスのsetterで値を設定 + Method settingMethod = setting.getClass().getMethod("set" + commandArray[1], String.class); // TODO: String以外の型に対応 + settingMethod.invoke(setting, commandArray[2]); + return "Setting set!"; + } catch (NoSuchMethodException e) { + return "Method" + commandArray[0] + " not found \n" + e.getMessage(); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + return "Method" + commandArray[0] + " not accessible \n" + e.getMessage(); + } catch (Exception e) { + return "Something went wrong! \n" + e.getMessage(); + } default: return "TODO"; } From 542db318a8a21acdccddc495cf71cba3e74b35bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 11:11:44 +0900 Subject: [PATCH 07/16] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/kidshift/feature/debug/DebugCommandProcessor.java | 1 + 1 file changed, 1 insertion(+) diff --git a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java index 7fca9a1..51990e8 100644 --- a/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java +++ b/feature/debug/src/main/java/one/nem/kidshift/feature/debug/DebugCommandProcessor.java @@ -66,6 +66,7 @@ public class DebugCommandProcessor { } } + // TODO: リフレクション処理切り出し, 複数の引数に対応, String以外の引数に対応 private String executeSetting(String[] commandArray) { commandArray = shiftArray(commandArray); Class settingClazz; From d2c72109b8eb7697d7cee5b523ba71e5ea9c6b17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 11:22:53 +0900 Subject: [PATCH 08/16] =?UTF-8?q?Setter=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/kidshift/data/UserSettings.java | 4 ++++ .../kidshift/data/impl/UserSettingsDummyImpl.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/data/src/main/java/one/nem/kidshift/data/UserSettings.java b/data/src/main/java/one/nem/kidshift/data/UserSettings.java index 0398e56..517306f 100644 --- a/data/src/main/java/one/nem/kidshift/data/UserSettings.java +++ b/data/src/main/java/one/nem/kidshift/data/UserSettings.java @@ -7,10 +7,14 @@ public interface UserSettings { interface ApiSetting { String getApiBaseUrl(); + void setApiBaseUrl(String url); } interface TaskSetting { int getDefaultIconColor(); + void setDefaultIconColor(int color); String getDefaultIconEmoji(); + void setDefaultIconEmoji(String emoji); + } } diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java index 8a93d69..2386b07 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsDummyImpl.java @@ -28,6 +28,11 @@ public class UserSettingsDummyImpl implements UserSettings { public String getApiBaseUrl() { return "https://kidshift-beta.nem.one/"; } + + @Override + public void setApiBaseUrl(String url) { + + } } public class TaskSettingImpl implements UserSettings.TaskSetting { @@ -36,9 +41,19 @@ public class UserSettingsDummyImpl implements UserSettings { return Color.parseColor("#FF0000"); } + @Override + public void setDefaultIconColor(int color) { + + } + @Override public String getDefaultIconEmoji() { return "🤔"; } + + @Override + public void setDefaultIconEmoji(String emoji) { + + } } } From a5a0c48cb91a93a850852f456d400fc65641700b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 11:40:05 +0900 Subject: [PATCH 09/16] =?UTF-8?q?Impl=E4=BD=9C=E6=88=90,=20=E3=83=A1?= =?UTF-8?q?=E3=82=BD=E3=83=83=E3=83=89=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kidshift/data/impl/UserSettingsImpl.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java new file mode 100644 index 0000000..99ef54f --- /dev/null +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java @@ -0,0 +1,49 @@ +package one.nem.kidshift.data.impl; + +import one.nem.kidshift.data.UserSettings; + +public class UserSettingsImpl implements UserSettings { + @Override + public ApiSetting getApiSetting() { + return null; + } + + @Override + public TaskSetting getTaskSetting() { + return null; + } + + public class ApiSettingImpl implements UserSettings.ApiSetting { + @Override + public String getApiBaseUrl() { + return "https://kidshift-beta.nem.one/"; + } + + @Override + public void setApiBaseUrl(String url) { + + } + } + + public class TaskSettingImpl implements UserSettings.TaskSetting { + @Override + public int getDefaultIconColor() { + return 0; + } + + @Override + public void setDefaultIconColor(int color) { + + } + + @Override + public String getDefaultIconEmoji() { + return ""; + } + + @Override + public void setDefaultIconEmoji(String emoji) { + + } + } +} From d03ec885e8d725caa58e0ca82d18fbb3d9f6d4b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 11:41:19 +0900 Subject: [PATCH 10/16] =?UTF-8?q?sharedPrefUtils,=20=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=83=A9=E3=82=AF=E3=82=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/kidshift/data/impl/UserSettingsImpl.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java index 99ef54f..76e0cbc 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java @@ -1,16 +1,27 @@ package one.nem.kidshift.data.impl; +import javax.inject.Inject; + import one.nem.kidshift.data.UserSettings; +import one.nem.kidshift.utils.factory.SharedPrefUtilsFactory; public class UserSettingsImpl implements UserSettings { + + SharedPrefUtilsFactory sharedPrefUtilsFactory; + + @Inject + public UserSettingsImpl(SharedPrefUtilsFactory sharedPrefUtilsFactory) { + this.sharedPrefUtilsFactory = sharedPrefUtilsFactory; + } + @Override public ApiSetting getApiSetting() { - return null; + return new ApiSettingImpl(); } @Override public TaskSetting getTaskSetting() { - return null; + return new TaskSettingImpl(); } public class ApiSettingImpl implements UserSettings.ApiSetting { From 86c1b6a552bfb91c036bd73f80cf88f8404881cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 12:01:42 +0900 Subject: [PATCH 11/16] =?UTF-8?q?ApiSetting=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kidshift/data/impl/UserSettingsImpl.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java index 76e0cbc..479ef3a 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java @@ -1,8 +1,14 @@ package one.nem.kidshift.data.impl; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Objects; + import javax.inject.Inject; import one.nem.kidshift.data.UserSettings; +import one.nem.kidshift.utils.SharedPrefUtils; import one.nem.kidshift.utils.factory.SharedPrefUtilsFactory; public class UserSettingsImpl implements UserSettings { @@ -25,14 +31,34 @@ public class UserSettingsImpl implements UserSettings { } public class ApiSettingImpl implements UserSettings.ApiSetting { + + SharedPrefUtils sharedPrefUtils; + + String apiBaseUrl; + + ApiSettingImpl() { + sharedPrefUtils = sharedPrefUtilsFactory.create("user_settings"); + ApiSettingImpl apiSetting = sharedPrefUtils.getObject("api_setting", ApiSettingImpl.class); + // TODO: リフレクションつかって一括でやる?(プロパティ数があまりにも増えるなら?), 三項演算子やめる?, デフォルト値の設定方法を改善する + if (apiSetting != null) { + apiBaseUrl = apiSetting.getApiBaseUrl() == null ? "https://kidshift-beta.nem.one/" : + Objects.equals(apiSetting.getApiBaseUrl(), "") ? "https://kidshift-beta.nem.one/" : apiSetting.getApiBaseUrl(); + } + } + + private void save() { + sharedPrefUtils.saveObject("api_setting", this); + } + @Override public String getApiBaseUrl() { - return "https://kidshift-beta.nem.one/"; + return apiBaseUrl; } @Override public void setApiBaseUrl(String url) { - + apiBaseUrl = url; + save(); } } From 05ef2a6b071b7eb92655ba822cc08cab7c32b372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 12:03:16 +0900 Subject: [PATCH 12/16] =?UTF-8?q?transient=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/kidshift/data/impl/UserSettingsImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java index 479ef3a..c635c52 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java @@ -32,6 +32,7 @@ public class UserSettingsImpl implements UserSettings { public class ApiSettingImpl implements UserSettings.ApiSetting { + transient SharedPrefUtils sharedPrefUtils; String apiBaseUrl; @@ -63,6 +64,11 @@ public class UserSettingsImpl implements UserSettings { } public class TaskSettingImpl implements UserSettings.TaskSetting { + + SharedPrefUtils sharedPrefUtils; + + int defaultIconColor; + @Override public int getDefaultIconColor() { return 0; From 666747312bec58a30d7ffcd653bd8887dd6a507e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 12:07:01 +0900 Subject: [PATCH 13/16] =?UTF-8?q?TaskSetting=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kidshift/data/impl/UserSettingsImpl.java | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java index c635c52..fcaf33f 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java @@ -42,8 +42,7 @@ public class UserSettingsImpl implements UserSettings { ApiSettingImpl apiSetting = sharedPrefUtils.getObject("api_setting", ApiSettingImpl.class); // TODO: リフレクションつかって一括でやる?(プロパティ数があまりにも増えるなら?), 三項演算子やめる?, デフォルト値の設定方法を改善する if (apiSetting != null) { - apiBaseUrl = apiSetting.getApiBaseUrl() == null ? "https://kidshift-beta.nem.one/" : - Objects.equals(apiSetting.getApiBaseUrl(), "") ? "https://kidshift-beta.nem.one/" : apiSetting.getApiBaseUrl(); + apiBaseUrl = apiSetting.apiBaseUrl.isEmpty() ? "https://kidshift-beta.nem.one/" : apiSetting.apiBaseUrl; } } @@ -65,28 +64,46 @@ public class UserSettingsImpl implements UserSettings { public class TaskSettingImpl implements UserSettings.TaskSetting { + transient SharedPrefUtils sharedPrefUtils; int defaultIconColor; + String defaultIconEmoji; + + TaskSettingImpl() { + sharedPrefUtils = sharedPrefUtilsFactory.create("user_settings"); + TaskSettingImpl taskSetting = sharedPrefUtils.getObject("task_setting", TaskSettingImpl.class); + if (taskSetting != null) { + defaultIconColor = taskSetting.getDefaultIconColor() == 0 ? 0 : taskSetting.getDefaultIconColor(); + defaultIconEmoji = taskSetting.getDefaultIconEmoji().isEmpty() ? "" : taskSetting.getDefaultIconEmoji(); + } + } + + private void save() { + sharedPrefUtils.saveObject("task_setting", this); + } + @Override public int getDefaultIconColor() { - return 0; + return defaultIconColor; } @Override public void setDefaultIconColor(int color) { - + defaultIconColor = color; + save(); } @Override public String getDefaultIconEmoji() { - return ""; + return defaultIconEmoji; } @Override public void setDefaultIconEmoji(String emoji) { - + defaultIconEmoji = emoji; + save(); } } } From 3cc5b2ed787478d399f59e8cecc3983e9bbbf9d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 12:07:37 +0900 Subject: [PATCH 14/16] =?UTF-8?q?=E3=83=90=E3=82=A4=E3=83=B3=E3=83=89?= =?UTF-8?q?=E5=88=87=E3=82=8A=E6=9B=BF=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/kidshift/data/modules/UserSettingsDummyModule.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/data/src/main/java/one/nem/kidshift/data/modules/UserSettingsDummyModule.java b/data/src/main/java/one/nem/kidshift/data/modules/UserSettingsDummyModule.java index 037555f..ee20969 100644 --- a/data/src/main/java/one/nem/kidshift/data/modules/UserSettingsDummyModule.java +++ b/data/src/main/java/one/nem/kidshift/data/modules/UserSettingsDummyModule.java @@ -6,11 +6,15 @@ import dagger.hilt.InstallIn; import dagger.hilt.android.components.FragmentComponent; import one.nem.kidshift.data.UserSettings; import one.nem.kidshift.data.impl.UserSettingsDummyImpl; +import one.nem.kidshift.data.impl.UserSettingsImpl; @Module @InstallIn(FragmentComponent.class) abstract public class UserSettingsDummyModule { +// @Binds +// abstract UserSettings bindUserSettings(UserSettingsDummyImpl userSettingsDummyImpl); + @Binds - abstract UserSettings bindUserSettings(UserSettingsDummyImpl userSettingsDummyImpl); + public abstract UserSettings bindUserSettings(UserSettingsImpl userSettingsImpl); } From d4aed1bb4b0ddc17f81582d807685e508e0f4974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 12:08:03 +0900 Subject: [PATCH 15/16] =?UTF-8?q?Singleton=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/kidshift/data/modules/UserSettingsDummyModule.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/src/main/java/one/nem/kidshift/data/modules/UserSettingsDummyModule.java b/data/src/main/java/one/nem/kidshift/data/modules/UserSettingsDummyModule.java index ee20969..79b9674 100644 --- a/data/src/main/java/one/nem/kidshift/data/modules/UserSettingsDummyModule.java +++ b/data/src/main/java/one/nem/kidshift/data/modules/UserSettingsDummyModule.java @@ -4,12 +4,13 @@ import dagger.Binds; import dagger.Module; import dagger.hilt.InstallIn; import dagger.hilt.android.components.FragmentComponent; +import dagger.hilt.components.SingletonComponent; import one.nem.kidshift.data.UserSettings; import one.nem.kidshift.data.impl.UserSettingsDummyImpl; import one.nem.kidshift.data.impl.UserSettingsImpl; @Module -@InstallIn(FragmentComponent.class) +@InstallIn(SingletonComponent.class) abstract public class UserSettingsDummyModule { // @Binds From 164506647e8ff0a8fd23ce1809495384db033ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Fri, 21 Jun 2024 12:12:09 +0900 Subject: [PATCH 16/16] =?UTF-8?q?Object=E3=81=8C=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=A0=B4=E5=90=88=E3=81=AB=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB?= =?UTF-8?q?=E3=83=88=E5=80=A4=E3=82=92=E5=BE=A9=E5=85=83=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/kidshift/data/impl/UserSettingsImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java index fcaf33f..a3c6726 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/UserSettingsImpl.java @@ -43,6 +43,8 @@ public class UserSettingsImpl implements UserSettings { // TODO: リフレクションつかって一括でやる?(プロパティ数があまりにも増えるなら?), 三項演算子やめる?, デフォルト値の設定方法を改善する if (apiSetting != null) { apiBaseUrl = apiSetting.apiBaseUrl.isEmpty() ? "https://kidshift-beta.nem.one/" : apiSetting.apiBaseUrl; + } else { + apiBaseUrl = "https://kidshift-beta.nem.one/"; } } @@ -77,6 +79,9 @@ public class UserSettingsImpl implements UserSettings { if (taskSetting != null) { defaultIconColor = taskSetting.getDefaultIconColor() == 0 ? 0 : taskSetting.getDefaultIconColor(); defaultIconEmoji = taskSetting.getDefaultIconEmoji().isEmpty() ? "" : taskSetting.getDefaultIconEmoji(); + } else { + defaultIconColor = 0; + defaultIconEmoji = ""; } }