diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java index 596ddc4..275eb6b 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java @@ -1,4 +1,4 @@ -package com.example.tampopo_client.viewModels; +package com.example.tampopo_client.viewmodels; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; @@ -36,7 +36,7 @@ } //viewがobserve出来るように - public MutableLiveData> getSentRequestsLiveData() { + public MutableLiveData> getReceivedRequestsLiveData() { return receivedRequests; } diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java index c9a99ea..b7a0baa 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java @@ -1,4 +1,4 @@ -package com.example.tampopo_client.viewModels; +package com.example.tampopo_client.viewmodels; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java index 362994f..f556cc1 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java @@ -1,4 +1,5 @@ package com.example.tampopo_client.views; + import android.app.Dialog; import android.content.Context; import android.content.Intent; @@ -14,18 +15,25 @@ import androidx.viewpager2.widget.ViewPager2; import com.example.tampopo_client.R; +import com.example.tampopo_client.Tampopo; import com.example.tampopo_client.views.MyFragmentAdapter; import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; +import androidx.lifecycle.ViewModelProvider; +import com.example.tampopo_client.viewmodels.FriendSentRequestViewModel; public class FriendActivity extends AppCompatActivity { private ViewPager2 viewPager; private TabLayout tabLayout; private MyFragmentAdapter adapter; + // フィールド追加 + private FriendSentRequestViewModel friendSentRequestViewModel; + Tampopo tampopo; @Override protected void onCreate(Bundle savedInstanceState) { + tampopo = (Tampopo)getApplication(); super.onCreate(savedInstanceState); setContentView(R.layout.activity_friend); @@ -53,6 +61,9 @@ }); ImageButton openDialogButton = findViewById(R.id.buttonAdd); openDialogButton.setOnClickListener(v -> showAddFriendDialog(this)); + // onCreate内にViewModelの初期化を追加 + friendSentRequestViewModel = new ViewModelProvider(this).get(FriendSentRequestViewModel.class); + } public void showAddFriendDialog(Context context) { @@ -67,9 +78,22 @@ buttonClose.setOnClickListener(v -> dialog.dismiss()); buttonSearch.setOnClickListener(v -> { - String id = editFriendId.getText().toString(); - // TODO: IDを使って検索処理を行う - Toast.makeText(context, "検索: " + id, Toast.LENGTH_SHORT).show(); + String receiverId = editFriendId.getText().toString().trim(); + if (receiverId.isEmpty()) { + Toast.makeText(context, "IDを入力してください", Toast.LENGTH_SHORT).show(); + return; + } + + String senderId = tampopo.getUserId(); // TODO: 実際のIDに置き換え + String token = tampopo.getToken(); // TODO: 実際の認証トークンに置き換え + + friendSentRequestViewModel.sendFriendRequest(senderId, receiverId, token); + + // 成功/失敗メッセージをViewModelから受け取る + friendSentRequestViewModel.getOperationResult().observe(this, result -> { + Toast.makeText(context, result, Toast.LENGTH_SHORT).show(); + dialog.dismiss(); // 送信後にダイアログを閉じる + }); }); dialog.show(); diff --git a/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java b/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java index c3076d4..28da7c6 100644 --- a/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java @@ -29,16 +29,16 @@ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); - Button button_register = (Button) findViewById(R.id.Newregistationbutton); - button_register.setOnClickListener(new View.OnClickListener() { + Button registerButton = (Button) findViewById(R.id.Newregistationbutton); + registerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(LaunchActivity.this,RegisterActivity.class); startActivity(intent); } }); - button_register = (Button) findViewById(R.id.Loginbutton); - button_register.setOnClickListener(new View.OnClickListener() { + registerButton = (Button) findViewById(R.id.Loginbutton); + registerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(LaunchActivity.this,LoginActivity.class); diff --git a/app/src/main/java/com/example/tampopo_client/views/LoginActivity.java b/app/src/main/java/com/example/tampopo_client/views/LoginActivity.java index 64a5c94..e692ebf 100644 --- a/app/src/main/java/com/example/tampopo_client/views/LoginActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/LoginActivity.java @@ -17,6 +17,8 @@ import com.example.tampopo_client.Tampopo; import com.example.tampopo_client.viewmodels.UserViewModel; +import androidx.lifecycle.Observer; + public class LoginActivity extends AppCompatActivity { UserViewModel userViewModel; @@ -40,6 +42,17 @@ } }); + userViewModel.getToken().observe(this, new Observer() { + @Override + public void onChanged(String token) { + if (token != null){ + ((Tampopo) LoginActivity.this.getApplication()).setToken(token); + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + startActivity(intent); + } + } + }); + Button button_login = (Button) findViewById(R.id.loginbutton); button_login.setOnClickListener(new OnClickListener() { @@ -52,13 +65,8 @@ String password = passwordInput.getText().toString(); userViewModel.login(userid, password); - userViewModel.getToken().getValue(); - //TODO:上記のトークンを使ってTampopoクラスにセットするコードを書く - //((Tampopo)this.getApplication).setToken(token); - Intent intent = new Intent(LoginActivity.this, MainActivity.class); - startActivity(intent); } }); diff --git a/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java b/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java index 759f6b6..2bcf88e 100644 --- a/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java @@ -20,6 +20,7 @@ public class RegisterActivity extends AppCompatActivity { private Tampopo tampopo; + private String userId, password; UserViewModel userViewModel; @Override @@ -42,15 +43,25 @@ EditText userIdEditText = findViewById(R.id.editTextUserId); EditText passwordEditText = findViewById(R.id.editTextPassword); + userViewModel.getUser().observe(this, user -> { + if (user != null) { + userViewModel.login(userId, password); + +// Intent intent = new Intent(RegisterActivity.this, MainActivity.class); +// startActivity(intent); +// finish(); + } else { + Toast.makeText(RegisterActivity.this, "アカウント作成に失敗しました", Toast.LENGTH_SHORT).show(); + } + }); //登録 Button registerButton = (Button) findViewById(R.id.Registerbutton); registerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - String userId = userIdEditText.getText().toString().trim(); - String password = passwordEditText.getText().toString().trim(); - + userId = userIdEditText.getText().toString().trim(); + password = passwordEditText.getText().toString().trim(); //空文字チェック if (userId.isEmpty() || password.isEmpty()) { Toast.makeText(RegisterActivity.this, "IDとパスワードを入力してください", Toast.LENGTH_SHORT).show(); @@ -63,17 +74,34 @@ //アカウントの確認、問題なければ通信 //if (userViewModel.getUser().getValue() != null) { - userViewModel.login(userId, password); +// userViewModel.login(userId, password); tampopo.setUserId(userId); tampopo.setPassword(password); - Intent intent = new Intent(RegisterActivity.this, MainActivity.class); - startActivity(intent); +// Intent intent = new Intent(RegisterActivity.this, MainActivity.class); +// startActivity(intent); // } else { // Toast.makeText(RegisterActivity.this, "アカウント作成に失敗しました", Toast.LENGTH_SHORT).show(); // } } }); + //トークン + userViewModel.getToken().observe(this, token -> { + if (token != null && !token.isEmpty()) { + // トークンをTampopoに保存 + tampopo.setToken(token); + tampopo.setUserId(userIdEditText.getText().toString().trim()); + tampopo.setPassword(passwordEditText.getText().toString().trim()); + + // 画面遷移 + Intent intent = new Intent(RegisterActivity.this, MainActivity.class); + startActivity(intent); + finish(); // 戻れないようにする + } else { + Toast.makeText(RegisterActivity.this, "トークン取得に失敗しました", Toast.LENGTH_SHORT).show(); + } + }); + //ログイン画面へ Button loginButton = findViewById(R.id.Loginbutton2); loginButton.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 15a2dfc..b6caa6f 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -101,19 +101,4 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.76" /> - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_add_friend.xml b/app/src/main/res/layout/dialog_add_friend.xml index 4ea31db..99540db 100644 --- a/app/src/main/res/layout/dialog_add_friend.xml +++ b/app/src/main/res/layout/dialog_add_friend.xml @@ -42,7 +42,7 @@ android:id="@+id/button_search" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="検索" android:backgroundTint="#FFD700" + android:text="申請" android:textColor="#000000" /> diff --git a/app/src/main/res/layout/fragment_friend_received.xml b/app/src/main/res/layout/fragment_friend_received.xml index 953cbb9..bdd3cff 100644 --- a/app/src/main/res/layout/fragment_friend_received.xml +++ b/app/src/main/res/layout/fragment_friend_received.xml @@ -19,22 +19,29 @@ android:layout_margin="@dimen/text_margin" android:textAppearance="?attr/textAppearanceListItem" /> - - - - - - - - + - - - - - - - - +