diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java index bf27c38..0eb7e41 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java @@ -1,6 +1,7 @@ package org.ntlab.irisclient.viewmodels; import org.ntlab.irisclient.entities.RoomJson; +import org.ntlab.irisclient.models.Settings; import org.ntlab.irisclient.resources.RoomsRest; import androidx.lifecycle.LiveData; @@ -15,13 +16,20 @@ public class RoomViewModel extends ViewModel { - private MutableLiveData roomMutableLiveData; - private Retrofit retrofit; + //フィールド + final private MutableLiveData roomMutableLiveData; + final private MutableLiveData settingsMutableLiveData; + final private Retrofit retrofit; - //------------------------------------------------ + //更新比較用フィールド + private Settings settingsPreData; + private RoomJson roomJsonPreData; + + //------------------------------------------------------------------ //コンストラクタ public RoomViewModel() { this.roomMutableLiveData = new MutableLiveData<>(); + this.settingsMutableLiveData = new MutableLiveData<>(); this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/") .addConverterFactory(JacksonConverterFactory.create()) @@ -30,52 +38,66 @@ //----------------------------------------------------------------- // getter - public LiveData getLiveData() { + public LiveData getRoomLiveData() { return this.roomMutableLiveData; } + public LiveData getSettingsLiveData() { + return this.settingsMutableLiveData; + } - //----------------------------------------------------------------- + //----------------------------------------------------------------------------- // updates - //メンバーの更新、設定情報の更新 - public void updateMembers(String rid) { - final RoomsRest roomsRest = retrofit.create(RoomsRest.class); + //部屋の情報の更新(RoomJson) + public void updateRoom(String rid) { + final RoomsRest roomsRest = retrofit.create(RoomsRest.class); Call call = roomsRest.getRoomMember(rid); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()){ - roomMutableLiveData.setValue(response.body()); + + if(response.body().equals(roomJsonPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + roomMutableLiveData.setValue(response.body()); + roomJsonPreData = response.body(); + } + } } - @Override public void onFailure(Call call, Throwable t) { - } }); } - /* - //設定情報の通信、返り値はRoomJsonなら上記のupdateのみで十分なので、不要か? + //設定情報の更新(Settings) public void updateSettings(String rid) { + final RoomsRest roomsRest = retrofit.create(RoomsRest.class); + Call call = roomsRest.getSettings(rid); - Call call = roomsRest.getSettings(rid); - - call.enqueue(new Callback() { + call.enqueue(new Callback() { @Override - public void onResponse(Call call, Response response) { + public void onResponse(Call call, Response response) { if (response.isSuccessful()){ - roomMutableLiveData.setValue(response.body()); + + if(response.body().equals(settingsPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + settingsMutableLiveData.setValue(response.body()); + settingsPreData = response.body(); + } } } @Override - public void onFailure(Call call, Throwable t) { - + public void onFailure(Call call, Throwable t) { } }); - }*/ + } }