//package com.example.nemophila;
//
//import androidx.annotation.NonNull;
//import androidx.appcompat.app.AppCompatActivity;
//import androidx.lifecycle.Observer;
//import androidx.lifecycle.ViewModelProvider;
//import androidx.recyclerview.widget.DividerItemDecoration;
//import androidx.recyclerview.widget.LinearLayoutManager;
//import androidx.recyclerview.widget.RecyclerView;
//
//import android.app.AlertDialog;
//import android.content.DialogInterface;
//import android.content.Intent;
//import android.os.Bundle;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.view.ViewGroup;
//import android.widget.Button;
//import android.widget.EditText;
//import android.widget.ImageView;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.example.nemophila.entities.Account;
//import com.example.nemophila.entities.AccountNameJson;
//import com.example.nemophila.entities.ErrorType;
//import com.example.nemophila.entities.Post;
//import com.example.nemophila.viewmodels.AccountViewModel;
//import com.example.nemophila.viewmodels.FriendViewModel;
//import com.example.nemophila.viewmodels.PostsViewModel;
//
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.List;
//
//public class RequestingActivity extends AppCompatActivity {
//
// FriendViewModel friendViewModel;
// String uid;
// String token;
// String requestingId;
// String requestingName;
// String searchingId;
//
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_requesting);
// //Nemophilaから自分のuidとtokenを取得
// uid = ((Nemophila)getApplication()).getUid();
// token = ((Nemophila)getApplication()).getToken();
//
// //左上のボタンでマイページへ遷移
// Button returnButton = (Button)findViewById(R.id.requestingAcReturnButton);
// returnButton.setOnClickListener(new View.OnClickListener(){
// public void onClick(View v){
// Intent intent = new Intent(getApplication(), MyPageActivity.class);
// startActivity(intent);
// }
// });
//
// //idからアカウント名を検索するためのAccountViewModelを宣言しておく
// AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
//
// //フレンド検索ボタン
// Button requestingButton = (Button)findViewById(R.id.requestingSearchButton);
// requestingButton.setOnClickListener(new View.OnClickListener(){
//
// @Override
// public void onClick(View v){
// //入力されたIDを取得
// EditText editSearchId = (EditText) findViewById(R.id.inputRequestingId);
// searchingId = editSearchId.getText().toString();
// //取得したIDからアカウントを読み込み、検索用LiveDataのonChangeへ
// accountViewModel.fetchAccount(searchingId);
// }
// });
//
// //検索用LiveDataへの購読
// accountViewModel.getAccountLiveData().observe(RequestingActivity.this, new Observer<Account>() {
//
// //ViewModelから検索結果が返ってくれば(データ変更があれば)実行
// @Override
// public void onChanged(Account user) {
//
// if (user == null) {
// new AlertDialog.Builder(RequestingActivity.this)
// .setTitle("IDが間違っています")
// .setPositiveButton("OK", null)
// .create()
// .show();
// } else {
// requestingName = (user.getName());
//
// //申請を送るダイアログ
// RequestingDialogFragment dialog = new RequestingDialogFragment(RequestingActivity.this);
// //名前を渡す
// Bundle args = new Bundle();
// args.putString("message", requestingName);
// dialog.setArguments(args);
//
// //ダイアログの表示
// dialog.show(getSupportFragmentManager(), "Requesting_dialog");
// //OK押したら申請するメソッドにuid、requestingId、tokenを渡す
// }
// }
// });
//
// //FriendViewModelの初期化
// friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class);
//
// //エラーコードを購読
// friendViewModel.getErrorLiveData().observe(RequestingActivity.this, new Observer<String>() {
// @Override
// public void onChanged(String error) {
//
// if (error == ErrorType.ResponseError.getText()) {
// new AlertDialog.Builder(RequestingActivity.this)
// .setTitle("既にフレンド、申請を受けているなどの理由で申請できません")
// .setPositiveButton("OK", null)
// .create()
// .show();
// }
// }
// });
//
// //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に)
// List<RequestingDataModel> requestingDataList = new ArrayList<>();
//
// //xmlからrvにRecyclerViewを取得
// RecyclerView rv = (RecyclerView) findViewById(R.id.requestingList);
//
// //アダプターを宣言し、削除ボタンを押したときの処理をオーバーライド
// RequestingAdapter adapter = new RequestingAdapter(requestingDataList){
// @Override
// void onDeleteClick(View view, int position, RequestingDataModel user) {
// new AlertDialog.Builder(RequestingActivity.this)
// .setTitle(user.getName() + "さんへの申請を削除しますか?")
// .setPositiveButton("OK", new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface dialog, int which) {
// Toast.makeText(RequestingActivity.this, user.getName(), Toast.LENGTH_SHORT).show();
// friendViewModel.deleteRequesting(uid, user.getId(), token);
// }
// })
// .setNegativeButton("キャンセル", null)
// .create()
// .show();
// }
// };
//
// //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
// LinearLayoutManager llm = new LinearLayoutManager(this);
// //データごとの区切り線を入れる
// RecyclerView.ItemDecoration itemDecoration =
// new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
// rv.addItemDecoration(itemDecoration);
//
// rv.setHasFixedSize(true);
// rv.setLayoutManager(llm);
//
// //FriendViewModelを初期化し、申請先のデータをロードしておく
// friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class);
// friendViewModel.getRequesting(uid);
//
// //申請先の一覧のLiveDataへの購読
// friendViewModel.getRequestingLiveData().observe(this, new Observer<Collection<AccountNameJson>>() {
// //データに変更があった時実行
// @Override
// public void onChanged(Collection<AccountNameJson> requestingUsers) {
//
// //表示用のDataListを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように)
// requestingDataList.clear();
// //受け取ったLivedataの要素分繰り返し、セット
// for (AccountNameJson user: requestingUsers) {
// //申請先1人に必要な情報をセットするdataを宣言
// RequestingDataModel data = new RequestingDataModel();
// //dataをpostsDatasetに追加してリストを作る
// data.setName(user.getName());
// data.setId(user.getUid());
//
// //申請先一つの情報がdataに全部セットされたらDatasetに追加 重複していたら追加しない
// if(!(requestingDataList.contains(data))) {
// requestingDataList.add(0, data);
// }
// }
//
// //onChange内に書くべき表示部分
// adapter.setList(requestingDataList);
// rv.setAdapter(adapter);
// }
// });
// }
//
//
// //ダイアログでOKを押した時に呼び出される フレンド申請を送るメソッド
// public void putRequesting(){
// requestingId = searchingId;
// friendViewModel.putRequesting(uid, requestingId, requestingName, token);
// }
//
// //RecyclerViewのための内部クラス
// //Adapter
// public class RequestingAdapter extends RecyclerView.Adapter<RequestingViewHolder> {
//
// private List<RequestingDataModel> list;
//
// public RequestingAdapter(List<RequestingDataModel> list) {
// this.list =list;
// }
//
// public void setList(List<RequestingDataModel> list) {
// this.list = list;
// }
//
// @NonNull
// @Override
// public RequestingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// //1データあたりのレイアウトを読み込み、ビューホルダーを宣言
// View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_requesting_activity, parent,false);
// RequestingViewHolder vh = new RequestingViewHolder(inflate);
//
// // リスト内の削除ボタンを押した時の処理
// vh.deleteButton.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// int position = vh.getBindingAdapterPosition();
// // 処理はonDeleteClickに
// onDeleteClick(v, position, list.get(position));
// }
// });
//
// return vh;
// }
//
// @Override
// public void onBindViewHolder(@NonNull RequestingViewHolder holder, int position) {
// holder.nameView.setText(list.get(position).getName());
// }
//
// @Override
// public int getItemCount() {
// return list.size();
// }
//
// void onDeleteClick(View view, int position, RequestingDataModel requesting) {
// // このメソッドをActivity内でオーバーライドして、クリックイベントの処理を設定する
// }
// }
//
// //ViewHolder
// public class RequestingViewHolder extends RecyclerView.ViewHolder {
// public TextView nameView;
// public ImageView iconView;
// public Button deleteButton;
//
// public RequestingViewHolder(@NonNull View itemView) {
// super(itemView);
// nameView = (TextView) itemView.findViewById(R.id.requestingName);
// iconView = itemView.findViewById(R.id.requestingIcon);
// deleteButton = itemView.findViewById(R.id.requestingDeleteButton);
// }
// }
//
// //DataModel
// public static class RequestingDataModel extends FriendActivity.RequestingDataModel {
// private String name;
// private String id;
//
// public String getName() {
// return name;
// }
// public String getId() {
// return id;
// }
//
// public void setName(String name) {
// this.name = name;
// }
// public void setId(String id){
// this.id = id;
// }
//
// }
//
//}