diff --git a/app/src/main/java/one/nem/kidshift/ChildLoginActivity.java b/app/src/main/java/one/nem/kidshift/ChildLoginActivity.java index 349757e..095eee6 100644 --- a/app/src/main/java/one/nem/kidshift/ChildLoginActivity.java +++ b/app/src/main/java/one/nem/kidshift/ChildLoginActivity.java @@ -3,6 +3,9 @@ package one.nem.kidshift; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; +import android.util.Log; +import android.view.KeyEvent; +import android.view.View; import android.widget.EditText; import android.widget.Toast; @@ -12,8 +15,30 @@ import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import javax.inject.Inject; + +import dagger.hilt.android.AndroidEntryPoint; +import one.nem.kidshift.data.ChildData; +import one.nem.kidshift.data.UserSettings; +import one.nem.kidshift.data.retrofit.KidShiftApiService; +import one.nem.kidshift.data.retrofit.model.child.auth.ChildAuthRequest; +import one.nem.kidshift.data.retrofit.model.child.auth.ChildAuthResponse; +import one.nem.kidshift.utils.KSLogger; +import one.nem.kidshift.utils.factory.KSLoggerFactory; +import retrofit2.Call; + +@AndroidEntryPoint public class ChildLoginActivity extends AppCompatActivity { + @Inject + UserSettings userSettings; + @Inject + KSLoggerFactory loggerFactory; + @Inject + KidShiftApiService kidShiftApiService; + + private KSLogger logger; + private EditText loginCode1, loginCode2, loginCode3, loginCode4, loginCode5, loginCode6, loginCode7, loginCode8; @@ -28,6 +53,8 @@ public class ChildLoginActivity extends AppCompatActivity { return insets; }); + logger = loggerFactory.create("ChildLoginActivity"); + // コードのフォーカスを自動で移動する loginCode1 = findViewById(R.id.loginCode_1); loginCode2 = findViewById(R.id.loginCode_2); @@ -38,18 +65,34 @@ public class ChildLoginActivity extends AppCompatActivity { loginCode7 = findViewById(R.id.loginCode_7); loginCode8 = findViewById(R.id.loginCode_8); - loginCode1.addTextChangedListener(new LoginCodeTextWatcher(loginCode1, loginCode2)); - loginCode2.addTextChangedListener(new LoginCodeTextWatcher(loginCode2, loginCode3)); - loginCode3.addTextChangedListener(new LoginCodeTextWatcher(loginCode3, loginCode4)); - loginCode4.addTextChangedListener(new LoginCodeTextWatcher(loginCode4, loginCode5)); - loginCode5.addTextChangedListener(new LoginCodeTextWatcher(loginCode5, loginCode6)); - loginCode6.addTextChangedListener(new LoginCodeTextWatcher(loginCode6, loginCode7)); - loginCode7.addTextChangedListener(new LoginCodeTextWatcher(loginCode7, loginCode8)); - loginCode8.addTextChangedListener(new LoginCodeTextWatcher(loginCode8, null)); + loginCode1.addTextChangedListener(new LoginCodeTextWatcher(loginCode1, loginCode2, null)); + loginCode2.addTextChangedListener(new LoginCodeTextWatcher(loginCode2, loginCode3, loginCode1)); + loginCode3.addTextChangedListener(new LoginCodeTextWatcher(loginCode3, loginCode4, loginCode2)); + loginCode4.addTextChangedListener(new LoginCodeTextWatcher(loginCode4, loginCode5, loginCode3)); + loginCode5.addTextChangedListener(new LoginCodeTextWatcher(loginCode5, loginCode6, loginCode4)); + loginCode6.addTextChangedListener(new LoginCodeTextWatcher(loginCode6, loginCode7, loginCode5)); + loginCode7.addTextChangedListener(new LoginCodeTextWatcher(loginCode7, loginCode8, loginCode6)); + loginCode8.addTextChangedListener(new LoginCodeTextWatcher(loginCode8, null, loginCode7)); // ログインボタンを押したときの処理 findViewById(R.id.childLoginButton).setOnClickListener(v -> { - Toast.makeText(this, "ログインコード: " + getLoginCode(), Toast.LENGTH_SHORT).show(); + logger.debug("ログインボタンが押されました"); + Call call = kidShiftApiService.childLogin(new ChildAuthRequest(getLoginCode())); + try { + ChildAuthResponse childAuthResponse = call.execute().body(); + if (childAuthResponse == null || childAuthResponse.getAccessToken() == null) { + // エラー処理 + logger.error("ChildAuthResponseがnullまたはAccessTokenがnullです"); + return; + } + UserSettings.AppCommonSetting appCommonSetting = userSettings.getAppCommonSetting(); + appCommonSetting.setLoggedIn(true); + appCommonSetting.setAccessToken(childAuthResponse.getAccessToken()); + appCommonSetting.setChildMode(true); + } catch (Exception e) { + logger.error("リクエストに失敗しました"); + Toast.makeText(this, "ログインに失敗しました", Toast.LENGTH_SHORT).show(); + } }); } @@ -64,13 +107,15 @@ public class ChildLoginActivity extends AppCompatActivity { loginCode8.getText().toString(); } - private static class LoginCodeTextWatcher implements TextWatcher { + private static class LoginCodeTextWatcher implements TextWatcher, View.OnKeyListener { private EditText currentView; private final EditText nextView; + private final EditText previousView; - LoginCodeTextWatcher(EditText currentView, EditText nextView) { + LoginCodeTextWatcher(EditText currentView, EditText nextView, EditText previousView) { this.currentView = currentView; this.nextView = nextView; + this.previousView = previousView; } @Override @@ -85,5 +130,17 @@ public class ChildLoginActivity extends AppCompatActivity { nextView.requestFocus(); } } + + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { +// if (keyCode == KeyEvent.KEYCODE_DEL && event.getAction() == KeyEvent.ACTION_DOWN) { // TODO: バックスペースの処理 +// EditText currentView = (EditText) v; +// if (currentView.getText().length() == 0 && previousView != null) { +// previousView.requestFocus(); +// } +// } +// return false; + return true; + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_child_login.xml b/app/src/main/res/layout/activity_child_login.xml index ce01a7f..bed3ed3 100644 --- a/app/src/main/res/layout/activity_child_login.xml +++ b/app/src/main/res/layout/activity_child_login.xml @@ -41,49 +41,49 @@ diff --git a/data/src/main/java/one/nem/kidshift/data/retrofit/KidShiftApiService.java b/data/src/main/java/one/nem/kidshift/data/retrofit/KidShiftApiService.java index 405f8b4..de4f256 100644 --- a/data/src/main/java/one/nem/kidshift/data/retrofit/KidShiftApiService.java +++ b/data/src/main/java/one/nem/kidshift/data/retrofit/KidShiftApiService.java @@ -5,6 +5,8 @@ import one.nem.kidshift.data.retrofit.model.child.ChildAddRequest; import one.nem.kidshift.data.retrofit.model.child.ChildListResponse; import one.nem.kidshift.data.retrofit.model.child.ChildLoginCodeResponse; import one.nem.kidshift.data.retrofit.model.child.ChildResponse; +import one.nem.kidshift.data.retrofit.model.child.auth.ChildAuthRequest; +import one.nem.kidshift.data.retrofit.model.child.auth.ChildAuthResponse; import one.nem.kidshift.data.retrofit.model.parent.ParentInfoResponse; import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthRequest; import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthResponse; @@ -43,6 +45,14 @@ public interface KidShiftApiService { @POST("/parent/auth/register") Call parentRegister(@Body ParentAuthRequest request); + /** + * 子供ログイン処理 + * @param request ChildAuthRequest + * @return ChildAuthResponse + */ + @POST("/child/auth/login") + Call childLogin(@Body ChildAuthRequest request); + /** * 保護者アカウント情報取得処理 * @return ParentInfoResponse diff --git a/data/src/main/java/one/nem/kidshift/data/retrofit/model/child/auth/ChildAuthRequest.java b/data/src/main/java/one/nem/kidshift/data/retrofit/model/child/auth/ChildAuthRequest.java new file mode 100644 index 0000000..1b6b40d --- /dev/null +++ b/data/src/main/java/one/nem/kidshift/data/retrofit/model/child/auth/ChildAuthRequest.java @@ -0,0 +1,17 @@ +package one.nem.kidshift.data.retrofit.model.child.auth; + +public class ChildAuthRequest { + private String loginCode; + + public ChildAuthRequest(String loginCode) { + this.loginCode = loginCode; + } + + public String getLoginCode() { + return loginCode; + } + + public void setLoginCode(String loginCode) { + this.loginCode = loginCode; + } +} diff --git a/data/src/main/java/one/nem/kidshift/data/retrofit/model/child/auth/ChildAuthResponse.java b/data/src/main/java/one/nem/kidshift/data/retrofit/model/child/auth/ChildAuthResponse.java new file mode 100644 index 0000000..191f626 --- /dev/null +++ b/data/src/main/java/one/nem/kidshift/data/retrofit/model/child/auth/ChildAuthResponse.java @@ -0,0 +1,17 @@ +package one.nem.kidshift.data.retrofit.model.child.auth; + +public class ChildAuthResponse { + private String accessToken; + + public ChildAuthResponse(String accessToken) { + this.accessToken = accessToken; + } + + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } +}