package com.alorma.github.ui.fragment.content; import android.os.Bundle; import android.support.annotation.Nullable; import com.alorma.github.R; import com.alorma.github.sdk.bean.info.FileInfo; import com.alorma.github.ui.fragment.base.BaseFragment; import rx.Observable; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; public abstract class BaseFileFragment extends BaseFragment { public static final String FILE_INFO = "FILE_INFO"; protected FileInfo fileInfo; @Override protected int getLightTheme() { return R.style.AppTheme_Repository; } @Override protected int getDarkTheme() { return R.style.AppTheme_Dark_Repository; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public void onStart() { super.onStart(); if (getArguments() != null) { fileInfo = getArguments().getParcelable(FILE_INFO); getContent(fileInfo); } } private void getContent(FileInfo fileInfo) { getContentObservable(fileInfo).doOnNext(s -> { fileInfo.content = s; getActivity().invalidateOptionsMenu(); }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(this::onContentLoaded, this::onError); } private void onError(Throwable throwable) { throwable.printStackTrace(); } protected abstract Observable<String> getContentObservable(FileInfo fileInfo); protected abstract void onContentLoaded(String s); }