package com.example.citrusclient.views; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; 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 retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; import com.example.citrusclient.Citrus; import com.example.citrusclient.R; import com.example.citrusclient.rest.AccountsRest; import org.w3c.dom.Text; public class SignUpActivity extends AppCompatActivity { private Retrofit retrofit; private AccountsRest accountsRest; private Citrus citrus; //画面起動時 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_sign_up); 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; }); //citrusと連携 citrus = (Citrus) this.getApplication(); //端末に情報が登録されているとき if ((citrus.getToken() != null)&&(citrus.getAccountId() != null)){ System.out.println("アカウント登録済み"); //MainActivityに遷移 Intent intent = new Intent(SignUpActivity.this,MainActivity.class); startActivity(intent); } //通信の初期化 this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/citrus/") .addConverterFactory(JacksonConverterFactory.create()) .build(); this.accountsRest = retrofit.create(AccountsRest.class); findViewById(R.id.button_signup).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //IDとPWの登録 EditText editid = (EditText) findViewById(R.id.text_id); String id = editid.getText().toString().trim(); EditText editpw = (EditText) findViewById(R.id.put_pw); String pw = editpw.getText().toString().trim(); final Handler handler = new Handler(); System.out.println("テスト入力完了"); //入力した文字に空白が含まれている場合 if(id.contains(" ") || pw.contains(" ")){ System.out.println("不適切入力"); ((TextView)findViewById(R.id.textView_respons)).setText("空白を含まないように入力してください"); } //入力欄が空欄の時 if(id.isEmpty() || pw.isEmpty() || id.trim().isEmpty() || pw.trim().isEmpty() ){ System.out.println("不適切入力"); ((TextView)findViewById(R.id.textView_respons)).setText("適切に入力してください"); }else if(!id.isEmpty() && !pw.isEmpty() && !id.trim().isEmpty() && !pw.trim().isEmpty() && !id.contains(" ") && !pw.contains(" ") ){ //入力欄が全て適切に入力された場合の処理 Call<String> call = accountsRest.signup(id,pw); call.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { if (response.isSuccessful()){ System.out.println("通信成功"); //端末にtoken.id登録 String token = response.body(); citrus.setToken(token); citrus.setAccountId(id); //画面遷移 handler.post(new Runnable() { @Override public void run() { Intent intent = new Intent(SignUpActivity.this,MainActivity.class); startActivity(intent); } }); }else{ //通信可能(ただしエラーが発生した場合) //404がPW入力されてないときだけど、前で定義しているからいらないよね..? System.out.println("通信可能"); if(response.code()==409){ ((TextView)findViewById(R.id.textView_respons)).setText(("入力したアカウントIDは既に使用されています")); } } } //通信失敗 @Override public void onFailure(Call<String> call, Throwable t) { System.out.println("通信失敗"); System.out.println(t); } }); } } }); //ボタンを押してlogin画面に遷移 Button button_login = (Button) findViewById(R.id.button_login); button_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(SignUpActivity.this,LoginActivity.class); startActivity(intent); } }); } }