package com.tevinjeffrey.rutgersct.ui.course;
import android.os.Parcel;
import android.os.Parcelable;
import com.tevinjeffrey.rutgersct.rutgersapi.model.Course;
import com.tevinjeffrey.rutgersct.ui.base.BaseViewState;
import com.tevinjeffrey.rutgersct.ui.base.View.LayoutType;
import java.util.ArrayList;
import java.util.List;
public class CourseViewState extends BaseViewState<CourseView> implements Parcelable {
public LayoutType layoutType = LayoutType.LIST;
public boolean snackBarShowing = false;
public List<Course> data = new ArrayList<>(10);
public boolean isRefreshing = false;
public String errorMessage;
@Override
public void apply(CourseView view, boolean retainedState) {
view.initToolbar();
view.initRecyclerView();
view.initSwipeLayout();
if (retainedState) {
view.showLoading(isRefreshing);
view.showLayout(layoutType);
view.setData(data);
if ((snackBarShowing || layoutType == LayoutType.ERROR)
&& errorMessage != null)
view.showError(new Exception(errorMessage));
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.layoutType == null ? -1 : this.layoutType.ordinal());
dest.writeByte(snackBarShowing ? (byte) 1 : (byte) 0);
dest.writeTypedList(data);
dest.writeByte(isRefreshing ? (byte) 1 : (byte) 0);
dest.writeString(this.errorMessage);
}
public CourseViewState() {
}
protected CourseViewState(Parcel in) {
int tmpLayoutType = in.readInt();
this.layoutType = tmpLayoutType == -1 ? LayoutType.LIST : LayoutType.values()[tmpLayoutType];
this.snackBarShowing = in.readByte() != 0;
this.data = in.createTypedArrayList(Course.CREATOR);
this.isRefreshing = in.readByte() != 0;
this.errorMessage = in.readString();
}
public static final Parcelable.Creator<CourseViewState> CREATOR = new Parcelable.Creator<CourseViewState>() {
public CourseViewState createFromParcel(Parcel source) {
return new CourseViewState(source);
}
public CourseViewState[] newArray(int size) {
return new CourseViewState[size];
}
};
}