crystal-wallet-android/app/src/main/java/cy/agorise/crystalwallet/viewmodels/TransactionListViewModel.java

73 lines
2.6 KiB
Java

package cy.agorise.crystalwallet.viewmodels;
import android.app.Application;
import android.arch.lifecycle.AndroidViewModel;
import android.arch.lifecycle.LiveData;
import android.arch.paging.DataSource;
import android.arch.paging.LivePagedListBuilder;
import android.arch.paging.PagedList;
import cy.agorise.crystalwallet.dao.CrystalDatabase;
import cy.agorise.crystalwallet.models.CryptoCoinTransactionExtended;
/**
* Created by Henry Varona on 12/9/2017.
*/
public class TransactionListViewModel extends AndroidViewModel {
private LiveData<PagedList<CryptoCoinTransactionExtended>> transactionList;
private CrystalDatabase db;
public TransactionListViewModel(Application application) {
super(application);
this.db = CrystalDatabase.getAppDatabase(application.getApplicationContext());
/*transactionList = this.db.transactionDao().transactionsByDate().create(0,
new PagedList.Config.Builder()
.setEnablePlaceholders(true)
.setPageSize(10)
.setPrefetchDistance(10)
.build()
);*/
}
public void initTransactionList(String orderField, String search){
DataSource.Factory<Integer, CryptoCoinTransactionExtended> dataSource = null;
switch (orderField){
case "date":
dataSource = this.db.transactionDao().transactionsByDate(search);
break;
case "amount":
dataSource = this.db.transactionDao().transactionsByAmount(search);
break;
case "is_input":
dataSource = this.db.transactionDao().transactionsByIsInput(search);
break;
case "from":
dataSource = this.db.transactionDao().transactionsByFrom(search);
break;
case "to":
dataSource = this.db.transactionDao().transactionsByTo(search);
break;
default:
dataSource = this.db.transactionDao().transactionsByDate(search);
}
if (dataSource != null) {
this.transactionList = new LivePagedListBuilder(dataSource,
new PagedList.Config.Builder()
.setEnablePlaceholders(true)
.setPageSize(10)
.setPrefetchDistance(10)
.build()
).build();
} else {
this.transactionList = null;
}
}
public LiveData<PagedList<CryptoCoinTransactionExtended>> getTransactionList(){
return this.transactionList;
}
}