diff --git a/app/src/main/java/com/example/nemophila/TestActivity.java b/app/src/main/java/com/example/nemophila/TestActivity.java index 6a9c2e7..3ff993a 100644 --- a/app/src/main/java/com/example/nemophila/TestActivity.java +++ b/app/src/main/java/com/example/nemophila/TestActivity.java @@ -69,7 +69,7 @@ "和食", "辛いね", "", "", ""); break; case 3: - friendViewModel.putRequesting("1111", "1112", "a95d68cc-4efb-49e2-8f55-799f768a5c09"); +// friendViewModel.putRequesting("1111", "1112", "a95d68cc-4efb-49e2-8f55-799f768a5c09"); } } }); 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 3676d3f..3baa6b1 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java @@ -9,6 +9,7 @@ import com.example.nemophila.resources.AccountsRest; import com.example.nemophila.resources.FriendsRest; +import java.util.ArrayList; import java.util.Collection; import retrofit2.Call; @@ -56,34 +57,33 @@ public void onResponse(Call> call, Response> response) { if (response.isSuccessful()) { System.out.println("Successful"); - Collection accountNameJson = response.body(); - friendsLiveData.setValue(accountNameJson); - + friendsLiveData.setValue(response.body()); } else { - System.out.println("ResponseError"); + System.out.println("ResponseError: " + response.code()); } } @Override public void onFailure(Call> call, Throwable t) { - System.out.println(" NetworkError" + t); + System.out.println(" NetworkError: " + t); } }); } - public void putFriend(String uid,String fid, String token) { + public void putFriend(String uid, String fid, String name, String token) { Call call = friendsRest.putFriend(uid,fid,token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { + addFriendLiveData(fid, name); System.out.println("Successful"); } else { - System.out.println("ResponseError"); + System.out.println("ResponseError: " + response.code()); } } @Override public void onFailure(Call call, Throwable t) { - System.out.println(" NetworkError" + t); + System.out.println(" NetworkError: " + t); } }); } @@ -94,14 +94,15 @@ @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { + removeFriendLiveData(fid); System.out.println("Successful"); } else { - System.out.println("ResponseError"); + System.out.println("ResponseError: " + response.code()); } } @Override public void onFailure(Call call, Throwable t) { - System.out.println(" NetworkError" + t); + System.out.println(" NetworkError: " + t); } }); } @@ -112,34 +113,34 @@ @Override public void onResponse(Call> call, Response> response) { if (response.isSuccessful()) { + requestingLiveData.setValue(response.body()); System.out.println("Successful"); - Collection accountNameJson = response.body(); - requestingLiveData.setValue(accountNameJson); } else { - System.out.println("ResponseError" + response.code()); + System.out.println("ResponseError: " + response.code()); } } @Override public void onFailure(Call> call, Throwable t) { - System.out.println(" NetworkError" + t); + System.out.println(" NetworkError: " + t); } }); } - public void putRequesting(String uid,String requesting_id, String token) { + public void putRequesting(String uid, String requesting_id, String name, String token) { Call call = friendsRest.putRequesting(uid,requesting_id,token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { System.out.println("Successful"); + addRequestingLiveData(requesting_id, name); } else { - System.out.println("ResponseError" + response.code()); + System.out.println("ResponseError: " + response.code()); } } @Override public void onFailure(Call call, Throwable t) { - System.out.println(" NetworkError" + t); + System.out.println(" NetworkError: " + t); } }); } @@ -150,14 +151,15 @@ @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { + removeRequestingLiveData(requesting_id); System.out.println("Successful"); } else { - System.out.println("ResponseError"); + System.out.println("ResponseError: " + response.code()); } } @Override public void onFailure(Call call, Throwable t) { - System.out.println(" NetworkError" + t); + System.out.println(" NetworkError: " + t); } }); } @@ -172,12 +174,12 @@ Collection accountNameJson = response.body(); requestedLiveData.setValue(accountNameJson); } else { - System.out.println("ResponseError"); + System.out.println("ResponseError: " + response.code()); } } @Override public void onFailure(Call> call, Throwable t) { - System.out.println(" NetworkError" + t); + System.out.println(" NetworkError: " + t); } }); } @@ -189,14 +191,73 @@ public void onResponse(Call call, Response response) { if (response.isSuccessful()) { System.out.println("Successful"); + removeRequestedLiveData(fid); } else { - System.out.println("ResponseError"); + System.out.println("ResponseError: " + response.code()); } } @Override public void onFailure(Call call, Throwable t) { - System.out.println(" NetworkError" + t); + System.out.println(" NetworkError: " + t); } }); } + + private AccountNameJson createAccountNameJson(String uid, String name) { + AccountNameJson anj = new AccountNameJson(); + anj.setUid(uid); + anj.setName(name); + return anj; + } + + private void addFriendLiveData(String uid, String name) { + ArrayList preData = new ArrayList<>(); + for (AccountNameJson anj: friendsLiveData.getValue()) { + preData.add(anj); + } + preData.add(createAccountNameJson(uid, name)); + friendsLiveData.setValue(preData); + } + + private void addRequestingLiveData(String uid, String name) { + ArrayList preData = new ArrayList<>(); + for (AccountNameJson anj: requestingLiveData.getValue()) { + preData.add(anj); + } + preData.add(createAccountNameJson(uid, name)); + requestedLiveData.setValue(preData); + } + + private void removeFriendLiveData(String id) { + ArrayList preData = new ArrayList<>(); + for (AccountNameJson anj: friendsLiveData.getValue()) { + if (anj.getUid().equals(id)) { + continue; + } + preData.add(anj); + friendsLiveData.setValue(preData); + } + } + + private void removeRequestingLiveData(String id) { + ArrayList preData = new ArrayList<>(); + for (AccountNameJson anj: requestingLiveData.getValue()) { + if (anj.getUid().equals(id)) { + continue; + } + preData.add(anj); + requestingLiveData.setValue(preData); + } + } + + private void removeRequestedLiveData(String id) { + ArrayList preData = new ArrayList<>(); + for (AccountNameJson anj: requestedLiveData.getValue()) { + if (anj.getUid().equals(id)) { + continue; + } + preData.add(anj); + requestedLiveData.setValue(preData); + } + } }