Search in sources :

Example 1 with RedirectTask

use of com.ferg.awfulapp.task.RedirectTask in project Awful.apk by Awful.

the class ThreadDisplayFragment method startPostRedirect.

/**
 * Reload with a new URL
 * @param postUrl	The URL of the post we should land on
 */
private void startPostRedirect(final String postUrl) {
    final AwfulActivity activity = getAwfulActivity();
    if (activity == null) {
        return;
    }
    if (redirect != null) {
        redirect.cancel(false);
    }
    setProgress(50);
    redirect = new RedirectTask(postUrl) {

        @Override
        protected void onPostExecute(String url) {
            if (isCancelled()) {
                return;
            } else if (url == null) {
                getAlertView().show(new AwfulError());
                return;
            }
            AwfulURL result = AwfulURL.parse(url);
            if (postUrl.contains(Constants.VALUE_LASTPOST)) {
                // This is a workaround for how the forums handle the perPage value with goto=lastpost.
                // The redirected url is lacking the perpage=XX value.
                // We just override the assumed (40) with the number we requested when starting the redirect.
                // I gotta ask chooch to fix this at some point.
                result.setPerPage(getPrefs().postPerPage);
            }
            if (result.getType() == TYPE.THREAD) {
                int threadId = (int) result.getId();
                int threadPage = (int) result.getPage(getPrefs().postPerPage);
                String postJump = result.getFragment().replaceAll("\\D", "");
                if (bypassBackStack) {
                    openThread(threadId, threadPage, postJump, true);
                } else {
                    pushThread(threadId, threadPage, postJump);
                }
            } else if (result.getType() == TYPE.INDEX) {
                activity.showForumIndex();
            }
            redirect = null;
            bypassBackStack = false;
            setProgress(100);
        }
    }.execute();
}
Also used : AwfulError(com.ferg.awfulapp.util.AwfulError) RedirectTask(com.ferg.awfulapp.task.RedirectTask) AwfulURL(com.ferg.awfulapp.thread.AwfulURL)

Example 2 with RedirectTask

use of com.ferg.awfulapp.task.RedirectTask in project Awful.apk by Awful.

