package cl.monsoon.s1next.view.dialog; import android.os.Bundle; import cl.monsoon.s1next.R; import cl.monsoon.s1next.data.api.model.Result; import cl.monsoon.s1next.data.api.model.wrapper.ResultWrapper; import rx.Observable; /** * A dialog requests to add thread to user's favourites. */ public final class ThreadFavouritesAddRequestDialogFragment extends ProgressDialogFragment<ResultWrapper> { public static final String TAG = ThreadFavouritesAddRequestDialogFragment.class.getName(); private static final String ARG_THREAD_ID = "thread_id"; private static final String ARG_REMARK = "remark"; private static final String STATUS_ADD_TO_FAVOURITES_SUCCESS = "favorite_do_success"; private static final String STATUS_ADD_TO_FAVOURITES_REPEAT = "favorite_repeat"; public static ThreadFavouritesAddRequestDialogFragment newInstance(String threadId, String remark) { ThreadFavouritesAddRequestDialogFragment fragment = new ThreadFavouritesAddRequestDialogFragment(); Bundle bundle = new Bundle(); bundle.putString(ARG_THREAD_ID, threadId); bundle.putString(ARG_REMARK, remark); fragment.setArguments(bundle); return fragment; } @Override protected Observable<ResultWrapper> getSourceObservable() { return flatMappedWithAuthenticityToken(s -> mS1Service.addThreadFavorite(s, getArguments().getString(ARG_THREAD_ID), getArguments().getString(ARG_REMARK))); } @Override protected void onNext(ResultWrapper data) { Result result = data.getResult(); if (result.getStatus().equals(STATUS_ADD_TO_FAVOURITES_SUCCESS) || result.getStatus().equals(STATUS_ADD_TO_FAVOURITES_REPEAT)) { ((ThreadFavouritesAddDialogFragment) getFragmentManager().findFragmentByTag( ThreadFavouritesAddDialogFragment.TAG)).dismissAllowingStateLoss(); } showShortText(result.getMessage()); } @Override protected CharSequence getProgressMessage() { return getText(R.string.dialog_progress_message_favourites_add); } }