use of com.ferg.awfulapp.util.AwfulError in project Awful.apk by Awful.
the class FeatureRequest method handleResponse.
@Override
protected Void handleResponse(Document doc) throws AwfulError {
Element features = doc.getElementsByClass("features").first();
boolean premium = false;
boolean archives = false;
boolean noads = false;
if (features != null) {
Elements feature_dts = features.getElementsByTag("dt");
if (feature_dts.size() == 3) {
premium = feature_dts.get(0).hasClass("enabled");
archives = feature_dts.get(1).hasClass("enabled");
noads = feature_dts.get(2).hasClass("enabled");
try {
getPreferences().setPreference(Keys.HAS_PLATINUM, premium);
} catch (Exception e) {
e.printStackTrace();
}
try {
getPreferences().setPreference(Keys.HAS_ARCHIVES, archives);
} catch (Exception e) {
e.printStackTrace();
}
try {
getPreferences().setPreference(Keys.HAS_NO_ADS, noads);
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
throw new AwfulError("Feature page did not load");
}
Log.i("FeatureRequest", "Updated account features P:" + premium + " A:" + archives + " NA:" + noads);
return null;
}
use of com.ferg.awfulapp.util.AwfulError in project Awful.apk by Awful.
the class ThreadListRequest method handleResponse.
@Override
protected Void handleResponse(Document doc) throws AwfulError {
try {
if (forumId == Constants.USERCP_ID) {
AwfulForum.parseUCPThreads(doc, page, getContentResolver());
PmManager.parseUcpPage(doc);
} else {
AwfulForum.parseThreads(doc, forumId, page, getContentResolver());
AnnouncementsManager.getInstance().parseForumPage(doc);
}
} catch (Exception e) {
e.printStackTrace();
throw new AwfulError();
}
return null;
}
use of com.ferg.awfulapp.util.AwfulError in project Awful.apk by Awful.
the class AwfulMessage method processMessage.
public static ContentValues processMessage(Document data, int id) throws AwfulError {
ContentValues message = new ContentValues();
message.put(ID, id);
Elements auth = data.getElementsByClass("author");
if (auth.size() > 0) {
message.put(AUTHOR, auth.first().text());
} else {
throw new AwfulError("Failed parse: author.");
}
Elements content = data.getElementsByClass("postbody");
if (content.size() > 0) {
message.put(CONTENT, content.first().html());
} else {
throw new AwfulError("Failed parse: content.");
}
Elements date = data.getElementsByClass("postdate");
if (date.size() > 0) {
message.put(DATE, date.first().text().replaceAll("\"", "").trim());
} else {
throw new AwfulError("Failed parse: date.");
}
return message;
}
use of com.ferg.awfulapp.util.AwfulError 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();
}
use of com.ferg.awfulapp.util.AwfulError 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;
}
Aggregations