package com.ushahidi.platform.mobile.app.presentation.view.ui.fragment; import com.addhen.android.raiburari.presentation.ui.fragment.BaseFragment; import com.ushahidi.platform.mobile.app.R; import com.ushahidi.platform.mobile.app.presentation.di.components.post.GetPostComponent; import com.ushahidi.platform.mobile.app.presentation.model.PostModel; import com.ushahidi.platform.mobile.app.presentation.presenter.post.DetailPostPresenter; import com.ushahidi.platform.mobile.app.presentation.util.TagUtility; import com.ushahidi.platform.mobile.app.presentation.util.Utility; import com.ushahidi.platform.mobile.app.presentation.view.post.DetailPostView; import android.content.Context; import android.os.Bundle; import android.support.v7.widget.AppCompatTextView; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.ProgressBar; import javax.inject.Inject; import butterknife.Bind; import butterknife.ButterKnife; /** * Get post details fragment * * @author Ushahidi Team <team@ushahidi.com> */ public class DetailPostFragment extends BaseFragment implements DetailPostView { private static final String ARGUMENT_KEY_POST_ID = "com.ushahidi.android.ARGUMENT_KEY_POST_ID"; private static DetailPostFragment mGetDetailsFragment; @Inject DetailPostPresenter mDetailPostPresenter; @Bind(R.id.loading_progress_bar) ProgressBar mProgressBar; @Bind(R.id.detail_post_date) AppCompatTextView mDateTextView; @Bind(R.id.detail_post_content) AppCompatTextView mContentTextView; @Bind(R.id.detail_post_status) AppCompatTextView mStatusTextView; @Bind(R.id.post_tags) LinearLayout mTagLinearLayout; @Bind(R.id.detail_post_tags_container) ViewGroup mTagContainer; private Long mPostId; public DetailPostFragment() { super(R.layout.fragment_detail_post, 0); } public static DetailPostFragment newInstance(Long postId) { if (mGetDetailsFragment == null) { mGetDetailsFragment = new DetailPostFragment(); } Bundle arguments = new Bundle(); arguments.putLong(ARGUMENT_KEY_POST_ID, postId); mGetDetailsFragment.setArguments(arguments); return mGetDetailsFragment; } public void onActivityCreated(Bundle bundle) { super.onActivityCreated(bundle); initialize(); } @Override public void onResume() { super.onResume(); mDetailPostPresenter.resume(); } @Override public void onPause() { super.onPause(); mDetailPostPresenter.pause(); } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); } @Override public void onDestroy() { super.onDestroy(); mDetailPostPresenter.destroy(); } private void initialize() { getComponent(GetPostComponent.class).inject(this); mDetailPostPresenter.setView(this); mPostId = getArguments().getLong(ARGUMENT_KEY_POST_ID); mDetailPostPresenter.getPostDetails(mPostId); } @Override public void showPostModel(PostModel postModel) { if (postModel != null) { mContentTextView.setText(postModel.getContent()); mDateTextView.setText(Utility.getRelativeTimeDisplay(postModel.getCreated())); mStatusTextView.setText(postModel.getStatus().name()); // Render post tags if (!Utility.isCollectionEmpty(postModel.getTags())) { TagUtility.renderTagBade(getAppContext(), mTagContainer, mTagLinearLayout, postModel.getTags()); } } } @Override public void showLoading() { mProgressBar.setVisibility(View.VISIBLE); } @Override public void hideLoading() { mProgressBar.setVisibility(View.GONE); } @Override public void showRetry() { } @Override public void hideRetry() { } @Override public void showError(String s) { showSnackbar(getView(), s); } @Override public Context getAppContext() { return getActivity().getApplicationContext(); } }