feature/child_mode #155
|
@ -3,6 +3,9 @@ package one.nem.kidshift;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
import android.view.View;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
@ -12,8 +15,30 @@ import androidx.core.graphics.Insets;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowInsetsCompat;
|
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 {
|
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;
|
private EditText loginCode1, loginCode2, loginCode3, loginCode4, loginCode5, loginCode6, loginCode7, loginCode8;
|
||||||
|
|
||||||
|
@ -28,6 +53,8 @@ public class ChildLoginActivity extends AppCompatActivity {
|
||||||
return insets;
|
return insets;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
logger = loggerFactory.create("ChildLoginActivity");
|
||||||
|
|
||||||
// コードのフォーカスを自動で移動する
|
// コードのフォーカスを自動で移動する
|
||||||
loginCode1 = findViewById(R.id.loginCode_1);
|
loginCode1 = findViewById(R.id.loginCode_1);
|
||||||
loginCode2 = findViewById(R.id.loginCode_2);
|
loginCode2 = findViewById(R.id.loginCode_2);
|
||||||
|
@ -38,18 +65,34 @@ public class ChildLoginActivity extends AppCompatActivity {
|
||||||
loginCode7 = findViewById(R.id.loginCode_7);
|
loginCode7 = findViewById(R.id.loginCode_7);
|
||||||
loginCode8 = findViewById(R.id.loginCode_8);
|
loginCode8 = findViewById(R.id.loginCode_8);
|
||||||
|
|
||||||
loginCode1.addTextChangedListener(new LoginCodeTextWatcher(loginCode1, loginCode2));
|
loginCode1.addTextChangedListener(new LoginCodeTextWatcher(loginCode1, loginCode2, null));
|
||||||
loginCode2.addTextChangedListener(new LoginCodeTextWatcher(loginCode2, loginCode3));
|
loginCode2.addTextChangedListener(new LoginCodeTextWatcher(loginCode2, loginCode3, loginCode1));
|
||||||
loginCode3.addTextChangedListener(new LoginCodeTextWatcher(loginCode3, loginCode4));
|
loginCode3.addTextChangedListener(new LoginCodeTextWatcher(loginCode3, loginCode4, loginCode2));
|
||||||
loginCode4.addTextChangedListener(new LoginCodeTextWatcher(loginCode4, loginCode5));
|
loginCode4.addTextChangedListener(new LoginCodeTextWatcher(loginCode4, loginCode5, loginCode3));
|
||||||
loginCode5.addTextChangedListener(new LoginCodeTextWatcher(loginCode5, loginCode6));
|
loginCode5.addTextChangedListener(new LoginCodeTextWatcher(loginCode5, loginCode6, loginCode4));
|
||||||
loginCode6.addTextChangedListener(new LoginCodeTextWatcher(loginCode6, loginCode7));
|
loginCode6.addTextChangedListener(new LoginCodeTextWatcher(loginCode6, loginCode7, loginCode5));
|
||||||
loginCode7.addTextChangedListener(new LoginCodeTextWatcher(loginCode7, loginCode8));
|
loginCode7.addTextChangedListener(new LoginCodeTextWatcher(loginCode7, loginCode8, loginCode6));
|
||||||
loginCode8.addTextChangedListener(new LoginCodeTextWatcher(loginCode8, null));
|
loginCode8.addTextChangedListener(new LoginCodeTextWatcher(loginCode8, null, loginCode7));
|
||||||
|
|
||||||
// ログインボタンを押したときの処理
|
// ログインボタンを押したときの処理
|
||||||
findViewById(R.id.childLoginButton).setOnClickListener(v -> {
|
findViewById(R.id.childLoginButton).setOnClickListener(v -> {
|
||||||
Toast.makeText(this, "ログインコード: " + getLoginCode(), Toast.LENGTH_SHORT).show();
|
logger.debug("ログインボタンが押されました");
|
||||||
|
Call<ChildAuthResponse> 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();
|
loginCode8.getText().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class LoginCodeTextWatcher implements TextWatcher {
|
private static class LoginCodeTextWatcher implements TextWatcher, View.OnKeyListener {
|
||||||
private EditText currentView;
|
private EditText currentView;
|
||||||
private final EditText nextView;
|
private final EditText nextView;
|
||||||
|
private final EditText previousView;
|
||||||
|
|
||||||
LoginCodeTextWatcher(EditText currentView, EditText nextView) {
|
LoginCodeTextWatcher(EditText currentView, EditText nextView, EditText previousView) {
|
||||||
this.currentView = currentView;
|
this.currentView = currentView;
|
||||||
this.nextView = nextView;
|
this.nextView = nextView;
|
||||||
|
this.previousView = previousView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -85,5 +130,17 @@ public class ChildLoginActivity extends AppCompatActivity {
|
||||||
nextView.requestFocus();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -41,49 +41,49 @@
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/loginCode_1"
|
android:id="@+id/loginCode_1"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:maxWidth="48dp"
|
android:maxWidth="48dp"
|
||||||
android:maxLength="1"
|
android:maxLength="1"
|
||||||
android:textSize="18sp"
|
android:textSize="24sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/loginCode_2"
|
android:id="@+id/loginCode_2"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:maxWidth="48dp"
|
android:maxWidth="48dp"
|
||||||
android:maxLength="1"
|
android:maxLength="1"
|
||||||
android:textSize="18sp"
|
android:textSize="24sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/loginCode_3"
|
android:id="@+id/loginCode_3"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:maxWidth="48dp"
|
android:maxWidth="48dp"
|
||||||
android:maxLength="1"
|
android:maxLength="1"
|
||||||
android:textSize="18sp"
|
android:textSize="24sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/loginCode_4"
|
android:id="@+id/loginCode_4"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:maxWidth="48dp"
|
android:maxWidth="48dp"
|
||||||
android:maxLength="1"
|
android:maxLength="1"
|
||||||
android:textSize="18sp"
|
android:textSize="24sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -92,55 +92,55 @@
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="-"
|
android:text="-"
|
||||||
android:textSize="18sp"
|
android:textSize="34sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/loginCode_5"
|
android:id="@+id/loginCode_5"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:maxWidth="48dp"
|
android:maxWidth="48dp"
|
||||||
android:maxLength="1"
|
android:maxLength="1"
|
||||||
android:textSize="18sp"
|
android:textSize="24sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/loginCode_6"
|
android:id="@+id/loginCode_6"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:maxWidth="48dp"
|
android:maxWidth="48dp"
|
||||||
android:maxLength="1"
|
android:maxLength="1"
|
||||||
android:textSize="18sp"
|
android:textSize="24sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/loginCode_7"
|
android:id="@+id/loginCode_7"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:maxWidth="48dp"
|
android:maxWidth="48dp"
|
||||||
android:maxLength="1"
|
android:maxLength="1"
|
||||||
android:textSize="18sp"
|
android:textSize="24sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/loginCode_8"
|
android:id="@+id/loginCode_8"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:maxWidth="48dp"
|
android:maxWidth="48dp"
|
||||||
android:maxLength="1"
|
android:maxLength="1"
|
||||||
android:textSize="18sp"
|
android:textSize="24sp"
|
||||||
tools:ignore="Autofill,LabelFor" />
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -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.ChildListResponse;
|
||||||
import one.nem.kidshift.data.retrofit.model.child.ChildLoginCodeResponse;
|
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.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.ParentInfoResponse;
|
||||||
import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthRequest;
|
import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthRequest;
|
||||||
import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthResponse;
|
import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthResponse;
|
||||||
|
@ -43,6 +45,14 @@ public interface KidShiftApiService {
|
||||||
@POST("/parent/auth/register")
|
@POST("/parent/auth/register")
|
||||||
Call<ParentAuthResponse> parentRegister(@Body ParentAuthRequest request);
|
Call<ParentAuthResponse> parentRegister(@Body ParentAuthRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子供ログイン処理
|
||||||
|
* @param request ChildAuthRequest
|
||||||
|
* @return ChildAuthResponse
|
||||||
|
*/
|
||||||
|
@POST("/child/auth/login")
|
||||||
|
Call<ChildAuthResponse> childLogin(@Body ChildAuthRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保護者アカウント情報取得処理
|
* 保護者アカウント情報取得処理
|
||||||
* @return ParentInfoResponse
|
* @return ParentInfoResponse
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user