package com.tevinjeffrey.rutgersct.ui.trackedsections;
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 TrackedSectionsViewState extends BaseViewState<TrackedSectionsView> implements Parcelable {
public boolean isRefreshing = false;
public LayoutType layoutType = LayoutType.LIST;
public List<Course.Section> data = new ArrayList<>(10);
public boolean snackBarShowing = false;
public String errorMessage;
@Override
public void apply(TrackedSectionsView 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));
}
}
public TrackedSectionsViewState() {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeByte(isRefreshing ? (byte) 1 : (byte) 0);
dest.writeInt(this.layoutType == null ? -1 : this.layoutType.ordinal());
dest.writeTypedList(data);
dest.writeByte(snackBarShowing ? (byte) 1 : (byte) 0);
dest.writeString(this.errorMessage);
}
protected TrackedSectionsViewState(Parcel in) {
this.isRefreshing = in.readByte() != 0;
int tmpLayoutType = in.readInt();
this.layoutType = tmpLayoutType == -1 ? LayoutType.LIST : LayoutType.values()[tmpLayoutType];
this.data = in.createTypedArrayList(Course.Section.CREATOR);
this.snackBarShowing = in.readByte() != 0;
this.errorMessage = in.readString();
}
public static final Creator<TrackedSectionsViewState> CREATOR = new Creator<TrackedSectionsViewState>() {
public TrackedSectionsViewState createFromParcel(Parcel source) {
return new TrackedSectionsViewState(source);
}
public TrackedSectionsViewState[] newArray(int size) {
return new TrackedSectionsViewState[size];
}
};
@Override
public String toString() {
return "TrackedSectionsViewState{" +
"isRefreshing=" + isRefreshing +
", layoutType=" + layoutType +
", data=" + data +
", snackBarShowing=" + snackBarShowing +
", errorMessage='" + errorMessage + '\'' +
'}';
}
}