the class SearchFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater aInflater, ViewGroup aContainer, Bundle aSavedState) {
    super.onCreateView(aInflater, aContainer, aSavedState);
    Timber.v("onCreateView");
    View result = inflateView(R.layout.search, aContainer, aInflater);
    mSearchQuery = result.findViewById(R.id.search_query);
    mSRL = result.findViewById(R.id.search_srl);
    mSRL.setOnRefreshListener(this);
    mSRL.setColorSchemeResources(ColorProvider.getSRLProgressColors(null));
    mSRL.setProgressBackgroundColor(ColorProvider.getSRLBackgroundColor(null));
    mSRL.setEnabled(false);
    mSearchResultList = result.findViewById(R.id.search_results);
    mSearchResultList.setAdapter(new RecyclerView.Adapter<SearchResultHolder>() {

        @Override
        public SearchResultHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_result_item, parent, false);
            return new SearchResultHolder(view);
        }

        @Override
        public void onBindViewHolder(SearchResultHolder holder, final int position) {
            AwfulSearch search = mSearchResults.get(position);
            holder.threadName.setText(search.getThreadTitle());
            holder.hitInfo.setText(Html.fromHtml("<b>" + search.getUsername() + "</b> in <b>" + search.getForumTitle() + "</b>"));
            holder.blurb.setText(Html.fromHtml(search.getBlurb()));
            holder.threadName.setText(search.getThreadTitle());
            holder.timestamp.setText(search.getPostDate());
            final String threadlink = search.getThreadLink();
            final int forumId = search.getForumId();
            final ProgressDialog redirectDialog = new ProgressDialog(getContext());
            final RedirectTask redirect = new RedirectTask(Constants.BASE_URL + threadlink) {

                @Override
                protected void onPostExecute(String url) {
                    if (!isCancelled()) {
                        if (url != null) {
                            AwfulURL result = AwfulURL.parse(url);
                            Activity activity = getActivity();
                            Intent openThread = new Intent().setClass(activity, ForumsIndexActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP).putExtra(Constants.THREAD_ID, (int) result.getId()).putExtra(Constants.THREAD_PAGE, (int) result.getPage()).putExtra(Constants.FORUM_ID, forumId).putExtra(Constants.FORUM_PAGE, 1).putExtra(Constants.THREAD_FRAGMENT, result.getFragment().substring(4));
                            redirectDialog.dismiss();
                            activity.finish();
                            startActivity(openThread);
                        } else {
                            getAlertView().show(new AwfulError());
                        }
                    }
                }
            };
            holder.self.setOnClickListener(v -> {
                if (getActivity() != null) {
                    if (redirect.getStatus() == AsyncTask.Status.PENDING) {
                        redirect.execute();
                        redirectDialog.setMessage("Just a second");
                        redirectDialog.setTitle("Loading");
                        redirectDialog.setIndeterminate(true);
                        redirectDialog.setCancelable(false);
                        redirectDialog.show();
                    }
                }
            });
        }

        @Override
        public int getItemCount() {
            if (mSearchResults != null) {
                return mSearchResults.size();
            }
            return 0;
        }
    });
    mSearchResultList.setLayoutManager(new LinearLayoutManager(getContext()));
    return result;
}
Also used : Constants(com.ferg.awfulapp.constants.Constants) SwipyRefreshLayoutDirection(com.orangegangsters.github.swipyrefreshlayout.library.SwipyRefreshLayoutDirection) Bundle(android.os.Bundle) AwfulRequest(com.ferg.awfulapp.task.AwfulRequest) RedirectTask(com.ferg.awfulapp.task.RedirectTask) AwfulURL(com.ferg.awfulapp.thread.AwfulURL) Intent(android.content.Intent) ArrayUtils(org.apache.commons.lang3.ArrayUtils) DialogFragment(android.support.v4.app.DialogFragment) MenuItem(android.view.MenuItem) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) NetworkUtils(com.ferg.awfulapp.network.NetworkUtils) MenuInflater(android.view.MenuInflater) Menu(android.view.Menu) View(android.view.View) ColorProvider(com.ferg.awfulapp.provider.ColorProvider) AsyncTask(android.os.AsyncTask) LayoutInflater(android.view.LayoutInflater) AwfulPreferences(com.ferg.awfulapp.preferences.AwfulPreferences) ProgressDialog(android.app.ProgressDialog) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) VolleyError(com.android.volley.VolleyError) ViewGroup(android.view.ViewGroup) Timber(timber.log.Timber) AwfulError(com.ferg.awfulapp.util.AwfulError) RecyclerView(android.support.v7.widget.RecyclerView) SwipyRefreshLayout(com.ferg.awfulapp.widget.SwipyRefreshLayout) TextView(android.widget.TextView) SearchRequest(com.ferg.awfulapp.task.SearchRequest) SearchResultRequest(com.ferg.awfulapp.task.SearchResultRequest) Html(android.text.Html) AwfulSearch(com.ferg.awfulapp.thread.AwfulSearch) Snackbar(android.support.design.widget.Snackbar) AwfulSearchResult(com.ferg.awfulapp.thread.AwfulSearchResult) Activity(android.app.Activity) EditText(android.widget.EditText) ViewGroup(android.view.ViewGroup) Activity(android.app.Activity) Intent(android.content.Intent) AwfulURL(com.ferg.awfulapp.thread.AwfulURL) AwfulSearch(com.ferg.awfulapp.thread.AwfulSearch) ProgressDialog(android.app.ProgressDialog) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) AwfulError(com.ferg.awfulapp.util.AwfulError) RedirectTask(com.ferg.awfulapp.task.RedirectTask) RecyclerView(android.support.v7.widget.RecyclerView)

Aggregations

RedirectTask (com.ferg.awfulapp.task.RedirectTask)2 AwfulURL (com.ferg.awfulapp.thread.AwfulURL)2 AwfulError (com.ferg.awfulapp.util.AwfulError)2 Activity (android.app.Activity)1 ProgressDialog (android.app.ProgressDialog)1 Intent (android.content.Intent)1 AsyncTask (android.os.AsyncTask)1 Bundle (android.os.Bundle)1 Snackbar (android.support.design.widget.Snackbar)1 DialogFragment (android.support.v4.app.DialogFragment)1 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)1 RecyclerView (android.support.v7.widget.RecyclerView)1 Html (android.text.Html)1 LayoutInflater (android.view.LayoutInflater)1 Menu (android.view.Menu)1 MenuInflater (android.view.MenuInflater)1 MenuItem (android.view.MenuItem)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 EditText (android.widget.EditText)1