diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 66f7271..40556a2 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java index ffb93c8..02785cb 100644 --- a/app/src/main/java/com/example/nemophila/FriendActivity.java +++ b/app/src/main/java/com/example/nemophila/FriendActivity.java @@ -2,6 +2,7 @@ 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; @@ -16,9 +17,11 @@ import android.widget.ImageView; import android.widget.TextView; +import com.example.nemophila.entities.AccountNameJson; import com.example.nemophila.viewmodels.FriendViewModel; import java.util.ArrayList; +import java.util.Collection; import java.util.List; public class FriendActivity extends AppCompatActivity { @@ -48,8 +51,25 @@ rv.setLayoutManager(llm); String myUid = nemophila.getUid(); // 自身のidを取得 -// friendViewModel.getFriends(myUid); // 自身のフレンドの一覧を取得するメソッドを呼び出す - + friendViewModel.getFriends(myUid); // 自身のフレンドの一覧を取得するメソッドを呼び出す + + friendViewModel.getFriendsLiveData().observe(this, new Observer>() { + @Override + public void onChanged(Collection friends) { + // 以前のデータが残っていると不都合なので、空にしておく + friendsDataset.clear(); + + for (AccountNameJson friend : friends) { + FriendDataModel data = new FriendDataModel(); + data.setName(friend.getName()); + friendsDataset.add(data); + + //RecyclerViewをonChangedが呼ばれるたび表示(アダプターを更新してRecyclerViewにセット) + adapter.setList(friendsDataset); + rv.setAdapter(adapter); + } + } + }); // マイページ画面に画面遷移する Button backButton = findViewById(R.id.backMyPage); diff --git a/app/src/main/java/com/example/nemophila/SignUpActivity.java b/app/src/main/java/com/example/nemophila/SignUpActivity.java index e1f276b..b867654 100644 --- a/app/src/main/java/com/example/nemophila/SignUpActivity.java +++ b/app/src/main/java/com/example/nemophila/SignUpActivity.java @@ -34,6 +34,14 @@ //Nemophilaと連携 nemophila = (Nemophila) this.getApplication(); + //Nemophilaにtokenとuidがある場合サインアップ画面をスキップ + if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){ + Intent intent = new Intent(SignUpActivity.this,MainActivity.class); + startActivity(intent); + System.out.println("サインアップ処理をスキップ"); + return; + } + //通信の初期化 this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/") diff --git a/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java b/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java index d865620..2df8fc1 100644 --- a/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java +++ b/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java @@ -1,6 +1,22 @@ package com.example.nemophila.entities; public class AccountNameJson { + private String uid; private String name; - private String id; + + // Getter + public String getName() { + return name; + } + public String getUid() { + return uid; + } + + // Setter + public void setName(String name) { + this.name = name; + } + public void setUid(String uid) { + this.uid = uid; + } } diff --git a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java index b670f3a..aec3547 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java @@ -1,5 +1,6 @@ package com.example.nemophila.viewmodels; +import android.util.Log; import android.widget.TextView; import com.example.nemophila.R; @@ -12,6 +13,7 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; @@ -31,6 +33,7 @@ private final MutableLiveData pwLiveData; private final MutableLiveData> accountPostsLiveData; private final MutableLiveData pwErrorLiveData; + private final MutableLiveData accountLiveData; // コンストラクタ public AccountViewModel() { @@ -43,6 +46,7 @@ this.pwLiveData = new MutableLiveData<>(); this.accountPostsLiveData = new MutableLiveData<>(); this.pwErrorLiveData = new MutableLiveData<>(); + this.accountLiveData = new MutableLiveData<>(); } // ライブデータの取得(ゲッター) @@ -56,6 +60,9 @@ public MutableLiveData getPwErrorLiveData() { return pwErrorLiveData; } + public MutableLiveData getAccountLiveData() { + return accountLiveData; + } // 対象のアカウント情報の削除 public void deleteAccount(String uid, String token) { @@ -156,6 +163,47 @@ accountPostsLiveData.setValue(posts); } + //idからアカウント情報を取得するメソッド + private void fetchAccount(String id) { + Call call = accountsRest.getAccount(id); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + Account ac = new Account(response.body()); + accountLiveData.setValue(ac); + System.out.println("success"); + } else { + System.out.println("response error"); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("network error" + t); + } + }); + } + + //同期的にidからアカウント情報を取得するメソッド + public Account sample(String id) { + try { + Response response = accountsRest.getAccount(id).execute(); + + if (response.isSuccessful()) { + Account account = new Account(response.body()); + return account; + } else { + Log.d("message", "error" + response.code()); + } + + } catch (IOException e) { + Log.i("message", "error" + e.getMessage()); + } + return null; + } + // 対象のアカウントがした投稿の削除 public void deleteAccountPost(String sid, String uid, String pid, String token) { Call call = accountsRest.deletePost(sid, uid, pid, token); diff --git a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java index a9cfb11..2be6f58 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java @@ -22,8 +22,8 @@ private final Retrofit retrofit; private final FriendsRest friendsRest; // ライブデータ - private final MutableLiveData friendsLiveData; - private final MutableLiveData requestedLiveData; + private final MutableLiveData> friendsLiveData; + private final MutableLiveData> requestedLiveData; private final MutableLiveData> requestingLiveData; // コンストラクタ @@ -39,16 +39,16 @@ } // ライブデータの取得(ゲッター) - public MutableLiveData getFriendsLiveData() { + public MutableLiveData> getFriendsLiveData() { return friendsLiveData; } - public MutableLiveData getRequestedLiveData() { + public MutableLiveData> getRequestedLiveData() { return requestedLiveData; } public MutableLiveData> getRequestingLiveData() { return requestingLiveData; } - +//フレンドの情報の取得 public void getFriends(String uid) { Call> call = friendsRest.getFriends(uid); call.enqueue(new Callback>() { @@ -56,8 +56,8 @@ public void onResponse(Call> call, Response> response) { if (response.isSuccessful()) { System.out.println("Successful"); - Collection AccountNameJson = response.body(); -// setFriendsLiveDataFromJson(AccountNameJson); + Collection accountNameJson = response.body(); + friendsLiveData.setValue(accountNameJson); } else { System.out.println("ResponseError"); @@ -69,7 +69,7 @@ } }); } - +// public void putFriend(String uid,String fid, String token) { Call call = friendsRest.putFriend(uid,fid,token); call.enqueue(new Callback() { @@ -87,7 +87,7 @@ } }); } - + // 対象のアカウントのフレンド登録情報の削除 public void deleteFriend(String uid,String fid, String token) { Call call = friendsRest.deleteFriend(uid,fid,token); call.enqueue(new Callback() { @@ -105,7 +105,7 @@ } }); } - + //フレンド申請を行うときの情報の取得 public void getRequesting(String uid) { Call> call = friendsRest.getRequesting(uid); call.enqueue(new Callback>() { @@ -141,6 +141,7 @@ } }); } + // 対象のアカウントのフレンド申請を行うときの情報削除 public void deleteRequesting(String uid,String requesting_id, String token) { Call call = friendsRest.deleteRequesting(uid,requesting_id,token); call.enqueue(new Callback() { @@ -158,7 +159,7 @@ } }); } - + //フレンド申請を行われたときの情報の取得 public void getRequested(String uid) { Call> call = friendsRest.getRequested(uid); call.enqueue(new Callback>() { @@ -176,7 +177,7 @@ } }); } - + // 対象のアカウントのフレンド申請を行われたときの情報削除 public void deleteRequested(String uid,String fid, String token) { Call call = friendsRest.deleteRequested(uid,fid,token); call.enqueue(new Callback() {