diff --git a/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java new file mode 100644 index 0000000..aa5929d --- /dev/null +++ b/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java @@ -0,0 +1,87 @@ +package com.example.nemophila.viewmodels; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +import com.example.nemophila.entities.Post; +import com.example.nemophila.resources.PostsRest; + +import java.util.Collection; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class PostsViewModel extends ViewModel { + + //Field + final private Retrofit retrofit; + final private PostsRest postsRest; + private String pid; + + //LiveData + final private MutableLiveData> postsLiveData; + + //コンストラクタ + public PostsViewModel() { + this.postsLiveData = new MutableLiveData<>(); + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/Nemophila/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + this.postsRest = retrofit.create(PostsRest.class); + this.pid = null; + } + + //getter + public LiveData> getLiveData() { + return this.postsLiveData; + } + + //API通信メソッド + public void fetchPosts(String uid) { + Call> call = postsRest.getAccountPosts(uid); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()) { + postsLiveData.setValue(response.body()); + } else { + //レスポンスエラーを通知 + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + //通信エラーを通知 + } + }); + } + + public String createPost(String uid, String token, String sid, + String rate, String genre, String comment, + String image1, String image2, String image3) { + + Call call = postsRest.postAccountPost(uid ,token, sid, rate, genre, comment, image1, image2, image3); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + pid = response.body(); + } else { + //レスポンスエラーを通知 + } + } + + @Override + public void onFailure(Call call, Throwable t) { + //通信エラーを通知 + } + }); + return pid; + } +}