diff options
6 files changed, 40 insertions, 31 deletions
diff --git a/app/src/main/java/app/fedilab/android/client/API.java b/app/src/main/java/app/fedilab/android/client/API.java index af6e8570d..9d48bac3a 100644 --- a/app/src/main/java/app/fedilab/android/client/API.java +++ b/app/src/main/java/app/fedilab/android/client/API.java @@ -853,7 +853,7 @@ public class API { } status.setApplication(application); - status.setAccount(parseAccountResponse(context, resobj.getJSONObject("account"), true)); + status.setAccount(parseAccountResponse(context, resobj.getJSONObject("account"))); status.setContent(context, resobj.get("content").toString()); if (!resobj.isNull("favourites_count")) { status.setFavourites_count(resobj.getInt("favourites_count")); @@ -1236,7 +1236,7 @@ public class API { } else if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) { if (!resobj.isNull("account")) { - Account account = parseAccountResponse(context, resobj.getJSONObject("account"), true); + Account account = parseAccountResponse(context, resobj.getJSONObject("account")); AccountAdmin accountAdmin = new AccountAdmin(); accountAdmin.setId(account.getId()); accountAdmin.setUsername(account.getAcct()); @@ -1245,7 +1245,7 @@ public class API { } if (!resobj.isNull("actor")) { - Account account = parseAccountResponse(context, resobj.getJSONObject("actor"), true); + Account account = parseAccountResponse(context, resobj.getJSONObject("actor")); AccountAdmin accountAdmin = new AccountAdmin(); accountAdmin.setId(account.getId()); accountAdmin.setUsername(account.getAcct()); @@ -1308,7 +1308,7 @@ public class API { } if (!resobj.isNull("account")) { - accountAdmin.setAccount(parseAccountResponse(context, resobj.getJSONObject("account"), true)); + accountAdmin.setAccount(parseAccountResponse(context, resobj.getJSONObject("account"))); } else { Account account = new Account(); account.setId(accountAdmin.getId()); @@ -1359,7 +1359,7 @@ public class API { * @return Account */ @SuppressWarnings("InfiniteRecursion") - private static Account parseAccountResponse(Context context, JSONObject resobj, boolean fetchEmoji) { + private static Account parseAccountResponse(Context context, JSONObject resobj) { Account account = new Account(); try { @@ -1399,7 +1399,7 @@ public class API { account.setBot(false); } try { - account.setMoved_to_account(parseAccountResponse(context, resobj.getJSONObject("moved"), true)); + account.setMoved_to_account(parseAccountResponse(context, resobj.getJSONObject("moved"))); } catch (Exception ignored) { account.setMoved_to_account(null); } @@ -1419,8 +1419,8 @@ public class API { account.setAdmin(false); } } - } catch (Exception ignored) { - ignored.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); } try { @@ -1439,8 +1439,8 @@ public class API { } account.setFields(fieldsMap); account.setFieldsVerified(fieldsMapVerified); - } catch (Exception ignored) { - ignored.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); } @@ -1456,6 +1456,7 @@ public class API { account.setEmojis(emojiList); } catch (Exception e) { account.setEmojis(new ArrayList<>()); + e.printStackTrace(); } if (resobj.has("source")) { JSONObject source = resobj.getJSONObject("source"); @@ -1480,8 +1481,10 @@ public class API { } catch (JSONException | ParseException e) { e.printStackTrace(); } - if (fetchEmoji) { + try { Account.makeAccountNameEmoji(context, account); + } catch (Exception e) { + e.printStackTrace(); } return account; } @@ -1610,8 +1613,7 @@ public class API { notification.setId(resobj.get("id").toString()); notification.setType(resobj.get("type").toString()); notification.setCreated_at(Helper.mstStringToDate(resobj.get("created_at").toString())); - notification.setAccount(parseAccountResponse(context, resobj.getJSONObject("account"), false)); - + notification.setAccount(parseAccountResponse(context, resobj.getJSONObject("account"))); try { notification.setStatus(parseStatuses(context, resobj.getJSONObject("status"))); } catch (Exception ignored) { @@ -2456,7 +2458,7 @@ public class API { return null; } String response = new HttpsConnection(context, this.instance).get(getAbsoluteUrl("/accounts/verify_credentials"), 10, null, prefKeyOauthTokenT); - account = parseAccountResponse(context, new JSONObject(response), true); + account = parseAccountResponse(context, new JSONObject(response)); if (social != null) { account.setSocial(social.toUpperCase()); } @@ -2488,7 +2490,7 @@ public class API { String response; try { response = new HttpsConnection(context, this.instance).get(getAbsoluteUrl("/accounts/verify_credentials"), 10, null, targetedAccount.getToken()); - account = parseAccountResponse(context, new JSONObject(response), true); + account = parseAccountResponse(context, new JSONObject(response)); if (social != null) { account.setSocial(social.toUpperCase()); } @@ -2584,7 +2586,7 @@ public class API { account = new Account(); try { String response = new HttpsConnection(context, this.instance).get(getAbsoluteUrl(String.format("/accounts/%s", accountId)), 10, null, prefKeyOauthTokenT); - account = parseAccountResponse(context, new JSONObject(response), true); + account = parseAccountResponse(context, new JSONObject(response)); } catch (HttpsConnection.HttpsConnectionException e) { setError(e.getStatusCode(), e); e.printStackTrace(); @@ -5742,7 +5744,7 @@ public class API { } } if (resobj.has("contact_account")) { - instance.setContactAccount(parseAccountResponse(context, resobj.getJSONObject("contact_account"), true)); + instance.setContactAccount(parseAccountResponse(context, resobj.getJSONObject("contact_account"))); } } catch (JSONException e) { e.printStackTrace(); @@ -5974,7 +5976,7 @@ public class API { int i = 0; while (i < jsonArray.length()) { JSONObject resobj = jsonArray.getJSONObject(i); - Account account = parseAccountResponse(context, resobj, true); + Account account = parseAccountResponse(context, resobj); accounts.add(account); i++; } diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Account.java b/app/src/main/java/app/fedilab/android/client/Entities/Account.java index 93c3d3cf5..06b8eb6e0 100644 --- a/app/src/main/java/app/fedilab/android/client/Entities/Account.java +++ b/app/src/main/java/app/fedilab/android/client/Entities/Account.java @@ -200,7 +200,7 @@ public class Account implements Parcelable { } public static void makeAccountNameEmoji(final Context context, Account account) { - if (((Activity) context).isFinishing() || account.getDisplay_name() == null) + if ((context instanceof Activity && ((Activity) context).isFinishing()) || account.getDisplay_name() == null) return; account.setDisplayNameSpan(new SpannableString(account.getDisplay_name())); @@ -232,6 +232,7 @@ public class Account implements Parcelable { displayNameSpan.setSpan( imageSpan, startPosition, endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + return; } } } @@ -244,8 +245,8 @@ public class Account implements Parcelable { }); - } catch (Exception ignored) { - ignored.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); } } @@ -740,7 +741,7 @@ public class Account implements Parcelable { } public void makeEmojisAccountProfile(final Context context, final OnRetrieveEmojiAccountInterface listener, Account account) { - if (((Activity) context).isFinishing()) + if (context instanceof Activity && ((Activity) context).isFinishing()) return; if (fields == null) fields = new LinkedHashMap<>(); diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Status.java b/app/src/main/java/app/fedilab/android/client/Entities/Status.java index 223599eb1..cee832d47 100644 --- a/app/src/main/java/app/fedilab/android/client/Entities/Status.java +++ b/app/src/main/java/app/fedilab/android/client/Entities/Status.java @@ -807,7 +807,7 @@ public class Status implements Parcelable { } final int link_color = l_c; - if (((Activity) context).isFinishing() || status == null) + if ((context instanceof Activity && ((Activity) context).isFinishing()) || status == null) return; if ((status.getReblog() != null && status.getReblog().getContent() == null) || (status.getReblog() == null && status.getContent() == null)) return; @@ -851,7 +851,7 @@ public class Status implements Parcelable { private static void makeEmojis(final Context context, Status status) { - if (((Activity) context).isFinishing()) + if (context instanceof Activity && ((Activity) context).isFinishing()) return; if (status.getReblog() != null && status.getReblog().getEmojis() == null) return; @@ -929,7 +929,7 @@ public class Status implements Parcelable { } public static void makeEmojiPoll(final Context context, Poll poll) { - if (((Activity) context).isFinishing() || poll == null || poll.getOptionsList() == null) + if ((context instanceof Activity && ((Activity) context).isFinishing()) || poll == null || poll.getOptionsList() == null) return; final List<Emojis> emojis = poll.getEmojis(); SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); @@ -990,7 +990,7 @@ public class Status implements Parcelable { private static void makeImage(final Context context, Status status) { - if (((Activity) context).isFinishing()) + if (context instanceof Activity && ((Activity) context).isFinishing()) return; if (status.getAccount() == null) return; @@ -1053,7 +1053,7 @@ public class Status implements Parcelable { public static void makeEmojisTranslation(final Context context, final OnRetrieveEmojiInterface listener, Status status) { - if (((Activity) context).isFinishing()) + if (context instanceof Activity && ((Activity) context).isFinishing()) return; SpannableString spannableStringTranslated = null; if (status.getContentTranslated() != null) { diff --git a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java index b4f253b16..bf028988e 100644 --- a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java @@ -1199,7 +1199,9 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On @Override public void onRetrieveEmoji(Status status, boolean fromTranslation) { - notifyNotificationWithActionChanged(status); + if (status != null) { + notifyNotificationWithActionChanged(status); + } } @Override @@ -1237,8 +1239,10 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On @Override public void onPoll(Status status, Poll poll) { - status.setPoll(poll); - notifyNotificationWithActionChanged(status); + if (status != null) { + status.setPoll(poll); + notifyNotificationWithActionChanged(status); + } } @Override diff --git a/app/src/main/java/app/fedilab/android/fragments/DisplayNotificationsFragment.java b/app/src/main/java/app/fedilab/android/fragments/DisplayNotificationsFragment.java index b7c5f7181..e27cbd5c6 100644 --- a/app/src/main/java/app/fedilab/android/fragments/DisplayNotificationsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/DisplayNotificationsFragment.java @@ -160,8 +160,9 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve Bundle b = intent.getExtras(); assert b != null; Status status = b.getParcelable("status"); - if (notificationsListAdapter != null && status != null) + if (notificationsListAdapter != null && status != null) { notificationsListAdapter.notifyNotificationWithActionChanged(status); + } } }; LocalBroadcastManager.getInstance(context).registerReceiver(receive_action, new IntentFilter(Helper.RECEIVE_ACTION)); diff --git a/app/src/main/java/app/fedilab/android/helper/MastalabAutoCompleteTextView.java b/app/src/main/java/app/fedilab/android/helper/MastalabAutoCompleteTextView.java index bae1964e5..a9b12a2f9 100644 --- a/app/src/main/java/app/fedilab/android/helper/MastalabAutoCompleteTextView.java +++ b/app/src/main/java/app/fedilab/android/helper/MastalabAutoCompleteTextView.java @@ -70,6 +70,7 @@ public class MastalabAutoCompleteTextView extends androidx.appcompat.widget.AppC super(context); initView(); } + public MastalabAutoCompleteTextView(Context context, AttributeSet attrs) { super(context, attrs); |