package com.example.citrusclient.viewmodels;
import com.example.citrusclient.models.Book;
import com.example.citrusclient.rest.PublicBooksRest;
import java.util.ArrayList;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
public class PublicBooksViewModel extends ViewModel {
private final Retrofit retrofit;
private final PublicBooksRest publicBooksRest;
private final MutableLiveData<ArrayList<Book>> allBooksLiveData;
private final MutableLiveData<ArrayList<Book>> searchBooksLiveData;
public PublicBooksViewModel(){
retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/citrus/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
this.publicBooksRest = retrofit.create(PublicBooksRest.class);
this.allBooksLiveData = new MutableLiveData<>();
this.searchBooksLiveData = new MutableLiveData<>();
}
public MutableLiveData<ArrayList<Book>> getAllBooksLiveData(){
return this.allBooksLiveData;
}
public MutableLiveData<ArrayList<Book>> getSearchBooksLiveData(){
return this.searchBooksLiveData;
}
public void loadAllBooks(){
Call<ArrayList<Book>> call = publicBooksRest.getAllPublicBooks();
call.enqueue(new Callback<ArrayList<Book>>(){
@Override
public void onResponse(Call<ArrayList<Book>> call, Response<ArrayList<Book>>response){
if(response.isSuccessful()){
ArrayList<Book> book = response.body();
allBooksLiveData.setValue(book);
System.out.println(response.code());
}else System.out.println(response.code());
}
@Override
public void onFailure(Call<ArrayList<Book>> call, Throwable t){
System.out.println("NetWorkError" + t);
}
});
}
public void loadSearchBooks(String title,String accountId,int sortBy){
Call<ArrayList<Book>> call = publicBooksRest.searchBooksByTitleAndAccount(title,accountId,sortBy);
call.enqueue(new Callback<ArrayList<Book>>(){
@Override
public void onResponse(Call<ArrayList<Book>> call, Response<ArrayList<Book>>response){
if(response.isSuccessful()){
ArrayList<Book> book = response.body();
allBooksLiveData.setValue(book);
System.out.println(response.code());
}else System.out.println(response.code());
}
@Override
public void onFailure(Call<ArrayList<Book>> call, Throwable t){
System.out.println("NetWorkError" + t);
}
});
}
}