RoomViewModelの更新
Delete系の通信用メソッドを追加
1 parent 4e8767a commit d5c9d3f241eeac24a3e25199f66f97497f647679
s-michishita authored on 20 Oct 2022
Showing 2 changed files
View
2
■■■
app/src/main/java/org/ntlab/irisclient/resources/RoomsRest.java
 
//--------------------------------------------------
//退出するメソッド
@DELETE("rooms/{rid}/members/{nickname}")
Call<RoomJson> deleteMember(
Call<String> deleteMember(
@Path("rid") String rid,
@Path("nickname") String nickname
);
 
View
170
app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java
public class RoomViewModel extends TimerViewModel {
 
//フィールド
private String rid;
private boolean roomExist;
final private Retrofit retrofit;
final private RoomsRest roomsRest;
final private MutableLiveData<List<Member>> membersLiveData;
final private MutableLiveData<Settings> settingsMutableLiveData;
final private MutableLiveData<Integer> stateLiveData;
final private Retrofit retrofit;
 
//更新比較用フィールド
private List<Member> sortedMembersList;
private List<Member> membersPreData;
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
this.roomsRest = retrofit.create(RoomsRest.class);
setRoomExist(true);
}
 
//-----------------------------------------------------------------
//setter
public void setRid(String rid){
this.rid = rid;
}
private void setRoomExist(boolean bool) {
this.roomExist = bool;
}
 
// getter
public LiveData<List<Member>> getMembersLiveData() {
return this.membersLiveData;
}
}
public LiveData<Integer> getStateLiveData() {
return this.stateLiveData;
}
 
public boolean getRoomExist(){
return this.roomExist;
}
private boolean compareMembers(List<Member> a, List<Member> b) {
 
int i;
for(i = 0; i < a.size(); i++ ) {
 
//全ての要素が一緒ならtrueを返す
return true;
}
 
private List<Member> sortMembersList(List<Member> oldMembers) {
List<Member> sortedMembers = new ArrayList<>();
List<List<Integer>> priorityInteger = new ArrayList<>(5);
List<Integer> list0 = new ArrayList<Integer>();
for(int i = 0; i < 5; i++) {
priorityInteger.get(i).forEach(num -> sortedMembers.add(oldMembers.get(num)));
}
 
//System.out.println(sortedMembers);
//sortedMembers.forEach(k -> System.out.println(k.getNickname() + " " + k.getBelongs() + " " + k.isMaster()));
return sortedMembers;
}
 
//-----------------------------------------------------------------------------
//各Activityでのボタン処理
//チーム&マスター変更
public void changeBelongsAndMaster(String rid, String nickname, String belongs, Boolean isMaster) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
//final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call<String> call = roomsRest.putMember(rid, nickname, belongs, isMaster);
 
call.enqueue(new Callback<String>() {
@Override
}
});
}
 
//メンバー削除
//メンバー削除(MemberActivityのみ)
public void deleteMember(String rid, String nickname) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call<RoomJson> call = roomsRest.deleteMember(rid, nickname);
//final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call<String> call = roomsRest.deleteMember(rid, nickname);
 
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.isSuccessful()){
System.out.println("通信成功:退出しました");
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
System.out.println("通信失敗:");
System.out.println(t);
}
});
 
}
 
//部屋の削除(OwnerActivityのみ)
public void deleteRoom(String rid){
Call<Void> call = roomsRest.deleteRooms(rid);
 
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
setRoomExist(false);
}
 
@Override
public void onFailure(Call<Void> call, Throwable t) {
System.out.println("通信失敗:deleteRoom");
System.out.println(t);
}
});
}
 
//スタートボタンの処理(OwnerActivityのみ)
public void startDrawing(String rid, String nickname) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
//final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call<Void> call = roomsRest.putState(rid,nickname,2);
 
call.enqueue(new Callback<Void>() {
@Override
}
});
}
 
//ランダムボタンの処理(OwnerActivityのみ)
public void randomTeam(String rid, String nickname) {
Call<Void> call = roomsRest.putMembers(rid, nickname);
 
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
System.out.println("ランダムにチーム変更へ");
}
 
@Override
public void onFailure(Call<Void> call, Throwable t) {
System.out.println("通信失敗:randomTeam");
System.out.println(t);
}
});
}
 
//設定情報の変更処理(OwnerActivityのみ)
public void changeSettings(String rid, boolean dTimer, int dTimerTimes, boolean gTimer, int gTimerTimes, int gTimerFTTimes) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call<Void> call = roomsRest.putSettings(rid, dTimer, dTimerTimes, gTimer, gTimerTimes, gTimerFTTimes);
 
call.enqueue(new Callback<Void>() {
@Override
}
 
//部屋の情報の更新(List<Members>)
public void updateMembers(String rid) {
 
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call<List<Member>> call = roomsRest.getRoomMember(rid);
 
call.enqueue(new Callback<List<Member>>() {
@Override
}
 
//設定情報の更新(Settings)
public void updateSettings(String rid) {
 
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call<Settings> call = roomsRest.getSettings(rid);
 
call.enqueue(new Callback<Settings>() {
@Override
public void onResponse(Call<Settings> call, Response<Settings> response) {
if (response.isSuccessful()){
 
settingsMutableLiveData.setValue(response.body());
settingsPreData = response.body();
 
}
}
 
@Override
public void onFailure(Call<Settings> call, Throwable t) {
}
});
}
 
//部屋の状態情報の更新(Integer)
public void updateState(String rid) {
Call<Integer> call = roomsRest.getState(rid);
 
call.enqueue(new Callback<Integer>() {
@Override
public void onResponse(Call<Integer> call, Response<Integer> response) {
if (response.isSuccessful()){
 
stateLiveData.setValue(response.body());
 
/*
if(response.body().equals(settingsPreData)){
//値が一緒なら書き換えない
}
}
 
@Override
public void onFailure(Call<Settings> call, Throwable t) {
}
});
}
 
//部屋の状態情報の更新(Integer)
public void updateState(String rid) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call<Integer> call = roomsRest.getState(rid);
 
call.enqueue(new Callback<Integer>() {
@Override
public void onResponse(Call<Integer> call, Response<Integer> response) {
if (response.isSuccessful()){
 
stateLiveData.setValue(response.body());
 
/*
if(response.body().equals(settingsPreData)){
//値が一緒なら書き換えない
}else{
//値が異なるときのみライブデータを上書き
settingsMutableLiveData.setValue(response.body());
settingsPreData = response.body();
}*/
 
}
}
 
@Override
public void onFailure(Call<Integer> call, Throwable t) {
}
});
}