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 41ec9b207..44ed968b6 100644 --- a/app/src/main/java/app/fedilab/android/client/API.java +++ b/app/src/main/java/app/fedilab/android/client/API.java @@ -1669,7 +1669,7 @@ public class API { notification.setAccount(parseAccountResponse(resobj.getJSONObject("account"))); if (resobj.has("status")) { try { - notification.setStatus(parseStatuses(context, resobj.getJSONObject("status"))); + notification.setStatus(parseStatuses(context, resobj.getJSONObject("status"), false)); } catch (Exception ignored) { } } diff --git a/app/src/main/java/app/fedilab/android/client/GNUAPI.java b/app/src/main/java/app/fedilab/android/client/GNUAPI.java index df987090a..981f7ddd5 100644 --- a/app/src/main/java/app/fedilab/android/client/GNUAPI.java +++ b/app/src/main/java/app/fedilab/android/client/GNUAPI.java @@ -212,14 +212,24 @@ public class GNUAPI { return statuses; } + /** * Parse json response for unique status * * @param resobj JSONObject * @return Status */ - @SuppressWarnings("InfiniteRecursion") private static Status parseStatuses(Context context, JSONObject resobj) { + return parseStatuses(context, resobj, true); + } + + /** + * Parse json response for unique status + * + * @param resobj JSONObject + * @return Status + */ + private static Status parseStatuses(Context context, JSONObject resobj, boolean recursive) { Status status = new Status(); try { status.setId(resobj.get("id").toString()); @@ -337,7 +347,9 @@ public class GNUAPI { status.setMuted(false); status.setPinned(false); try { - status.setReblog(parseStatuses(context, resobj.getJSONObject("retweeted_status"))); + if (recursive) { + status.setReblog(parseStatuses(context, resobj.getJSONObject("retweeted_status"), false)); + } } catch (Exception ignored) { status.setReblog(null); }