diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 7b71903..0c0c338 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -3,20 +3,7 @@ - - - - - - - - - - - - - - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6d3fd6..36dc8f8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,6 +15,9 @@ android:supportsRtl="true" android:theme="@style/Theme.KidShift" tools:targetApi="31"> + diff --git a/app/src/main/java/one/nem/kidshift/LoginActivity.java b/app/src/main/java/one/nem/kidshift/LoginActivity.java index d9a6a9b..2c070b8 100644 --- a/app/src/main/java/one/nem/kidshift/LoginActivity.java +++ b/app/src/main/java/one/nem/kidshift/LoginActivity.java @@ -1,5 +1,6 @@ package one.nem.kidshift; +import android.content.Intent; import android.os.Bundle; import android.widget.EditText; @@ -17,10 +18,11 @@ import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; import one.nem.kidshift.data.UserSettings; import one.nem.kidshift.data.retrofit.KidShiftApiService; -import one.nem.kidshift.data.retrofit.model.parent.auth.ParentLoginRequest; -import one.nem.kidshift.data.retrofit.model.parent.auth.ParentLoginResponse; +import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthRequest; +import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthResponse; import one.nem.kidshift.utils.KSLogger; import one.nem.kidshift.utils.factory.KSLoggerFactory; +import retrofit2.Call; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; @@ -36,6 +38,9 @@ public class LoginActivity extends AppCompatActivity { @Inject UserSettings userSettings; + @Inject + KidShiftApiService kidShiftApiService; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -49,61 +54,41 @@ public class LoginActivity extends AppCompatActivity { logger = loggerFactory.create("LoginActivity"); - // Retrofit init - KidShiftApiService apiService = new Retrofit.Builder() - .baseUrl("https://kidshift-beta.nem.one/") - .addConverterFactory(GsonConverterFactory.create()) - .build() - .create(KidShiftApiService.class); - EditText emailEditText = findViewById(R.id.emailEditText); EditText passwordEditText = findViewById(R.id.passwordEditText); findViewById(R.id.loginButton).setOnClickListener(v -> { - CompletableFuture.supplyAsync(() -> { + String email = emailEditText.getText().toString(); // TODO: メールアドレスのバリデーション + String password = passwordEditText.getText().toString(); + + CompletableFuture.runAsync(() -> { + Call call = kidShiftApiService.parentLogin(new ParentAuthRequest(email, password)); try { - Response response = apiService.parentLogin( - new ParentLoginRequest( - emailEditText.getText().toString(), - passwordEditText.getText().toString() - )).execute(); - - return response; - } catch (IOException e) { - logger.error("IOException"); - throw new RuntimeException(e); - } - }).thenAccept(response -> { - if (response.isSuccessful()) { - logger.info("Login Success"); - logger.debug("AccessToken: " + response.body().getAccessToken()); - - UserSettings.AppCommonSetting appCommonSetting = userSettings.getAppCommonSetting(); - appCommonSetting.setLoggedIn(true); - appCommonSetting.setAccessToken(response.body().getAccessToken()); - appCommonSetting.setChildMode(false); - - finish(); - } else { - logger.error("Login Failed"); - try { - logger.debug("Response: " + response.errorBody().string()); - } catch (IOException e) { - logger.error("IOException while reading error body"); + Response response = call.execute(); + if (response.isSuccessful()) { + ParentAuthResponse parentAuthResponse = response.body(); + if (parentAuthResponse == null || parentAuthResponse.getAccessToken() == null) { + // エラー処理 + logger.error("ParentAuthResponseがnullまたはAccessTokenがnullです"); + return; + } + userSettings.getAppCommonSetting().setLoggedIn(true); + userSettings.getAppCommonSetting().setAccessToken(parentAuthResponse.getAccessToken()); + } else { + logger.error("リクエストに失敗しました"); + // エラー処理 } - // ログイン失敗時の処理 + } catch (Exception e) { + logger.error("リクエストに失敗しました: " + e.getMessage()); + e.printStackTrace(); } - }).exceptionally(e -> { - logger.error("Exception occurred: " + e.getMessage()); - return null; + }).thenRun(() -> { + startActivity(new Intent(this, MainActivity.class)); }); }); - // for Debug - findViewById(R.id.loginButton).setOnLongClickListener(v -> { - // ログイン画面をバイパスしてメイン画面に遷移 - finish(); - return true; + findViewById(R.id.intentRegisterButton).setOnClickListener(v -> { + startActivity(new Intent(this, RegisterActivity.class)); }); } } \ No newline at end of file diff --git a/app/src/main/java/one/nem/kidshift/RegisterActivity.java b/app/src/main/java/one/nem/kidshift/RegisterActivity.java new file mode 100644 index 0000000..f251e9d --- /dev/null +++ b/app/src/main/java/one/nem/kidshift/RegisterActivity.java @@ -0,0 +1,93 @@ +package one.nem.kidshift; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.EditText; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import java.util.concurrent.CompletableFuture; + +import javax.inject.Inject; + +import dagger.hilt.android.AndroidEntryPoint; +import one.nem.kidshift.data.UserSettings; +import one.nem.kidshift.data.retrofit.KidShiftApiService; +import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthRequest; +import one.nem.kidshift.data.retrofit.model.parent.auth.ParentAuthResponse; +import one.nem.kidshift.utils.KSLogger; +import one.nem.kidshift.utils.factory.KSLoggerFactory; +import retrofit2.Call; +import retrofit2.Response; + +@AndroidEntryPoint +public class RegisterActivity extends AppCompatActivity { + + + @Inject + KidShiftApiService kidShiftApiService; + + @Inject + UserSettings userSettings; + + @Inject + KSLoggerFactory loggerFactory; + + private KSLogger logger; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_register); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + logger = loggerFactory.create("RegisterActivity"); + + EditText emailEditText = findViewById(R.id.emailEditText); // TODO: メールアドレスのバリデーション + EditText passwordEditText = findViewById(R.id.passwordEditText); + + findViewById(R.id.registerButton).setOnClickListener(v -> { + String email = emailEditText.getText().toString(); + String password = passwordEditText.getText().toString(); + + CompletableFuture.runAsync(() -> { + Call call = kidShiftApiService.parentRegister(new ParentAuthRequest(email, password)); + try { + Response response = call.execute(); + if (response.isSuccessful()) { + ParentAuthResponse parentAuthResponse = response.body(); + if (parentAuthResponse == null || parentAuthResponse.getAccessToken() == null) { + // エラー処理 + logger.error("ParentAuthResponseがnullまたはAccessTokenがnullです"); + return; + } + userSettings.getAppCommonSetting().setLoggedIn(true); + userSettings.getAppCommonSetting().setAccessToken(parentAuthResponse.getAccessToken()); + } else { + logger.error("リクエストに失敗しました"); + // エラー処理 + } + } catch (Exception e) { + logger.error("リクエストに失敗しました: " + e.getMessage()); + e.printStackTrace(); + } + }).thenRun(() -> { + startActivity(new Intent(this, MainActivity.class)); + }); + }); + + findViewById(R.id.intentLoginButton).setOnClickListener(v -> { + startActivity(new Intent(this, LoginActivity.class)); + }); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 389d6ef..4807f50 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -38,16 +38,33 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="※Loginボタン長押しでBypass" - app:layout_constraintBottom_toTopOf="@+id/loginButton" + app:layout_constraintBottom_toTopOf="@+id/linearLayout2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> -