use of net.dean.jraw.ApiException in project Slide by ccrama.
the class MainActivity method doSubOnlyStuff.
public void doSubOnlyStuff(final Subreddit subreddit) {
findViewById(R.id.loader).setVisibility(View.GONE);
if (subreddit.getSubredditType() != null) {
canSubmit = !subreddit.getSubredditType().equals("RESTRICTED");
} else {
canSubmit = true;
}
if (subreddit.getSidebar() != null && !subreddit.getSidebar().isEmpty()) {
findViewById(R.id.sidebar_text).setVisibility(View.VISIBLE);
final String text = subreddit.getDataNode().get("description_html").asText().trim();
setViews(text, subreddit.getDisplayName(), sidebarBody, sidebarOverflow);
// get all subs that have Notifications enabled
ArrayList<String> rawSubs = Reddit.stringToArray(Reddit.appRestart.getString(CheckForMail.SUBS_TO_GET, ""));
HashMap<String, Integer> subThresholds = new HashMap<>();
for (String s : rawSubs) {
try {
String[] split = s.split(":");
subThresholds.put(split[0].toLowerCase(Locale.ENGLISH), Integer.valueOf(split[1]));
} catch (Exception ignored) {
// do nothing
}
}
// whether or not this subreddit was in the keySet
boolean isNotified = subThresholds.keySet().contains(subreddit.getDisplayName().toLowerCase(Locale.ENGLISH));
((AppCompatCheckBox) findViewById(R.id.notify_posts_state)).setChecked(isNotified);
} else {
findViewById(R.id.sidebar_text).setVisibility(View.GONE);
}
{
View collection = findViewById(R.id.collection);
if (Authentication.isLoggedIn) {
collection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AsyncTask<Void, Void, Void>() {
HashMap<String, MultiReddit> multis = new HashMap<String, MultiReddit>();
@Override
protected Void doInBackground(Void... params) {
if (UserSubscriptions.multireddits == null) {
UserSubscriptions.syncMultiReddits(MainActivity.this);
}
for (MultiReddit r : UserSubscriptions.multireddits) {
multis.put(r.getDisplayName(), r);
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
new MaterialDialog.Builder(MainActivity.this).title(getString(R.string.multi_add_to, subreddit.getDisplayName())).items(multis.keySet()).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, final int which, CharSequence text) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
final String multiName = multis.keySet().toArray(new String[multis.size()])[which];
List<String> subs = new ArrayList<String>();
for (MultiSubreddit sub : multis.get(multiName).getSubreddits()) {
subs.add(sub.getDisplayName());
}
subs.add(subreddit.getDisplayName());
new MultiRedditManager(Authentication.reddit).createOrUpdate(new MultiRedditUpdateRequest.Builder(Authentication.name, multiName).subreddits(subs).build());
UserSubscriptions.syncMultiReddits(MainActivity.this);
runOnUiThread(new Runnable() {
@Override
public void run() {
drawerLayout.closeDrawers();
Snackbar s = Snackbar.make(mToolbar, getString(R.string.multi_subreddit_added, multiName), Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
});
} catch (final NetworkException | ApiException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Snackbar.make(mToolbar, getString(R.string.multi_error), Snackbar.LENGTH_LONG).setAction(R.string.btn_ok, new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
}
});
}
});
e.printStackTrace();
}
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).show();
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
} else {
collection.setVisibility(View.GONE);
}
}
{
final AppCompatCheckBox notifyStateCheckBox = (AppCompatCheckBox) findViewById(R.id.notify_posts_state);
assert notifyStateCheckBox != null;
notifyStateCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
final String sub = subreddit.getDisplayName();
if (!sub.equalsIgnoreCase("all") && !sub.equalsIgnoreCase("frontpage") && !sub.equalsIgnoreCase("friends") && !sub.equalsIgnoreCase("mod") && !sub.contains("+") && !sub.contains(".") && !sub.contains("/m/")) {
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(getString(R.string.sub_post_notifs_title, sub)).setMessage(R.string.sub_post_notifs_msg).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new MaterialDialog.Builder(MainActivity.this).title(R.string.sub_post_notifs_threshold).items(new String[] { "1", "5", "10", "20", "40", "50" }).alwaysCallSingleChoiceCallback().itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {
@Override
public boolean onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
ArrayList<String> subs = Reddit.stringToArray(Reddit.appRestart.getString(CheckForMail.SUBS_TO_GET, ""));
subs.add(sub + ":" + text);
Reddit.appRestart.edit().putString(CheckForMail.SUBS_TO_GET, Reddit.arrayToString(subs)).commit();
return true;
}
}).cancelable(false).show();
}
}).setNegativeButton(R.string.btn_cancel, null).setNegativeButton(R.string.btn_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
notifyStateCheckBox.setChecked(false);
}
}).setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
notifyStateCheckBox.setChecked(false);
}
}).show();
} else {
notifyStateCheckBox.setChecked(false);
Toast.makeText(MainActivity.this, R.string.sub_post_notifs_err, Toast.LENGTH_SHORT).show();
}
} else {
Intent cancelIntent = new Intent(MainActivity.this, CancelSubNotifs.class);
cancelIntent.putExtra(CancelSubNotifs.EXTRA_SUB, subreddit.getDisplayName());
startActivity(cancelIntent);
}
}
});
}
{
final TextView subscribe = (TextView) findViewById(R.id.subscribe);
currentlySubbed = (!Authentication.isLoggedIn && usedArray.contains(subreddit.getDisplayName().toLowerCase(Locale.ENGLISH))) || subreddit.isUserSubscriber();
doSubscribeButtonText(currentlySubbed, subscribe);
assert subscribe != null;
subscribe.setOnClickListener(new View.OnClickListener() {
private void doSubscribe() {
if (Authentication.isLoggedIn) {
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(getString(R.string.subscribe_to, subreddit.getDisplayName())).setPositiveButton(R.string.reorder_add_subscribe, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new AsyncTask<Void, Void, Boolean>() {
@Override
public void onPostExecute(Boolean success) {
if (!success) {
// If subreddit was removed from account or not
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(R.string.force_change_subscription).setMessage(R.string.force_change_subscription_desc).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
true);
Snackbar s = Snackbar.make(mToolbar, getString(R.string.misc_subscribed), Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setCancelable(false).show();
} else {
changeSubscription(subreddit, true);
}
}
@Override
protected Boolean doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).subscribe(subreddit);
} catch (NetworkException e) {
// Either network crashed or trying to unsubscribe to a subreddit that the account isn't subscribed to
return false;
}
return true;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).setNeutralButton(R.string.btn_add_to_sublist, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
true);
Snackbar s = Snackbar.make(mToolbar, R.string.sub_added, Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_cancel, null).show();
} else {
changeSubscription(subreddit, true);
}
}
private void doUnsubscribe() {
if (Authentication.didOnline) {
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(getString(R.string.unsubscribe_from, subreddit.getDisplayName())).setPositiveButton(R.string.reorder_remove_unsubsribe, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new AsyncTask<Void, Void, Boolean>() {
@Override
public void onPostExecute(Boolean success) {
if (!success) {
// If subreddit was removed from account or not
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(R.string.force_change_subscription).setMessage(R.string.force_change_subscription_desc).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
false);
Snackbar s = Snackbar.make(mToolbar, getString(R.string.misc_unsubscribed), Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setCancelable(false).show();
} else {
changeSubscription(subreddit, false);
}
}
@Override
protected Boolean doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).unsubscribe(subreddit);
} catch (NetworkException e) {
// Either network crashed or trying to unsubscribe to a subreddit that the account isn't subscribed to
return false;
}
return true;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).setNeutralButton(R.string.just_unsub, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
false);
Snackbar s = Snackbar.make(mToolbar, R.string.misc_unsubscribed, Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_cancel, null).show();
} else {
changeSubscription(subreddit, false);
}
}
@Override
public void onClick(View v) {
if (!currentlySubbed) {
doSubscribe();
doSubscribeButtonText(currentlySubbed, subscribe);
} else {
doUnsubscribe();
doSubscribeButtonText(currentlySubbed, subscribe);
}
}
});
}
if (!subreddit.getPublicDescription().isEmpty()) {
findViewById(R.id.sub_title).setVisibility(View.VISIBLE);
setViews(subreddit.getDataNode().get("public_description_html").asText(), subreddit.getDisplayName().toLowerCase(Locale.ENGLISH), ((SpoilerRobotoTextView) findViewById(R.id.sub_title)), (CommentOverflow) findViewById(R.id.sub_title_overflow));
} else {
findViewById(R.id.sub_title).setVisibility(View.GONE);
}
((ImageView) findViewById(R.id.subimage)).setImageResource(0);
if (subreddit.getDataNode().has("icon_img") && !subreddit.getDataNode().get("icon_img").asText().isEmpty()) {
findViewById(R.id.subimage).setVisibility(View.VISIBLE);
((Reddit) getApplication()).getImageLoader().displayImage(subreddit.getDataNode().get("icon_img").asText(), (ImageView) findViewById(R.id.subimage));
} else {
findViewById(R.id.subimage).setVisibility(View.GONE);
}
((TextView) findViewById(R.id.subscribers)).setText(getString(R.string.subreddit_subscribers_string, subreddit.getLocalizedSubscriberCount()));
findViewById(R.id.subscribers).setVisibility(View.VISIBLE);
((TextView) findViewById(R.id.active_users)).setText(getString(R.string.subreddit_active_users_string_new, subreddit.getLocalizedAccountsActive()));
findViewById(R.id.active_users).setVisibility(View.VISIBLE);
}
use of net.dean.jraw.ApiException in project Slide by ccrama.
the class CreateMulti method onOptionsItemSelected.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.delete:
new AlertDialogWrapper.Builder(CreateMulti.this).setTitle(getString(R.string.delete_multireddit_title, title.getText().toString())).setMessage(R.string.cannot_be_undone).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new MaterialDialog.Builder(CreateMulti.this).title(R.string.deleting).progress(true, 100).content(R.string.misc_please_wait).cancelable(false).show();
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
new MultiRedditManager(Authentication.reddit).delete(old);
runOnUiThread(new Runnable() {
@Override
public void run() {
new UserSubscriptions.SyncMultireddits(CreateMulti.this).execute();
}
});
} catch (final Exception e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
new AlertDialogWrapper.Builder(CreateMulti.this).setTitle(R.string.err_title).setMessage(e instanceof ApiException ? getString(R.string.misc_err) + ": " + ((ApiException) e).getExplanation() + "\n" + getString(R.string.misc_retry) : getString(R.string.misc_err)).setNeutralButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
}).create().show();
}
});
e.printStackTrace();
}
return null;
}
}.execute();
}
}).setNegativeButton(R.string.btn_cancel, null).show();
return true;
case R.id.save:
if (title.getText().toString().isEmpty()) {
new AlertDialogWrapper.Builder(CreateMulti.this).setTitle(R.string.multireddit_title_empty).setMessage(R.string.multireddit_title_empty_msg).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
title.requestFocus();
}
}).show();
} else if (subs.isEmpty()) {
new AlertDialogWrapper.Builder(CreateMulti.this).setTitle(R.string.multireddit_no_subs).setMessage(R.string.multireddit_no_subs_msg).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
} else {
new SaveMulti().execute();
}
return true;
case android.R.id.home:
onBackPressed();
return true;
default:
return false;
}
}
use of net.dean.jraw.ApiException in project Slide by ccrama.
the class SubredditView method doSubOnlyStuff.
private void doSubOnlyStuff(final Subreddit subreddit) {
if (!isFinishing()) {
findViewById(R.id.loader).setVisibility(View.GONE);
if (subreddit.getDataNode().has("subreddit_type") && !subreddit.getDataNode().get("subreddit_type").isNull()) {
canSubmit = !subreddit.getDataNode().get("subreddit_type").asText().toUpperCase().equals("RESTRICTED");
}
if (subreddit.getSidebar() != null && !subreddit.getSidebar().isEmpty()) {
findViewById(R.id.sidebar_text).setVisibility(View.VISIBLE);
final String text = subreddit.getDataNode().get("description_html").asText().trim();
final SpoilerRobotoTextView body = (SpoilerRobotoTextView) findViewById(R.id.sidebar_text);
CommentOverflow overflow = (CommentOverflow) findViewById(R.id.commentOverflow);
setViews(text, subreddit.getDisplayName(), body, overflow);
// get all subs that have Notifications enabled
ArrayList<String> rawSubs = Reddit.stringToArray(Reddit.appRestart.getString(CheckForMail.SUBS_TO_GET, ""));
HashMap<String, Integer> subThresholds = new HashMap<>();
for (String s : rawSubs) {
try {
String[] split = s.split(":");
subThresholds.put(split[0].toLowerCase(Locale.ENGLISH), Integer.valueOf(split[1]));
} catch (Exception ignored) {
// do nothing
}
}
// whether or not this subreddit was in the keySet
boolean isNotified = subThresholds.keySet().contains(subreddit.getDisplayName().toLowerCase(Locale.ENGLISH));
((AppCompatCheckBox) findViewById(R.id.notify_posts_state)).setChecked(isNotified);
} else {
findViewById(R.id.sidebar_text).setVisibility(View.GONE);
}
View collection = findViewById(R.id.collection);
if (Authentication.isLoggedIn) {
collection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AsyncTask<Void, Void, Void>() {
HashMap<String, MultiReddit> multis = new HashMap<String, MultiReddit>();
@Override
protected Void doInBackground(Void... params) {
if (UserSubscriptions.multireddits == null) {
UserSubscriptions.syncMultiReddits(SubredditView.this);
}
for (MultiReddit r : UserSubscriptions.multireddits) {
multis.put(r.getDisplayName(), r);
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
new MaterialDialog.Builder(SubredditView.this).title("Add /r/" + subreddit.getDisplayName() + " to").items(multis.keySet()).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, final int which, CharSequence text) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
final String multiName = multis.keySet().toArray(new String[multis.size()])[which];
List<String> subs = new ArrayList<String>();
for (MultiSubreddit sub : multis.get(multiName).getSubreddits()) {
subs.add(sub.getDisplayName());
}
subs.add(subreddit.getDisplayName());
new MultiRedditManager(Authentication.reddit).createOrUpdate(new MultiRedditUpdateRequest.Builder(Authentication.name, multiName).subreddits(subs).build());
UserSubscriptions.syncMultiReddits(SubredditView.this);
runOnUiThread(new Runnable() {
@Override
public void run() {
drawerLayout.closeDrawers();
Snackbar s = Snackbar.make(mToolbar, getString(R.string.multi_subreddit_added, multiName), Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
});
} catch (final NetworkException | ApiException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Snackbar.make(mToolbar, getString(R.string.multi_error), Snackbar.LENGTH_LONG).setAction(R.string.btn_ok, new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
}
});
}
});
e.printStackTrace();
}
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).show();
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
} else {
collection.setVisibility(View.GONE);
}
{
final TextView subscribe = (TextView) findViewById(R.id.subscribe);
currentlySubbed = (!Authentication.isLoggedIn && UserSubscriptions.getSubscriptions(this).contains(subreddit.getDisplayName().toLowerCase(Locale.ENGLISH))) || (Authentication.isLoggedIn && subreddit.isUserSubscriber());
doSubscribeButtonText(currentlySubbed, subscribe);
assert subscribe != null;
subscribe.setOnClickListener(new View.OnClickListener() {
private void doSubscribe() {
if (Authentication.isLoggedIn) {
new AlertDialogWrapper.Builder(SubredditView.this).setTitle(getString(R.string.subscribe_to, subreddit.getDisplayName())).setPositiveButton(R.string.reorder_add_subscribe, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new AsyncTask<Void, Void, Boolean>() {
@Override
public void onPostExecute(Boolean success) {
if (!success) {
// If subreddit was removed from account or not
new AlertDialogWrapper.Builder(SubredditView.this).setTitle(R.string.force_change_subscription).setMessage(R.string.force_change_subscription_desc).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
true);
Snackbar s = Snackbar.make(mToolbar, getString(R.string.misc_subscribed), Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setCancelable(false).show();
} else {
changeSubscription(subreddit, true);
}
}
@Override
protected Boolean doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).subscribe(subreddit);
} catch (NetworkException e) {
// Either network crashed or trying to unsubscribe to a subreddit that the account isn't subscribed to
return false;
}
return true;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).setNegativeButton(R.string.btn_cancel, null).setNeutralButton(R.string.btn_add_to_sublist, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
true);
Snackbar s = Snackbar.make(mToolbar, R.string.sub_added, Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).show();
} else {
changeSubscription(subreddit, true);
}
}
@Override
public void onClick(View v) {
if (!currentlySubbed) {
doSubscribe();
doSubscribeButtonText(currentlySubbed, subscribe);
} else {
doUnsubscribe();
doSubscribeButtonText(currentlySubbed, subscribe);
}
}
private void doUnsubscribe() {
if (Authentication.didOnline) {
new AlertDialogWrapper.Builder(SubredditView.this).setTitle(getString(R.string.unsubscribe_from, subreddit.getDisplayName())).setPositiveButton(R.string.reorder_remove_unsubsribe, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new AsyncTask<Void, Void, Boolean>() {
@Override
public void onPostExecute(Boolean success) {
if (!success) {
// If subreddit was removed from account or not
new AlertDialogWrapper.Builder(SubredditView.this).setTitle(R.string.force_change_subscription).setMessage(R.string.force_change_subscription_desc).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
false);
Snackbar s = Snackbar.make(mToolbar, getString(R.string.misc_unsubscribed), Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setCancelable(false).show();
} else {
changeSubscription(subreddit, false);
}
}
@Override
protected Boolean doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).unsubscribe(subreddit);
} catch (NetworkException e) {
// Either network crashed or trying to unsubscribe to a subreddit that the account isn't subscribed to
return false;
}
return true;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).setNeutralButton(R.string.just_unsub, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
false);
Snackbar s = Snackbar.make(mToolbar, R.string.misc_unsubscribed, Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_cancel, null).show();
} else {
changeSubscription(subreddit, false);
}
}
});
}
{
final AppCompatCheckBox notifyStateCheckBox = (AppCompatCheckBox) findViewById(R.id.notify_posts_state);
assert notifyStateCheckBox != null;
notifyStateCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
final String sub = subreddit.getDisplayName();
if (!sub.equalsIgnoreCase("all") && !sub.equalsIgnoreCase("frontpage") && !sub.equalsIgnoreCase("friends") && !sub.equalsIgnoreCase("mod") && !sub.contains("+") && !sub.contains(".") && !sub.contains("/m/")) {
new AlertDialogWrapper.Builder(SubredditView.this).setTitle(getString(R.string.sub_post_notifs_title, sub)).setMessage(R.string.sub_post_notifs_msg).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new MaterialDialog.Builder(SubredditView.this).title(R.string.sub_post_notifs_threshold).items(new String[] { "1", "5", "10", "20", "40", "50" }).alwaysCallSingleChoiceCallback().itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {
@Override
public boolean onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
ArrayList<String> subs = Reddit.stringToArray(Reddit.appRestart.getString(CheckForMail.SUBS_TO_GET, ""));
subs.add(sub + ":" + text);
Reddit.appRestart.edit().putString(CheckForMail.SUBS_TO_GET, Reddit.arrayToString(subs)).commit();
return true;
}
}).cancelable(false).show();
}
}).setNegativeButton(R.string.btn_cancel, null).setNegativeButton(R.string.btn_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
notifyStateCheckBox.setChecked(false);
}
}).setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
notifyStateCheckBox.setChecked(false);
}
}).show();
} else {
notifyStateCheckBox.setChecked(false);
Toast.makeText(SubredditView.this, R.string.sub_post_notifs_err, Toast.LENGTH_SHORT).show();
}
} else {
Intent cancelIntent = new Intent(SubredditView.this, CancelSubNotifs.class);
cancelIntent.putExtra(CancelSubNotifs.EXTRA_SUB, subreddit.getDisplayName());
startActivity(cancelIntent);
}
}
});
}
if (!subreddit.getPublicDescription().isEmpty()) {
findViewById(R.id.sub_title).setVisibility(View.VISIBLE);
setViews(subreddit.getDataNode().get("public_description_html").asText(), subreddit.getDisplayName().toLowerCase(Locale.ENGLISH), ((SpoilerRobotoTextView) findViewById(R.id.sub_title)), (CommentOverflow) findViewById(R.id.sub_title_overflow));
} else {
findViewById(R.id.sub_title).setVisibility(View.GONE);
}
if (subreddit.getDataNode().has("icon_img") && !subreddit.getDataNode().get("icon_img").asText().isEmpty()) {
((Reddit) getApplication()).getImageLoader().displayImage(subreddit.getDataNode().get("icon_img").asText(), (ImageView) findViewById(R.id.subimage));
} else {
findViewById(R.id.subimage).setVisibility(View.GONE);
}
((TextView) findViewById(R.id.subscribers)).setText(getString(R.string.subreddit_subscribers_string, subreddit.getLocalizedSubscriberCount()));
findViewById(R.id.subscribers).setVisibility(View.VISIBLE);
((TextView) findViewById(R.id.active_users)).setText(getString(R.string.subreddit_active_users_string_new, subreddit.getLocalizedAccountsActive()));
findViewById(R.id.active_users).setVisibility(View.VISIBLE);
}
}
use of net.dean.jraw.ApiException in project Slide by ccrama.
the class CommentAdapterHelper method categorizeComment.
private static void categorizeComment(final Comment comment, final Context mContext) {
new AsyncTask<Void, Void, List<String>>() {
Dialog d;
@Override
public void onPreExecute() {
d = new MaterialDialog.Builder(mContext).progress(true, 100).content(R.string.misc_please_wait).title(R.string.profile_category_loading).show();
}
@Override
protected List<String> doInBackground(Void... params) {
try {
List<String> categories = new ArrayList<String>(new AccountManager(Authentication.reddit).getSavedCategories());
categories.add("New category");
return categories;
} catch (Exception e) {
e.printStackTrace();
return new ArrayList<String>() {
{
add("New category");
}
};
}
}
@Override
public void onPostExecute(final List<String> data) {
try {
new MaterialDialog.Builder(mContext).items(data).title(R.string.sidebar_select_flair).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, final View itemView, int which, CharSequence text) {
final String t = data.get(which);
if (which == data.size() - 1) {
new MaterialDialog.Builder(mContext).title(R.string.category_set_name).input(mContext.getString(R.string.category_set_name_hint), null, false, new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence input) {
}
}).positiveText(R.string.btn_set).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
final String flair = dialog.getInputEditText().getText().toString();
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).save(comment, flair);
return true;
} catch (ApiException e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean done) {
Snackbar s;
if (done) {
if (itemView != null) {
s = Snackbar.make(itemView, R.string.submission_info_saved, Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
} else {
if (itemView != null) {
s = Snackbar.make(itemView, R.string.category_set_error, Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}
}.execute();
}
}).negativeText(R.string.btn_cancel).show();
} else {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).save(comment, t);
return true;
} catch (ApiException e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean done) {
Snackbar s;
if (done) {
if (itemView != null) {
s = Snackbar.make(itemView, R.string.submission_info_saved, Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
} else {
if (itemView != null) {
s = Snackbar.make(itemView, R.string.category_set_error, Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}
}.execute();
}
}
}).show();
if (d != null) {
d.dismiss();
}
} catch (Exception ignored) {
}
}
}.execute();
}
use of net.dean.jraw.ApiException in project Slide by ccrama.
the class PopulateShadowboxInfo method showBottomSheet.
public static void showBottomSheet(final Activity mContext, final Submission submission, final View rootView) {
int[] attrs = new int[] { R.attr.tintColor };
TypedArray ta = mContext.obtainStyledAttributes(attrs);
int color = ta.getColor(0, Color.WHITE);
Drawable profile = mContext.getResources().getDrawable(R.drawable.profile);
final Drawable sub = mContext.getResources().getDrawable(R.drawable.sub);
final Drawable report = mContext.getResources().getDrawable(R.drawable.report);
Drawable copy = mContext.getResources().getDrawable(R.drawable.ic_content_copy);
Drawable open = mContext.getResources().getDrawable(R.drawable.openexternal);
Drawable link = mContext.getResources().getDrawable(R.drawable.link);
Drawable reddit = mContext.getResources().getDrawable(R.drawable.commentchange);
profile.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
sub.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
report.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
copy.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
open.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
link.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
reddit.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
ta.recycle();
BottomSheet.Builder b = new BottomSheet.Builder(mContext).title(Html.fromHtml(submission.getTitle()));
if (Authentication.didOnline) {
b.sheet(1, profile, "/u/" + submission.getAuthor()).sheet(2, sub, "/r/" + submission.getSubredditName());
if (Authentication.isLoggedIn) {
b.sheet(12, report, mContext.getString(R.string.btn_report));
}
}
b.sheet(7, open, mContext.getString(R.string.submission_link_extern)).sheet(4, link, mContext.getString(R.string.submission_share_permalink)).sheet(8, reddit, mContext.getString(R.string.submission_share_reddit_url)).listener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which) {
case 1:
{
Intent i = new Intent(mContext, Profile.class);
i.putExtra(Profile.EXTRA_PROFILE, submission.getAuthor());
mContext.startActivity(i);
}
break;
case 2:
{
Intent i = new Intent(mContext, SubredditView.class);
i.putExtra(SubredditView.EXTRA_SUBREDDIT, submission.getSubredditName());
mContext.startActivityForResult(i, 14);
}
break;
case 7:
LinkUtil.openExternally(submission.getUrl(), mContext);
break;
case 4:
Reddit.defaultShareText(submission.getTitle(), submission.getUrl(), mContext);
break;
case 12:
reportReason = "";
new MaterialDialog.Builder(mContext).input(mContext.getString(R.string.input_reason_for_report), null, true, new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence input) {
reportReason = input.toString();
}
}).alwaysCallInputCallback().title(R.string.report_post).inputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES).positiveText(R.string.btn_report).negativeText(R.string.btn_cancel).onNegative(null).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).report(submission, reportReason);
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Snackbar s = Snackbar.make(rootView, R.string.msg_report_sent, Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).show();
break;
case 8:
if (SettingValues.shareLongLink) {
Reddit.defaultShareText(submission.getTitle(), "htts://reddit.com" + submission.getPermalink(), mContext);
} else {
Reddit.defaultShareText(submission.getTitle(), "https://redd.it/" + submission.getId(), mContext);
}
break;
case 6:
{
ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("Link", submission.getUrl());
clipboard.setPrimaryClip(clip);
Toast.makeText(mContext, R.string.submission_link_copied, Toast.LENGTH_SHORT).show();
}
break;
}
}
});
b.show();
}
Aggregations